X-Git-Url: https://git.llucax.com/software/libev.git/blobdiff_plain/e7e7177a1b3a13f8534fca81c48c4d063fddbbd3..4ce77a5b1de05dae6092eae478b2a4397173d9c3:/ev_kqueue.c diff --git a/ev_kqueue.c b/ev_kqueue.c index 7a34e9b..149455d 100644 --- a/ev_kqueue.c +++ b/ev_kqueue.c @@ -36,7 +36,7 @@ #include #include -static void +void inline_speed kqueue_change (EV_P_ int fd, int filter, int flags, int fflags) { struct kevent *ke; @@ -83,7 +83,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 +92,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,12 +137,12 @@ 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); } } -static int +int inline_size kqueue_init (EV_P_ int flags) { struct kevent ch, ev; @@ -153,8 +153,7 @@ kqueue_init (EV_P_ int flags) 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; @@ -168,16 +167,14 @@ kqueue_init (EV_P_ int flags) return EVBACKEND_KQUEUE; } -static void +void inline_size kqueue_destroy (EV_P) { - close (backend_fd); - ev_free (kqueue_events); ev_free (kqueue_changes); } -static void +void inline_size kqueue_fork (EV_P) { close (backend_fd);