From 68b29a9fca915c83b9192790ec61189430cd5de6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 22 Nov 2012 00:38:55 +0100 Subject: [PATCH 1/1] manager: introduce watch_init() initializer for watches --- src/core/manager.c | 10 +++++++++- src/core/manager.h | 2 ++ src/core/service.c | 4 ++-- src/core/unit.c | 3 ++- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/core/manager.c b/src/core/manager.c index f932c79a1..72ce2f259 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -1363,7 +1363,8 @@ static int process_event(Manager *m, struct epoll_event *ev) { ssize_t k; /* Some timer event, to be dispatched to the units */ - if ((k = read(w->fd, &v, sizeof(v))) != sizeof(v)) { + k = read(w->fd, &v, sizeof(v)); + if (k != sizeof(v)) { if (k < 0 && (errno == EINTR || errno == EAGAIN)) break; @@ -2307,3 +2308,10 @@ bool manager_get_show_status(Manager *m) { return plymouth_running(); } + +void watch_init(Watch *w) { + assert(w); + + w->type = WATCH_INVALID; + w->fd = -1; +} diff --git a/src/core/manager.h b/src/core/manager.h index 22145024f..1644bd6f7 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -291,3 +291,5 @@ void manager_recheck_journal(Manager *m); void manager_set_show_status(Manager *m, bool b); bool manager_get_show_status(Manager *m); + +void watch_init(Watch *w); diff --git a/src/core/service.c b/src/core/service.c index aad6d6643..34d24ffa9 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -127,9 +127,9 @@ static void service_init(Unit *u) { s->restart_usec = DEFAULT_RESTART_USEC; s->type = _SERVICE_TYPE_INVALID; - s->watchdog_watch.type = WATCH_INVALID; + watch_init(&s->watchdog_watch); + watch_init(&s->timer_watch); - s->timer_watch.type = WATCH_INVALID; #ifdef HAVE_SYSV_COMPAT s->sysv_start_priority = -1; s->sysv_start_priority_from_rcnd = -1; diff --git a/src/core/unit.c b/src/core/unit.c index 99e1c2794..82dd617e3 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1580,7 +1580,8 @@ int unit_watch_timer(Unit *u, usec_t delay, Watch *w) { } else if (w->type == WATCH_INVALID) { ours = true; - if ((fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK|TFD_CLOEXEC)) < 0) + fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK|TFD_CLOEXEC); + if (fd < 0) return -errno; } else assert_not_reached("Invalid watch type"); -- 2.30.2