- int n, nfds;
-
- nfds = epoll_wait(poll_fd, events, ARRAY_SIZE(events), timeout);
- for (n = 0; n < nfds; ++n) {
- struct uloop_fd_event *cur = &cur_fds[n];
- struct uloop_fd *u = events[n].data.ptr;
- unsigned int ev = 0;
-
- cur->fd = u;
- if (!u)
- continue;
-
- if (events[n].events & (EPOLLERR|EPOLLHUP)) {
- u->error = true;
- if (!(u->flags & ULOOP_ERROR_CB))
- uloop_fd_delete(u);
- }
-
- if(!(events[n].events & (EPOLLRDHUP|EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP))) {
- cur->fd = NULL;
- continue;
- }
-
- if(events[n].events & EPOLLRDHUP)
- u->eof = true;
-
- if(events[n].events & EPOLLIN)
- ev |= ULOOP_READ;
-
- if(events[n].events & EPOLLOUT)
- ev |= ULOOP_WRITE;