return log_error_errno(r, "Failed to enable SIGCHLD event source: %m");
while (m->objective == MANAGER_OK) {
- usec_t watchdog_usec;
- watchdog_usec = manager_get_watchdog(m, WATCHDOG_RUNTIME);
- if (m->runtime_watchdog_running)
- (void) watchdog_ping();
- else if (timestamp_is_set(watchdog_usec))
- manager_retry_runtime_watchdog(m);
+ (void) watchdog_ping();
if (!ratelimit_below(&rl)) {
/* Yay, something is going seriously wrong, pause a little */
}
void manager_set_watchdog(Manager *m, WatchdogType t, usec_t timeout) {
- int r = 0;
assert(m);
if (t == WATCHDOG_RUNTIME)
if (!timestamp_is_set(m->watchdog_overridden[WATCHDOG_RUNTIME])) {
- if (timestamp_is_set(timeout)) {
- r = watchdog_set_timeout(&timeout);
-
- if (r >= 0)
- m->runtime_watchdog_running = true;
- } else {
+ if (timestamp_is_set(timeout))
+ (void) watchdog_set_timeout(&timeout);
+ else
watchdog_close(true);
- m->runtime_watchdog_running = false;
- }
}
m->watchdog[t] = timeout;
}
int manager_override_watchdog(Manager *m, WatchdogType t, usec_t timeout) {
- int r = 0;
assert(m);
usec_t *p;
p = timestamp_is_set(timeout) ? &timeout : &m->watchdog[t];
- if (timestamp_is_set(*p)) {
- r = watchdog_set_timeout(p);
-
- if (r >= 0)
- m->runtime_watchdog_running = true;
- } else {
+ if (timestamp_is_set(*p))
+ (void) watchdog_set_timeout(p);
+ else
watchdog_close(true);
- m->runtime_watchdog_running = false;
- }
}
m->watchdog_overridden[t] = timeout;
-
return 0;
}
-void manager_retry_runtime_watchdog(Manager *m) {
- int r = 0;
-
- assert(m);
-
- if (timestamp_is_set(m->watchdog_overridden[WATCHDOG_RUNTIME]))
- r = watchdog_set_timeout(&m->watchdog_overridden[WATCHDOG_RUNTIME]);
- else
- r = watchdog_set_timeout(&m->watchdog[WATCHDOG_RUNTIME]);
-
- if (r >= 0)
- m->runtime_watchdog_running = true;
-}
-
int manager_reload(Manager *m) {
_cleanup_(manager_reloading_stopp) Manager *reloading = NULL;
_cleanup_fdset_free_ FDSet *fds = NULL;
usec_t watchdog[_WATCHDOG_TYPE_MAX];
usec_t watchdog_overridden[_WATCHDOG_TYPE_MAX];
- bool runtime_watchdog_running; /* Whether the runtime HW watchdog was started, so we know if we still need to get the real timeout from the hardware */
-
dual_timestamp timestamps[_MANAGER_TIMESTAMP_MAX];
/* Data specific to the device subsystem */
usec_t manager_get_watchdog(Manager *m, WatchdogType t);
void manager_set_watchdog(Manager *m, WatchdogType t, usec_t timeout);
int manager_override_watchdog(Manager *m, WatchdogType t, usec_t timeout);
-void manager_retry_runtime_watchdog(Manager *m);
const char* oom_policy_to_string(OOMPolicy i) _const_;
OOMPolicy oom_policy_from_string(const char *s) _pure_;