(nev & EV_READ ? EPOLLIN : 0)
| (nev & EV_WRITE ? EPOLLOUT : 0);
- epoll_ctl (epoll_fd, mode, fd, &ev);
-}
-
-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);
+ if (!epoll_ctl (epoll_fd, mode, fd, &ev))
+ fd_kill (EV_A_ fd);
}
static void
return EVMETHOD_EPOLL;
}
+static void
+epoll_destroy (EV_P)
+{
+ close (epoll_fd);
+
+ free (epoll_events);
+}
+
+static void
+epoll_fork (EV_P)
+{
+ epoll_fd = epoll_create (256);
+ fcntl (epoll_fd, F_SETFD, FD_CLOEXEC);
+
+ fd_rearm_all (EV_A);
+}
+