mirror of
https://github.com/systemd/systemd.git
synced 2024-11-07 01:27:11 +03:00
event: make sure to possibly disarm the timerfds before we reenter epoll_wait
This commit is contained in:
parent
c57b5ca301
commit
1b5995b039
@ -1756,19 +1756,17 @@ _public_ int sd_event_run(sd_event *e, uint64_t timeout) {
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
r = event_arm_timer(e, e->monotonic_fd, e->monotonic_earliest, e->monotonic_latest, &e->monotonic_next);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
r = event_arm_timer(e, e->realtime_fd, e->realtime_earliest, e->realtime_latest, &e->realtime_next);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
if (event_next_pending(e) || e->need_process_child)
|
||||
timeout = 0;
|
||||
|
||||
if (timeout > 0) {
|
||||
r = event_arm_timer(e, e->monotonic_fd, e->monotonic_earliest, e->monotonic_latest, &e->monotonic_next);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
r = event_arm_timer(e, e->realtime_fd, e->realtime_earliest, e->realtime_latest, &e->realtime_next);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
}
|
||||
|
||||
m = epoll_wait(e->epoll_fd, ev_queue, EPOLL_QUEUE_MAX,
|
||||
timeout == (uint64_t) -1 ? -1 : (int) ((timeout + USEC_PER_MSEC - 1) / USEC_PER_MSEC));
|
||||
if (m < 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user