If this event is not the highest priority, then it will not be dispatched when the epoll triggers, and since we will not get any more wakeups (due to the way EPOLLONESHOT works) will never be dispatched.
Since we only handle one event per epoll_wait() wakeup, and we dequeue a ONE_SHOT event when we dispatch it, we do not have the problem described in epoll(7) of "multiple events can be generated upon receipt of multiple chunks of data". --- src/libsystemd-bus/sd-event.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/libsystemd-bus/sd-event.c b/src/libsystemd-bus/sd-event.c index 462dd41..1cf661e 100644 --- a/src/libsystemd-bus/sd-event.c +++ b/src/libsystemd-bus/sd-event.c @@ -447,9 +447,6 @@ static int source_io_register( ev.events = events; ev.data.ptr = s; - if (enabled == SD_EVENT_ONESHOT) - ev.events |= EPOLLONESHOT; - if (s->io.registered) r = epoll_ctl(s->event->epoll_fd, EPOLL_CTL_MOD, s->io.fd, &ev); else -- 1.8.5.1 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel