| 303 EventHandlerLinux *ev = (EventHandlerLinux*)h; |
303 EventHandlerLinux *ev = (EventHandlerLinux*)h; |
| 304 event->object = (intptr_t)fd; |
304 event->object = (intptr_t)fd; |
| 305 event->events = EVENT_POLLOUT; |
305 event->events = EVENT_POLLOUT; |
| 306 struct epoll_event epev; |
306 struct epoll_event epev; |
| 307 epev.events = EPOLLOUT | EPOLLRDHUP | EPOLLET; // input event, edge triggered |
307 epev.events = EPOLLOUT | EPOLLRDHUP | EPOLLET; // input event, edge triggered |
| |
308 epev.data.ptr = event; |
| |
309 return epoll_ctl(ev->ep, EPOLL_CTL_ADD, fd, &epev); |
| |
310 } |
| |
311 |
| |
312 int ev_poll(EventHandler *h, int fd, Event *event) { |
| |
313 EventHandlerLinux *ev = (EventHandlerLinux*)h; |
| |
314 event->object = (intptr_t)fd; |
| |
315 struct epoll_event epev; |
| |
316 epev.events = ev_convert2sys_events(event->events); |
| 308 epev.data.ptr = event; |
317 epev.data.ptr = event; |
| 309 return epoll_ctl(ev->ep, EPOLL_CTL_ADD, fd, &epev); |
318 return epoll_ctl(ev->ep, EPOLL_CTL_ADD, fd, &epev); |
| 310 } |
319 } |
| 311 |
320 |
| 312 int ev_remove_poll(EventHandler *h, int fd) { |
321 int ev_remove_poll(EventHandler *h, int fd) { |