return eloop_event_add_rw(eloop, fd, NULL,NULL, write_cb, write_cb_arg);
}
-void
+int
eloop_event_delete_write(struct eloop *eloop, int fd, int write_only)
{
struct eloop_event *e;
if (fd > eloop->events_maxfd ||
(e = eloop->event_fds[fd]) == NULL)
- return;
+ {
+ errno = ENOENT;
+ return -1;
+ }
if (write_only) {
if (e->write_cb == NULL)
- return;
+ return 0;
if (e->read_cb == NULL)
goto remove;
e->write_cb = NULL;
epoll_ctl(eloop->poll_fd, EPOLL_CTL_MOD, fd, &epe);
#endif
eloop_event_setup_fds(eloop);
- return;
+ return 1;
}
remove:
#endif
eloop_event_setup_fds(eloop);
+ return 1;
}
int
}
#endif
-void
+int
eloop_q_timeout_delete(struct eloop *eloop, int queue,
void (*callback)(void *), void *arg)
{
struct eloop_timeout *t, *tt;
+ int n;
assert(eloop != NULL);
+ n = 0;
TAILQ_FOREACH_SAFE(t, &eloop->timeouts, next, tt) {
if ((queue == 0 || t->queue == queue) &&
t->arg == arg &&
{
TAILQ_REMOVE(&eloop->timeouts, t, next);
TAILQ_INSERT_TAIL(&eloop->free_timeouts, t, next);
+ n++;
}
}
+ return n;
}
void
eloop_event_delete_write((eloop), (fd), 0)
#define eloop_event_remove_writecb(eloop, fd) \
eloop_event_delete_write((eloop), (fd), 1)
-void eloop_event_delete_write(struct eloop *, int, int);
+int eloop_event_delete_write(struct eloop *, int, int);
#define eloop_timeout_add_tv(eloop, tv, cb, ctx) \
eloop_q_timeout_add_tv((eloop), ELOOP_QUEUE, (tv), (cb), (ctx))
time_t, void (*)(void *), void *);
int eloop_q_timeout_add_msec(struct eloop *, int,
long, void (*)(void *), void *);
-void eloop_q_timeout_delete(struct eloop *, int, void (*)(void *), void *);
+int eloop_q_timeout_delete(struct eloop *, int, void (*)(void *), void *);
int eloop_signal_set_cb(struct eloop *, const int *, size_t,
void (*)(int, void *), void *);