event: hook up sd-event with the service watchdog logic

Adds a new call sd_event_set_watchdog() that can be used to hook up the
event loop with the watchdog supervision logic of systemd. If enabled
and $WATCHDOG_USEC is set the event loop will ping the invoking systemd
daemon right after coming back from epoll_wait() but not more often than
$WATCHDOG_USEC/4. The epoll_wait() will sleep no longer than
$WATCHDOG_USEC/4*3, to make sure the service manager is called in time.

This means that setting WatchdogSec= in a .service file and calling
sd_event_set_watchdog() in your daemon is enough to hook it up with the
watchdog logic.
This commit is contained in:
Lennart Poettering
2013-12-11 18:20:09 +01:00
parent 08cd155254
commit cde93897cd
19 changed files with 150 additions and 10 deletions
+2
View File
@@ -632,6 +632,8 @@ int main(int argc, char *argv[]) {
goto finish;
}
sd_event_set_watchdog(event, true);
n = sd_listen_fds(1);
if (n < 0) {
log_error("Failed to receive sockets from parent.");