From 3676840bf4d472af68b38be10c47665d4bc451cf Mon Sep 17 00:00:00 2001 From: root Date: Sun, 4 Nov 2007 00:39:24 +0000 Subject: multiplicity, work around bugs in http.c etc. --- ev.c | 15 +++++++++------ ev_epoll.c | 20 ++++++++++---------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/ev.c b/ev.c index 300049e..a80e69a 100644 --- a/ev.c +++ b/ev.c @@ -132,7 +132,7 @@ typedef struct int events; } ANPENDING; -#ifdef EV_MULTIPLICITY +#if EV_MULTIPLICITY struct ev_loop { @@ -544,7 +544,7 @@ ev_method (EV_P) return method; } -static void +inline int loop_init (EV_P_ int methods) { if (!method) @@ -603,16 +603,19 @@ loop_init (EV_P_ int methods) return method; } -#ifdef EV_MULTIPLICITY +#if EV_MULTIPLICITY struct ev_loop * ev_loop_new (int methods) { struct ev_loop *loop = (struct ev_loop *)calloc (1, sizeof (struct ev_loop)); - loop_init (EV_A_ methods); + if (loop_init (EV_A_ methods)) + return loop; - return loop; + ev_loop_delete (loop); + + return 0; } void @@ -627,7 +630,7 @@ ev_loop_delete (EV_P) int ev_init (int methods) { - loop_init (); + return loop_init (methods); } #endif diff --git a/ev_epoll.c b/ev_epoll.c index 30d1b25..4afad18 100644 --- a/ev_epoll.c +++ b/ev_epoll.c @@ -62,7 +62,7 @@ epoll_postfork_child (EV_P) static void epoll_poll (EV_P_ ev_tstamp timeout) { - int eventcnt = epoll_wait (epoll_fd, events, eventmax, ceil (timeout * 1000.)); + int eventcnt = epoll_wait (epoll_fd, epoll_events, epoll_eventmax, ceil (timeout * 1000.)); int i; if (eventcnt < 0) @@ -71,17 +71,17 @@ epoll_poll (EV_P_ ev_tstamp timeout) for (i = 0; i < eventcnt; ++i) fd_event ( EV_A_ - events [i].data.u64, - (events [i].events & (EPOLLOUT | EPOLLERR | EPOLLHUP) ? EV_WRITE : 0) - | (events [i].events & (EPOLLIN | EPOLLERR | EPOLLHUP) ? EV_READ : 0) + epoll_events [i].data.u64, + (epoll_events [i].events & (EPOLLOUT | EPOLLERR | EPOLLHUP) ? EV_WRITE : 0) + | (epoll_events [i].events & (EPOLLIN | EPOLLERR | EPOLLHUP) ? EV_READ : 0) ); /* if the receive array was full, increase its size */ - if (expect_false (eventcnt == eventmax)) + if (expect_false (eventcnt == epoll_eventmax)) { - free (events); - eventmax = array_roundsize (events, eventmax << 1); - events = malloc (sizeof (struct epoll_event) * eventmax); + free (epoll_events); + epoll_eventmax = array_roundsize (epoll_events, epoll_eventmax << 1); + epoll_events = malloc (sizeof (struct epoll_event) * epoll_eventmax); } } @@ -99,8 +99,8 @@ epoll_init (EV_P_ int flags) method_modify = epoll_modify; method_poll = epoll_poll; - eventmax = 64; /* intiial number of events receivable per poll */ - events = malloc (sizeof (struct epoll_event) * eventmax); + epoll_eventmax = 64; /* intiial number of events receivable per poll */ + epoll_events = malloc (sizeof (struct epoll_event) * epoll_eventmax); return EVMETHOD_EPOLL; } -- cgit v1.2.3