… | |
… | |
128 | epoll_eperms [epoll_epermcnt++] = fd; |
128 | epoll_eperms [epoll_epermcnt++] = fd; |
129 | } |
129 | } |
130 | |
130 | |
131 | return; |
131 | return; |
132 | } |
132 | } |
|
|
133 | else |
|
|
134 | assert (("libev: I/O watcher with invalid fd found in epoll_ctl", errno != EBADF && errno != ELOOP && errno != EINVAL)); |
133 | |
135 | |
134 | fd_kill (EV_A_ fd); |
136 | fd_kill (EV_A_ fd); |
135 | |
137 | |
136 | dec_egen: |
138 | dec_egen: |
137 | /* we didn't successfully call epoll_ctl, so decrement the generation counter again */ |
139 | /* we didn't successfully call epoll_ctl, so decrement the generation counter again */ |
… | |
… | |
234 | } |
236 | } |
235 | } |
237 | } |
236 | } |
238 | } |
237 | |
239 | |
238 | static int |
240 | static int |
239 | ev_epoll_create (void) |
241 | epoll_epoll_create (void) |
240 | { |
242 | { |
241 | int fd; |
243 | int fd; |
242 | |
244 | |
243 | #if defined EPOLL_CLOEXEC && !defined __ANDROID__ |
245 | #if defined EPOLL_CLOEXEC && !defined __ANDROID__ |
244 | fd = epoll_create1 (EPOLL_CLOEXEC); |
246 | fd = epoll_create1 (EPOLL_CLOEXEC); |
… | |
… | |
257 | |
259 | |
258 | inline_size |
260 | inline_size |
259 | int |
261 | int |
260 | epoll_init (EV_P_ int flags) |
262 | epoll_init (EV_P_ int flags) |
261 | { |
263 | { |
262 | if ((backend_fd = ev_epoll_create ()) < 0) |
264 | if ((backend_fd = epoll_epoll_create ()) < 0) |
263 | return 0; |
265 | return 0; |
264 | |
266 | |
265 | backend_mintime = 1e-3; /* epoll does sometimes return early, this is just to avoid the worst */ |
267 | backend_mintime = 1e-3; /* epoll does sometimes return early, this is just to avoid the worst */ |
266 | backend_modify = epoll_modify; |
268 | backend_modify = epoll_modify; |
267 | backend_poll = epoll_poll; |
269 | backend_poll = epoll_poll; |
… | |
… | |
284 | void |
286 | void |
285 | epoll_fork (EV_P) |
287 | epoll_fork (EV_P) |
286 | { |
288 | { |
287 | close (backend_fd); |
289 | close (backend_fd); |
288 | |
290 | |
289 | while ((backend_fd = ev_epoll_create ()) < 0) |
291 | while ((backend_fd = epoll_epoll_create ()) < 0) |
290 | ev_syserr ("(libev) epoll_create"); |
292 | ev_syserr ("(libev) epoll_create"); |
291 | |
293 | |
292 | fd_rearm_all (EV_A); |
294 | fd_rearm_all (EV_A); |
293 | } |
295 | } |
294 | |
296 | |