summaryrefslogtreecommitdiff
path: root/ev_epoll.c
diff options
context:
space:
mode:
authorroot <root>2007-11-06 00:10:04 +0000
committerroot <root>2007-11-06 00:10:04 +0000
commitdeff62d26ff4c1324816c04c0c6db1e4db435870 (patch)
treea87ff66d97dd24912b1eee812549f8d52ea41f5b /ev_epoll.c
parent22c618bcb055597260be9be3a5815e08a4cea996 (diff)
better error handling
Diffstat (limited to 'ev_epoll.c')
-rw-r--r--ev_epoll.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/ev_epoll.c b/ev_epoll.c
index 4689f8d..6bb41bc 100644
--- a/ev_epoll.c
+++ b/ev_epoll.c
@@ -51,11 +51,16 @@ epoll_modify (EV_P_ int fd, int oev, int nev)
static void
epoll_poll (EV_P_ ev_tstamp timeout)
{
- int eventcnt = epoll_wait (epoll_fd, epoll_events, epoll_eventmax, ceil (timeout * 1000.));
int i;
+ int eventcnt = epoll_wait (epoll_fd, epoll_events, epoll_eventmax, ceil (timeout * 1000.));
if (eventcnt < 0)
- return;
+ {
+ if (errno != EINTR)
+ syserr ();
+
+ return;
+ }
for (i = 0; i < eventcnt; ++i)
fd_event (
@@ -68,9 +73,9 @@ epoll_poll (EV_P_ ev_tstamp timeout)
/* if the receive array was full, increase its size */
if (expect_false (eventcnt == epoll_eventmax))
{
- free (epoll_events);
+ ev_free (epoll_events);
epoll_eventmax = array_roundsize (epoll_events, epoll_eventmax << 1);
- epoll_events = malloc (sizeof (struct epoll_event) * epoll_eventmax);
+ epoll_events = ev_malloc (sizeof (struct epoll_event) * epoll_eventmax);
}
}
@@ -89,7 +94,7 @@ epoll_init (EV_P_ int flags)
method_poll = epoll_poll;
epoll_eventmax = 64; /* intiial number of events receivable per poll */
- epoll_events = malloc (sizeof (struct epoll_event) * epoll_eventmax);
+ epoll_events = ev_malloc (sizeof (struct epoll_event) * epoll_eventmax);
return EVMETHOD_EPOLL;
}
@@ -99,7 +104,7 @@ epoll_destroy (EV_P)
{
close (epoll_fd);
- free (epoll_events);
+ ev_free (epoll_events);
}
static void