|
|
|
@ -1,7 +1,7 @@
|
|
|
|
|
/*
|
|
|
|
|
* libev poll fd activity backend |
|
|
|
|
* |
|
|
|
|
* Copyright (c) 2007,2008,2009 Marc Alexander Lehmann <libev@schmorp.de> |
|
|
|
|
* Copyright (c) 2007,2008,2009,2010 Marc Alexander Lehmann <libev@schmorp.de> |
|
|
|
|
* All rights reserved. |
|
|
|
|
* |
|
|
|
|
* Redistribution and use in source and binary forms, with or without modifica- |
|
|
|
@ -106,20 +106,24 @@ poll_poll (EV_P_ ev_tstamp timeout)
|
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
for (p = polls; res; ++p) |
|
|
|
|
if (expect_false (p->revents)) /* this expect is debatable */ |
|
|
|
|
{ |
|
|
|
|
--res; |
|
|
|
|
|
|
|
|
|
if (expect_false (p->revents & POLLNVAL)) |
|
|
|
|
fd_kill (EV_A_ p->fd); |
|
|
|
|
else |
|
|
|
|
fd_event ( |
|
|
|
|
EV_A_ |
|
|
|
|
p->fd, |
|
|
|
|
(p->revents & (POLLOUT | POLLERR | POLLHUP) ? EV_WRITE : 0) |
|
|
|
|
| (p->revents & (POLLIN | POLLERR | POLLHUP) ? EV_READ : 0) |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
{ |
|
|
|
|
assert (("libev: poll() returned illegal result, broken BSD kernel?", p < polls + pollcnt)); |
|
|
|
|
|
|
|
|
|
if (expect_false (p->revents)) /* this expect is debatable */ |
|
|
|
|
{ |
|
|
|
|
--res; |
|
|
|
|
|
|
|
|
|
if (expect_false (p->revents & POLLNVAL)) |
|
|
|
|
fd_kill (EV_A_ p->fd); |
|
|
|
|
else |
|
|
|
|
fd_event ( |
|
|
|
|
EV_A_ |
|
|
|
|
p->fd, |
|
|
|
|
(p->revents & (POLLOUT | POLLERR | POLLHUP) ? EV_WRITE : 0) |
|
|
|
|
| (p->revents & (POLLIN | POLLERR | POLLHUP) ? EV_READ : 0) |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int inline_size |
|
|
|
|