… | |
… | |
81 | /* need to resize so there is enough space for errors */ |
81 | /* need to resize so there is enough space for errors */ |
82 | if (kqueue_changecnt > kqueue_eventmax) |
82 | if (kqueue_changecnt > kqueue_eventmax) |
83 | { |
83 | { |
84 | ev_free (kqueue_events); |
84 | ev_free (kqueue_events); |
85 | kqueue_eventmax = array_roundsize (struct kevent, kqueue_changecnt); |
85 | kqueue_eventmax = array_roundsize (struct kevent, kqueue_changecnt); |
86 | kqueue_events = ev_malloc (sizeof (struct kevent) * kqueue_eventmax); |
86 | kqueue_events = (struct kevent *)ev_malloc (sizeof (struct kevent) * kqueue_eventmax); |
87 | } |
87 | } |
88 | |
88 | |
89 | ts.tv_sec = (time_t)timeout; |
89 | ts.tv_sec = (time_t)timeout; |
90 | ts.tv_nsec = (long)(timeout - (ev_tstamp)ts.tv_sec) * 1e9; |
90 | ts.tv_nsec = (long)(timeout - (ev_tstamp)ts.tv_sec) * 1e9; |
91 | res = kevent (kqueue_fd, kqueue_changes, kqueue_changecnt, kqueue_events, kqueue_eventmax, &ts); |
91 | res = kevent (kqueue_fd, kqueue_changes, kqueue_changecnt, kqueue_events, kqueue_eventmax, &ts); |
… | |
… | |
145 | |
145 | |
146 | if (expect_false (res == kqueue_eventmax)) |
146 | if (expect_false (res == kqueue_eventmax)) |
147 | { |
147 | { |
148 | ev_free (kqueue_events); |
148 | ev_free (kqueue_events); |
149 | kqueue_eventmax = array_roundsize (struct kevent, kqueue_eventmax << 1); |
149 | kqueue_eventmax = array_roundsize (struct kevent, kqueue_eventmax << 1); |
150 | kqueue_events = ev_malloc (sizeof (struct kevent) * kqueue_eventmax); |
150 | kqueue_events = (struct kevent *)ev_malloc (sizeof (struct kevent) * kqueue_eventmax); |
151 | } |
151 | } |
152 | } |
152 | } |
153 | |
153 | |
154 | static int |
154 | static int |
155 | kqueue_init (EV_P_ int flags) |
155 | kqueue_init (EV_P_ int flags) |
… | |
… | |
184 | method_fudge = 1e-3; /* needed to compensate for kevent returning early */ |
184 | method_fudge = 1e-3; /* needed to compensate for kevent returning early */ |
185 | method_modify = kqueue_modify; |
185 | method_modify = kqueue_modify; |
186 | method_poll = kqueue_poll; |
186 | method_poll = kqueue_poll; |
187 | |
187 | |
188 | kqueue_eventmax = 64; /* intiial number of events receivable per poll */ |
188 | kqueue_eventmax = 64; /* intiial number of events receivable per poll */ |
189 | kqueue_events = ev_malloc (sizeof (struct kevent) * kqueue_eventmax); |
189 | kqueue_events = (struct kevent *)ev_malloc (sizeof (struct kevent) * kqueue_eventmax); |
190 | |
190 | |
191 | kqueue_changes = 0; |
191 | kqueue_changes = 0; |
192 | kqueue_changemax = 0; |
192 | kqueue_changemax = 0; |
193 | kqueue_changecnt = 0; |
193 | kqueue_changecnt = 0; |
194 | |
194 | |