- e.events = events;
- e.data.ptr = upoll;
- return epoll_ctl(pollfd, EPOLL_CTL_MOD, upoll->fd, &e);
+ upoll->read = process;
+ return update(upoll->fd);
+}
+
+int upoll_on_writable(struct upoll *upoll, void (*process)(void *))
+{
+ assert(pollfd != 0);
+ assert(upoll_is_valid(upoll));
+
+ upoll->write = process;
+ return update(upoll->fd);
+}
+
+void upoll_on_hangup(struct upoll *upoll, void (*process)(void *))
+{
+ assert(pollfd != 0);
+ assert(upoll_is_valid(upoll));
+
+ upoll->hangup = process;