Browse Source

*** empty log message ***

master
Marc Alexander Lehmann 14 years ago
parent
commit
6c38a25e17
  1. 29
      ev_poll.c

29
ev_poll.c

@ -86,7 +86,7 @@ poll_modify (EV_P_ int fd, int oev, int nev)
static void
poll_poll (EV_P_ ev_tstamp timeout)
{
int i;
struct pollfd *p;
int res = poll (polls, pollcnt, (int)ceil (timeout * 1000.));
if (expect_false (res < 0))
@ -98,17 +98,22 @@ poll_poll (EV_P_ ev_tstamp timeout)
else if (errno != EINTR)
syserr ("(libev) poll");
}
else if (res > 0)
for (i = 0; i < pollcnt; ++i)
if (expect_false (polls [i].revents & POLLNVAL))
fd_kill (EV_A_ polls [i].fd);
else
fd_event (
EV_A_
polls [i].fd,
(polls [i].revents & (POLLOUT | POLLERR | POLLHUP) ? EV_WRITE : 0)
| (polls [i].revents & (POLLIN | POLLERR | POLLHUP) ? EV_READ : 0)
);
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)
);
}
}
int inline_size

Loading…
Cancel
Save