70 if (when < 0 || interval < 0) {
75 fd = timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK | TFD_CLOEXEC);
79 if (_uev_watcher_init(ctx, w, UEV_CRON_TYPE, cb, arg, fd,
UEV_READ))
108 if (when < 0 || interval < 0) {
116 if (!when && !interval)
124 w->u.c.interval = interval;
126 if (w->
ctx->running) {
127 struct itimerspec time;
129 memset(&time, 0,
sizeof(time));
130 time.it_value.tv_sec = when;
131 time.it_interval.tv_sec = interval;
132 if (timerfd_settime(w->
fd, TFD_SETTIME_FLAGS, &time, NULL) < 0)
136 return _uev_watcher_start(w);
int uev_cron_init(uev_ctx_t *ctx, uev_t *w, uev_cb_t *cb, void *arg, time_t when, time_t interval)