diff options
author | Lennart Poettering <lennart@poettering.net> | 2022-03-18 16:28:38 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2022-03-18 23:53:34 +0100 |
commit | ec75e8e07a0ad972e0c40e0a187e15a8d4fb3d66 (patch) | |
tree | 0d6309c1a74cf58a8b4c21a2f1cc198e901f4b17 /src/timesync | |
parent | 7cb08ea80f66dbaadfa0350cb09adf155449bcc6 (diff) | |
download | systemd-ec75e8e07a0ad972e0c40e0a187e15a8d4fb3d66.tar.gz |
sd-event: add a single implementation of an event source that runs on clock changes
We basically had the same code in three places. Let's unify it in a
common helper function.
event_add_time_change() might be something we should add to the official
sd-event API sooner or later, given its general usefulness.
Diffstat (limited to 'src/timesync')
-rw-r--r-- | src/timesync/timesyncd-manager.c | 14 | ||||
-rw-r--r-- | src/timesync/timesyncd-manager.h | 1 |
2 files changed, 4 insertions, 11 deletions
diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c index 3ab08a0fd6..193d13742b 100644 --- a/src/timesync/timesyncd-manager.c +++ b/src/timesync/timesyncd-manager.c @@ -14,6 +14,7 @@ #include "alloc-util.h" #include "dns-domain.h" +#include "event-util.h" #include "fd-util.h" #include "format-util.h" #include "fs-util.h" @@ -229,14 +230,9 @@ static int manager_clock_watch_setup(Manager *m) { assert(m); - m->event_clock_watch = sd_event_source_unref(m->event_clock_watch); - safe_close(m->clock_watch_fd); + m->event_clock_watch = sd_event_source_disable_unref(m->event_clock_watch); - m->clock_watch_fd = time_change_fd(); - if (m->clock_watch_fd < 0) - return log_error_errno(m->clock_watch_fd, "Failed to create timerfd: %m"); - - r = sd_event_add_io(m->event, &m->event_clock_watch, m->clock_watch_fd, EPOLLIN, manager_clock_watch, m); + r = event_add_time_change(m->event, &m->event_clock_watch, manager_clock_watch, m); if (r < 0) return log_error_errno(r, "Failed to create clock watch event source: %m"); @@ -889,8 +885,7 @@ void manager_disconnect(Manager *m) { manager_listen_stop(m); - m->event_clock_watch = sd_event_source_unref(m->event_clock_watch); - m->clock_watch_fd = safe_close(m->clock_watch_fd); + m->event_clock_watch = sd_event_source_disable_unref(m->event_clock_watch); m->event_timeout = sd_event_source_unref(m->event_timeout); @@ -1089,7 +1084,6 @@ int manager_new(Manager **ret) { .connection_retry_usec = DEFAULT_CONNECTION_RETRY_USEC, .server_socket = -1, - .clock_watch_fd = -1, .ratelimit = (RateLimit) { RATELIMIT_INTERVAL_USEC, diff --git a/src/timesync/timesyncd-manager.h b/src/timesync/timesyncd-manager.h index aceb0098ce..5368dba98c 100644 --- a/src/timesync/timesyncd-manager.h +++ b/src/timesync/timesyncd-manager.h @@ -92,7 +92,6 @@ struct Manager { /* watch for time changes */ sd_event_source *event_clock_watch; - int clock_watch_fd; /* Retry connections */ sd_event_source *event_retry; |