]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
Make use of UTI_AdjustTimeval in slew handlers
authorMiroslav Lichvar <mlichvar@redhat.com>
Fri, 7 May 2010 13:32:51 +0000 (15:32 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Fri, 7 May 2010 16:52:05 +0000 (18:52 +0200)
manual.c
ntp_core.c
refclock.c
rtc_linux.c
sourcestats.c
util.c
util.h

index a1576324240b6e2958533ed31ea5ea589c37994b..3e4ce27dd2583ca28624fb67cc9bfefb08732fe3 100644 (file)
--- a/manual.c
+++ b/manual.c
@@ -232,12 +232,11 @@ slew_samples(struct timeval *raw,
              int is_step_change,
              void *not_used)
 {
-  double elapsed, delta_time;
+  double delta_time;
   int i;
   for (i=0; i<n_samples; i++) {
-    UTI_DiffTimevalsToDouble(&elapsed, cooked, &samples[i].when);
-    delta_time = elapsed * dfreq - doffset;
-    UTI_AddDoubleToTimeval(&samples[i].when, delta_time, &samples[i].when);
+    UTI_AdjustTimeval(&samples[i].when, cooked, &samples[i].when, &delta_time,
+        dfreq, doffset);
     samples[i].offset += delta_time;
   }
   return;
index 7ec73d130f070e5e0349308765c333517631d172..1fe9771439ca7b7b64c4cb30da9090d97af4a077 100644 (file)
@@ -1630,14 +1630,15 @@ void
 NCR_SlewTimes(NCR_Instance inst, struct timeval *when, double dfreq, double doffset)
 {
   struct timeval prev;
+  double delta;
   prev = inst->local_rx;
-  UTI_AdjustTimeval(&inst->local_rx, when, &inst->local_rx, dfreq, doffset);
+  UTI_AdjustTimeval(&inst->local_rx, when, &inst->local_rx, &delta, dfreq, doffset);
 #ifdef TRACEON
   LOG(LOGS_INFO, LOGF_NtpCore, "rx prev=[%s] new=[%s]",
       UTI_TimevalToString(&prev), UTI_TimevalToString(&inst->local_rx));
 #endif
   prev = inst->local_tx;
-  UTI_AdjustTimeval(&inst->local_tx, when, &inst->local_tx, dfreq, doffset);
+  UTI_AdjustTimeval(&inst->local_tx, when, &inst->local_tx, &delta, dfreq, doffset);
 #ifdef TRACEON
   LOG(LOGS_INFO, LOGF_NtpCore, "tx prev=[%s] new=[%s]",
       UTI_TimevalToString(&prev), UTI_TimevalToString(&inst->local_tx));
index f4f6c0cdc23703aca43eb04d7e7304c507560818..64c3273915796330ba74634b3375873ee66594a3 100644 (file)
@@ -859,16 +859,12 @@ static void
 filter_slew_samples(struct MedianFilter *filter, struct timeval *when, double dfreq, double doffset)
 {
   int i;
-  double elapsed, delta_time, prev_offset;
+  double delta_time, prev_offset;
   struct timeval *sample;
 
   for (i = 0; i < filter->used; i++) {
     sample = &filter->samples[i].sample_time;
-
-    UTI_DiffTimevalsToDouble(&elapsed, when, sample);
-    delta_time = elapsed * dfreq - doffset;
-    UTI_AddDoubleToTimeval(sample, delta_time, sample);
-
+    UTI_AdjustTimeval(sample, when, sample, &delta_time, dfreq, doffset);
     prev_offset = filter->samples[i].offset;
     filter->samples[i].offset -= delta_time;
 #if 0
index 4f8723c0af20c25102402bdc9bc1916acfe78b8f..19b72f842d733d939ea85996f5d812815d3911a4 100644 (file)
@@ -307,17 +307,12 @@ slew_samples
  void *anything)
 {
   int i;
-  double elapsed;
   double delta_time;
   double old_seconds_fast, old_gain_rate;
 
   for (i=0; i<n_samples; i++) {
-    UTI_DiffTimevalsToDouble(&elapsed, cooked, system_times + i);
-
-    delta_time = elapsed * dfreq - doffset;
-
-    UTI_AddDoubleToTimeval(system_times + i, delta_time, system_times + i);
-
+    UTI_AdjustTimeval(system_times + i, cooked, system_times + i, &delta_time,
+        dfreq, doffset);
   }
 
   old_seconds_fast = coef_seconds_fast;
index 3ce5127d9f5e18e54afed17aed8a28c0a9448c2b..b338d37eb71390a31858a1d5d867b238a637a66a 100644 (file)
@@ -635,7 +635,6 @@ void
 SST_SlewSamples(SST_Stats inst, struct timeval *when, double dfreq, double doffset)
 {
   int n, i;
-  double elapsed;
   double delta_time;
   struct timeval *sample, prev;
   double prev_offset, prev_freq;
@@ -645,13 +644,7 @@ SST_SlewSamples(SST_Stats inst, struct timeval *when, double dfreq, double doffs
   for (i=0; i<n; i++) {
     sample = &(inst->sample_times[i]);
     prev = *sample;
-#if 0
-    UTI_AdjustTimeval(sample, when, sample, dfreq, doffset);
-    /* Can't easily use this because we need to slew offset */
-#endif
-    UTI_DiffTimevalsToDouble(&elapsed, when, sample);
-    delta_time = elapsed * dfreq - doffset;
-    UTI_AddDoubleToTimeval(sample, delta_time, sample);
+    UTI_AdjustTimeval(sample, when, sample, &delta_time, dfreq, doffset);
     prev_offset = inst->offsets[i];
     inst->offsets[i] += delta_time;
 #ifdef TRACEON
@@ -662,12 +655,11 @@ SST_SlewSamples(SST_Stats inst, struct timeval *when, double dfreq, double doffs
   }
 
   /* Do a half-baked update to the regression estimates */
-  UTI_DiffTimevalsToDouble(&elapsed, when, &(inst->offset_time));
   prev = inst->offset_time;
-  delta_time = elapsed * dfreq - doffset;
-  UTI_AddDoubleToTimeval(&(inst->offset_time), delta_time, &(inst->offset_time));
   prev_offset = inst->estimated_offset;
   prev_freq = inst->estimated_frequency;
+  UTI_AdjustTimeval(&(inst->offset_time), when, &(inst->offset_time),
+      &delta_time, dfreq, doffset);
   inst->estimated_offset += delta_time;
   inst->estimated_frequency -= dfreq;
 
diff --git a/util.c b/util.c
index 45a6821f16bfb75936bd20ec5223640407c50b10..500ef7036b29a5d4525f93e133719c526105a62a 100644 (file)
--- a/util.c
+++ b/util.c
@@ -442,13 +442,13 @@ UTI_TimeToLogForm(time_t t)
 /* ================================================== */
 
 void
-UTI_AdjustTimeval(struct timeval *old_tv, struct timeval *when, struct timeval *new_tv, double dfreq, double doffset)
+UTI_AdjustTimeval(struct timeval *old_tv, struct timeval *when, struct timeval *new_tv, double *delta_time, double dfreq, double doffset)
 {
-  double elapsed, delta_time;
+  double elapsed;
 
   UTI_DiffTimevalsToDouble(&elapsed, when, old_tv);
-  delta_time = elapsed * dfreq - doffset;
-  UTI_AddDoubleToTimeval(old_tv, delta_time, new_tv);
+  *delta_time = elapsed * dfreq - doffset;
+  UTI_AddDoubleToTimeval(old_tv, *delta_time, new_tv);
 }
 
 /* ================================================== */
diff --git a/util.h b/util.h
index 645659fe8e00988b2aa3b51dea5170b60940cde7..8ee9d6ed4cbe4a106131050ca13102a2526cfb9f 100644 (file)
--- a/util.h
+++ b/util.h
@@ -89,7 +89,7 @@ extern int UTI_CompareIPs(IPAddr *a, IPAddr *b, IPAddr *mask);
 extern char *UTI_TimeToLogForm(time_t t);
 
 /* Adjust time following a frequency/offset change */
-extern void UTI_AdjustTimeval(struct timeval *old_tv, struct timeval *when, struct timeval *new_tv, double dfreq, double doffset);
+extern void UTI_AdjustTimeval(struct timeval *old_tv, struct timeval *when, struct timeval *new_tv, double *delta, double dfreq, double doffset);
 
 
 extern void UTI_TimevalToInt64(struct timeval *src, NTP_int64 *dest);