diff options
Diffstat (limited to 'ev_kqueue.c')
-rw-r--r-- | ev_kqueue.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/ev_kqueue.c b/ev_kqueue.c index 3a4824f..2a9832f 100644 --- a/ev_kqueue.c +++ b/ev_kqueue.c @@ -85,6 +85,8 @@ kqueue_poll (EV_P_ ev_tstamp timeout) int res, i; struct timespec ts; + EV_SUSPEND_CB; + /* need to resize so there is enough space for errors */ if (kqueue_changecnt > kqueue_eventmax) { @@ -93,13 +95,13 @@ kqueue_poll (EV_P_ ev_tstamp timeout) kqueue_events = (struct kevent *)ev_malloc (sizeof (struct kevent) * kqueue_eventmax); } - if (expect_false (suspend_cb)) suspend_cb (EV_A); ts.tv_sec = (time_t)timeout; ts.tv_nsec = (long)((timeout - (ev_tstamp)ts.tv_sec) * 1e9); res = kevent (backend_fd, kqueue_changes, kqueue_changecnt, kqueue_events, kqueue_eventmax, &ts); - if (expect_false (resume_cb)) resume_cb (EV_A); kqueue_changecnt = 0; + EV_RESUME_CB; + if (expect_false (res < 0)) { if (errno != EINTR) |