diff options
author | Lennart Poettering <lennart@poettering.net> | 2018-05-29 12:55:33 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2018-06-06 10:55:45 +0200 |
commit | 4f811d27d6d9324e65ce628fa20ac1761ef98de0 (patch) | |
tree | b2673f25c2e521455ec92a2440cf1e86370ca1df /src/core | |
parent | bbf5fd8e41b1abdf03c8ab463a2c9af7c7dc64d8 (diff) | |
download | systemd-4f811d27d6d9324e65ce628fa20ac1761ef98de0.tar.gz |
time-util: introduce common implementation of TFD_TIMER_CANCEL_ON_SET client code
We now use pretty much the same code at three places, let's unify that.
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/manager.c | 20 |
1 files changed, 2 insertions, 18 deletions
diff --git a/src/core/manager.c b/src/core/manager.c index 0f767d651c..d2f628d2bb 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -353,14 +353,7 @@ static void manager_close_idle_pipe(Manager *m) { static int manager_setup_time_change(Manager *m) { int r; - /* We only care for the cancellation event, hence we set the - * timeout to the latest possible value. */ - struct itimerspec its = { - .it_value.tv_sec = TIME_T_MAX, - }; - assert(m); - assert_cc(sizeof(time_t) == sizeof(TIME_T_MAX)); if (m->test_run_flags) return 0; @@ -368,18 +361,9 @@ static int manager_setup_time_change(Manager *m) { m->time_change_event_source = sd_event_source_unref(m->time_change_event_source); m->time_change_fd = safe_close(m->time_change_fd); - /* Uses TFD_TIMER_CANCEL_ON_SET to get notifications whenever - * CLOCK_REALTIME makes a jump relative to CLOCK_MONOTONIC */ - - m->time_change_fd = timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK|TFD_CLOEXEC); + m->time_change_fd = time_change_fd(); if (m->time_change_fd < 0) - return log_error_errno(errno, "Failed to create timerfd: %m"); - - if (timerfd_settime(m->time_change_fd, TFD_TIMER_ABSTIME|TFD_TIMER_CANCEL_ON_SET, &its, NULL) < 0) { - log_debug_errno(errno, "Failed to set up TFD_TIMER_CANCEL_ON_SET, ignoring: %m"); - m->time_change_fd = safe_close(m->time_change_fd); - return 0; - } + return log_error_errno(m->time_change_fd, "Failed to create timer change timer fd: %m"); r = sd_event_add_io(m->event, &m->time_change_event_source, m->time_change_fd, EPOLLIN, manager_dispatch_time_change_fd, m); if (r < 0) |