summaryrefslogtreecommitdiff
path: root/src/timesync
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2022-03-18 16:28:38 +0100
committerLennart Poettering <lennart@poettering.net>2022-03-18 23:53:34 +0100
commitec75e8e07a0ad972e0c40e0a187e15a8d4fb3d66 (patch)
tree0d6309c1a74cf58a8b4c21a2f1cc198e901f4b17 /src/timesync
parent7cb08ea80f66dbaadfa0350cb09adf155449bcc6 (diff)
downloadsystemd-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.c14
-rw-r--r--src/timesync/timesyncd-manager.h1
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;