First page Back Continue Last page Summary Graphics
Examples
kqueue() in stead of poll():
handle_events()
{
int i, n;
struct timespec timeout = { TMOUT_SEC, TMOUT_NSEC };
n = kevent(kq, ch, nchanges, ev, nevents, &timeout);
if (n <= 0)
goto error_or_timeout;
for (i = 0; i < n; i++) {
if (evi.flags & EV_ERROR)
/* error */
if (evi.filter == EVFILT_READ)
readable_fd(evi.ident);
if (evi.filter == EVFILT_WRITE)
writeable_fd(evi.ident);
}
...
}
update_fd(int fd, int action, int filter)
{
EV_SET(&chnchanges, fd, filter, action == ADD ? EV_ADD :
EV_DELETE, 0, 0, 0);
nchanges++;
}
Notes: