diff --git a/src/linux/timer.c b/src/linux/timer.c index 96e39171..8bfe3069 100644 --- a/src/linux/timer.c +++ b/src/linux/timer.c @@ -151,7 +151,10 @@ evfilt_timer_knote_create(struct filter *filt, struct knote *kn) } memset(&ev, 0, sizeof(ev)); - ev.events = EPOLLIN; + ev.events = EPOLLIN | EPOLLET; + if (kn->kev.flags & EV_ONESHOT || kn->kev.flags & EV_DISPATCH) + ev.events |= EPOLLONESHOT; + ev.data.ptr = kn; if (epoll_ctl(filter_epfd(filt), EPOLL_CTL_ADD, tfd, &ev) < 0) { dbg_printf("epoll_ctl(2): %d", errno);