diff --git a/healthd/healthd.cpp b/healthd/healthd.cpp index 3f0e047cf..aa6735d71 100644 --- a/healthd/healthd.cpp +++ b/healthd/healthd.cpp @@ -297,12 +297,18 @@ static void wakealarm_init(void) { } static void healthd_mainloop(void) { + int nevents = 0; while (1) { struct epoll_event events[eventct]; - int nevents; int timeout = awake_poll_interval; int mode_timeout; + /* Don't wait for first timer timeout to run periodic chores */ + if (!nevents) + periodic_chores(); + + healthd_mode_ops->heartbeat(); + mode_timeout = healthd_mode_ops->preparetowait(); if (timeout < 0 || (mode_timeout > 0 && mode_timeout < timeout)) timeout = mode_timeout; @@ -318,11 +324,6 @@ static void healthd_mainloop(void) { if (events[n].data.ptr) (*(void (*)(int))events[n].data.ptr)(events[n].events); } - - if (!nevents) - periodic_chores(); - - healthd_mode_ops->heartbeat(); } return;