X-Git-Url: https://git.llucax.com/software/libev.git/blobdiff_plain/4ebe9e295b974622f802229ca8e371ee6df9525a..5c23f3932f8060a6541f2374689c96c92da21355:/ev_kqueue.c?ds=sidebyside diff --git a/ev_kqueue.c b/ev_kqueue.c index afd3f9c..133f33c 100644 --- a/ev_kqueue.c +++ b/ev_kqueue.c @@ -39,8 +39,6 @@ void inline_speed kqueue_change (EV_P_ int fd, int filter, int flags, int fflags) { - struct kevent *ke; - ++kqueue_changecnt; array_needsize (struct kevent, kqueue_changes, kqueue_changemax, kqueue_changecnt, EMPTY2); @@ -83,7 +81,7 @@ kqueue_poll (EV_P_ ev_tstamp timeout) if (kqueue_changecnt > kqueue_eventmax) { ev_free (kqueue_events); - kqueue_eventmax = array_roundsize (struct kevent, kqueue_changecnt); + kqueue_eventmax = array_nextsize (sizeof (struct kevent), kqueue_eventmax, kqueue_changecnt); kqueue_events = (struct kevent *)ev_malloc (sizeof (struct kevent) * kqueue_eventmax); } @@ -92,7 +90,7 @@ kqueue_poll (EV_P_ ev_tstamp timeout) res = kevent (backend_fd, kqueue_changes, kqueue_changecnt, kqueue_events, kqueue_eventmax, &ts); kqueue_changecnt = 0; - if (res < 0) + if (expect_false (res < 0)) { if (errno != EINTR) syserr ("(libev) kevent"); @@ -137,7 +135,7 @@ kqueue_poll (EV_P_ ev_tstamp timeout) if (expect_false (res == kqueue_eventmax)) { ev_free (kqueue_events); - kqueue_eventmax = array_roundsize (struct kevent, kqueue_eventmax << 1); + kqueue_eventmax = array_nextsize (sizeof (struct kevent), kqueue_eventmax, kqueue_eventmax + 1); kqueue_events = (struct kevent *)ev_malloc (sizeof (struct kevent) * kqueue_eventmax); } } @@ -145,16 +143,13 @@ kqueue_poll (EV_P_ ev_tstamp timeout) int inline_size kqueue_init (EV_P_ int flags) { - struct kevent ch, ev; - /* Initalize the kernel queue */ if ((backend_fd = kqueue ()) < 0) return 0; fcntl (backend_fd, F_SETFD, FD_CLOEXEC); /* not sure if necessary, hopefully doesn't hurt */ - /* fudge *might* be zero from the documentation, but bsd docs are notoriously wrong */ - backend_fudge = 1e-3; /* needed to compensate for kevent returning early */ + backend_fudge = 0.; backend_modify = kqueue_modify; backend_poll = kqueue_poll;