From: Lennart Poettering Date: Thu, 12 Dec 2013 19:16:06 +0000 (+0100) Subject: service: process watchdog timeouts with lowest priority X-Git-Tag: v209~964 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=c4ef331782b4c0c615a258d3a4e6c71d8ccc67e1;ds=sidebyside service: process watchdog timeouts with lowest priority --- diff --git a/src/core/service.c b/src/core/service.c index 67d20085e..3b3f95638 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -263,8 +263,17 @@ static void service_start_watchdog(Service *s) { } r = sd_event_source_set_enabled(s->watchdog_event_source, SD_EVENT_ONESHOT); - } else + } else { r = sd_event_add_monotonic(UNIT(s)->manager->event, s->watchdog_timestamp.monotonic + s->watchdog_usec, 0, service_dispatch_watchdog, s, &s->watchdog_event_source); + if (r < 0) { + log_warning_unit(UNIT(s)->id, "%s failed to add watchdog timer: %s", UNIT(s)->id, strerror(-r)); + return; + } + + /* Let's process everything else which might be a sign + * of living before we consider a service died. */ + r = sd_event_source_set_priority(s->watchdog_event_source, SD_EVENT_PRIORITY_IDLE); + } if (r < 0) log_warning_unit(UNIT(s)->id, "%s failed to install watchdog timer: %s", UNIT(s)->id, strerror(-r));