- epoll_ctl (epoll_fd, mode, fd, &ev);
-}
-
-void epoll_postfork_child (void)
-{
- 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].wev)
- epoll_modify (fd, EV_NONE, anfds [fd].wev);
+ if (expect_false (epoll_ctl (backend_fd, mode, fd, &ev)))
+ if (errno != ENOENT /* on ENOENT the fd went away, so try to do the right thing */
+ || (nev && epoll_ctl (backend_fd, EPOLL_CTL_ADD, fd, &ev)))
+ fd_kill (EV_A_ fd);