]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
sched: include unexpected jumps in monotonic time
authorMiroslav Lichvar <mlichvar@redhat.com>
Mon, 5 Oct 2020 08:16:53 +0000 (10:16 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Mon, 5 Oct 2020 16:56:37 +0000 (18:56 +0200)
Update the monotonic time before the timestamps are corrected for
unexpected jumps, e.g. due to the computer being suspended and resumed,
and switch to the raw timestamps. This should allow the NTS refresh
interval to better follow real time, but it will not be corrected for
a frequency offset if the clock is not synchronized (e.g. with -x).

sched.c

diff --git a/sched.c b/sched.c
index f1fbaf55a244652eeb933cc97849f8b205285c2a..b83a8931dcd65384c5d420cc832a015e10ada9a6 100644 (file)
--- a/sched.c
+++ b/sched.c
@@ -799,14 +799,14 @@ SCH_MainLoop(void)
     LCL_ReadRawTime(&now);
     LCL_CookTime(&now, &cooked, &err);
 
+    update_monotonic_time(&now, &last_select_ts_raw);
+
     /* Check if the time didn't jump unexpectedly */
     if (!check_current_time(&saved_now, &now, status == 0, &saved_tv, ptv)) {
       /* Cook the time again after handling the step */
       LCL_CookTime(&now, &cooked, &err);
     }
 
-    update_monotonic_time(&cooked, &last_select_ts);
-
     last_select_ts_raw = now;
     last_select_ts = cooked;
     last_select_ts_err = err;