From f78a90217447b10cb52c2789d88da07088b37425 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Mon, 7 Jan 2019 21:34:11 +0000 Subject: hwclock: use monotonic time to measure how long setting time takes Earlier gettimeofday() was affected by discontinuous jumps. Measuring how long time it takes to set time using function that effected by the very thing being measured makes head spin. Lets make this less confusing with monotonic clock that ticks on without jumps. Signed-off-by: Sami Kerola --- sys-utils/Makemodule.am | 4 +++- sys-utils/hwclock-rtc.c | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'sys-utils') diff --git a/sys-utils/Makemodule.am b/sys-utils/Makemodule.am index 825a7335b..fdecbfac4 100644 --- a/sys-utils/Makemodule.am +++ b/sys-utils/Makemodule.am @@ -454,7 +454,9 @@ hwclock_SOURCES = \ sys-utils/hwclock.h \ sys-utils/hwclock-cmos.c if LINUX -hwclock_SOURCES += sys-utils/hwclock-rtc.c +hwclock_SOURCES += \ + sys-utils/hwclock-rtc.c \ + lib/monotonic.c endif hwclock_LDADD = $(LDADD) libcommon.la -lm if HAVE_AUDIT diff --git a/sys-utils/hwclock-rtc.c b/sys-utils/hwclock-rtc.c index 32feb3504..a0d28f89e 100644 --- a/sys-utils/hwclock-rtc.c +++ b/sys-utils/hwclock-rtc.c @@ -12,6 +12,7 @@ #include #include +#include "monotonic.h" #include "nls.h" #include "hwclock.h" @@ -223,12 +224,12 @@ static int busywait_for_rtc_clock_tick(const struct hwclock_control *ctl, * something weird happens, we have a time limit (1.5s) on this loop * to reduce the impact of this failure. */ - gettimeofday(&begin, NULL); + gettime_monotonic(&begin); do { rc = do_rtc_read_ioctl(rtc_fd, &nowtime); if (rc || start_time.tm_sec != nowtime.tm_sec) break; - gettimeofday(&now, NULL); + gettime_monotonic(&now); if (time_diff(now, begin) > 1.5) { warnx(_("Timed out waiting for time change.")); return 1; -- cgit v1.2.3-55-g7522