diff options
-rw-r--r-- | Changes | 3 | ||||
-rw-r--r-- | ev.c | 12 | ||||
-rw-r--r-- | ev_epoll.c | 4 | ||||
-rw-r--r-- | ev_kqueue.c | 4 | ||||
-rw-r--r-- | ev_poll.c | 2 | ||||
-rw-r--r-- | ev_port.c | 6 | ||||
-rw-r--r-- | ev_select.c | 2 |
7 files changed, 18 insertions, 15 deletions
@@ -6,7 +6,7 @@ WISH? monotonic clocks times/GetTickCount for coarse corrections? backend by assuming the kernel event mask hasn't changed if ADD fails with EEXIST. - work around spurious event notification bugs in epoll by using - an 8-bit generation counter. recreate kernel state if we receive + a 32-bit generation counter. recreate kernel state if we receive spurious notifications or unwanted events. - use memset to initialise most arrays now and do away with the init functions. @@ -16,6 +16,7 @@ WISH? monotonic clocks times/GetTickCount for coarse corrections? to have a struct AND a function called ev_loop). - fix a bug where ev_default would not initialise the default loop again after it was destroyed with ev_default_destroy. + - rename syserr to ev_syserr to avoid name clashes when embedding. 3.45 Tue Oct 21 21:59:26 CEST 2008 - disable inotify usage on linux <2.6.25, as it is broken @@ -390,7 +390,7 @@ ev_set_syserr_cb (void (*cb)(const char *msg)) } static void noinline -syserr (const char *msg) +ev_syserr (const char *msg) { if (!msg) msg = "(libev) system error"; @@ -452,7 +452,10 @@ typedef struct unsigned char events; unsigned char reify; unsigned char emask; /* the epoll backend stores the actual kernel mask in here */ - unsigned char egen; /* generation counter to counter epoll bugs */ + unsigned char unused; +#if EV_USE_EPOLL + unsigned int egen; /* generation counter to counter epoll bugs */ +#endif #if EV_SELECT_IS_WINSOCKET SOCKET handle; #endif @@ -1000,7 +1003,7 @@ evpipe_init (EV_P) #endif { while (pipe (evpipe)) - syserr ("(libev) error creating signal/async pipe"); + ev_syserr ("(libev) error creating signal/async pipe"); fd_intern (evpipe [0]); fd_intern (evpipe [1]); @@ -1658,8 +1661,7 @@ ev_default_fork (void) struct ev_loop *loop = ev_default_loop_ptr; #endif - if (backend) - postfork = 1; /* must be in line with ev_loop_fork */ + ev_loop_fork (EV_A); } /*****************************************************************************/ @@ -123,7 +123,7 @@ epoll_poll (EV_P_ ev_tstamp timeout) if (expect_false (eventcnt < 0)) { if (errno != EINTR) - syserr ("(libev) epoll_wait"); + ev_syserr ("(libev) epoll_wait"); return; } @@ -205,7 +205,7 @@ epoll_fork (EV_P) close (backend_fd); while ((backend_fd = epoll_create (256)) < 0) - syserr ("(libev) epoll_create"); + ev_syserr ("(libev) epoll_create"); fcntl (backend_fd, F_SETFD, FD_CLOEXEC); diff --git a/ev_kqueue.c b/ev_kqueue.c index c8dc69a..63828d6 100644 --- a/ev_kqueue.c +++ b/ev_kqueue.c @@ -101,7 +101,7 @@ kqueue_poll (EV_P_ ev_tstamp timeout) if (expect_false (res < 0)) { if (errno != EINTR) - syserr ("(libev) kevent"); + ev_syserr ("(libev) kevent"); return; } @@ -184,7 +184,7 @@ kqueue_fork (EV_P) close (backend_fd); while ((backend_fd = kqueue ()) < 0) - syserr ("(libev) kqueue"); + ev_syserr ("(libev) kqueue"); fcntl (backend_fd, F_SETFD, FD_CLOEXEC); @@ -98,7 +98,7 @@ poll_poll (EV_P_ ev_tstamp timeout) else if (errno == ENOMEM && !syserr_cb) fd_enomem (EV_A); else if (errno != EINTR) - syserr ("(libev) poll"); + ev_syserr ("(libev) poll"); } else for (p = polls; res; ++p) @@ -59,7 +59,7 @@ port_associate_and_check (EV_P_ int fd, int ev) if (errno == EBADFD) fd_kill (EV_A_ fd); else - syserr ("(libev) port_associate"); + ev_syserr ("(libev) port_associate"); } } @@ -92,7 +92,7 @@ port_poll (EV_P_ ev_tstamp timeout) if (res < 0) { if (errno != EINTR && errno != ETIME) - syserr ("(libev) port_getn"); + ev_syserr ("(libev) port_getn"); return; } @@ -153,7 +153,7 @@ port_fork (EV_P) close (backend_fd); while ((backend_fd = port_create ()) < 0) - syserr ("(libev) port"); + ev_syserr ("(libev) port"); fcntl (backend_fd, F_SETFD, FD_CLOEXEC); diff --git a/ev_select.c b/ev_select.c index 93d84cf..6ffb93c 100644 --- a/ev_select.c +++ b/ev_select.c @@ -196,7 +196,7 @@ select_poll (EV_P_ ev_tstamp timeout) else if (errno == ENOMEM && !syserr_cb) fd_enomem (EV_A); else if (errno != EINTR) - syserr ("(libev) select"); + ev_syserr ("(libev) select"); return; } |