summaryrefslogtreecommitdiff
path: root/ev_epoll.c
diff options
context:
space:
mode:
authorroot <root>2007-11-04 15:58:49 +0000
committerroot <root>2007-11-04 15:58:49 +0000
commit5e20ccfe261679c78f9aa365ac087fb0700e0f2b (patch)
tree1a45e376caae037cc6a6bedbf0f7d95fde17701d /ev_epoll.c
parentbaf84e3741d88472c270efb118be8e3621ebe2d8 (diff)
better destroy support, separate into default loop and additional loops
Diffstat (limited to 'ev_epoll.c')
-rw-r--r--ev_epoll.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/ev_epoll.c b/ev_epoll.c
index 4afad18..ee7ceea 100644
--- a/ev_epoll.c
+++ b/ev_epoll.c
@@ -46,20 +46,6 @@ epoll_modify (EV_P_ int fd, int oev, int nev)
}
static void
-epoll_postfork_child (EV_P)
-{
- int fd;
-
- epoll_fd = epoll_create (256);
- fcntl (epoll_fd, F_SETFD, FD_CLOEXEC);
-
- /* re-register interest in fds */
- for (fd = 0; fd < anfdmax; ++fd)
- if (anfds [fd].events)//D
- epoll_modify (EV_A_ fd, EV_NONE, anfds [fd].events);
-}
-
-static void
epoll_poll (EV_P_ ev_tstamp timeout)
{
int eventcnt = epoll_wait (epoll_fd, epoll_events, epoll_eventmax, ceil (timeout * 1000.));
@@ -105,3 +91,22 @@ epoll_init (EV_P_ int flags)
return EVMETHOD_EPOLL;
}
+static void
+epoll_destroy (EV_P)
+{
+ close (epoll_fd);
+
+ free (epoll_events);
+}
+
+static void
+epoll_fork (EV_P)
+{
+ int fd;
+
+ epoll_fd = epoll_create (256);
+ fcntl (epoll_fd, F_SETFD, FD_CLOEXEC);
+
+ fd_rearm_all ();
+}
+