From 40d82675bd1ab4c59a15cba127e9669e6f8f16f8 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Fri, 7 May 2010 15:32:51 +0200 Subject: [PATCH] Make use of UTI_AdjustTimeval in slew handlers --- manual.c | 7 +++---- ntp_core.c | 5 +++-- refclock.c | 8 ++------ rtc_linux.c | 9 ++------- sourcestats.c | 14 +++----------- util.c | 8 ++++---- util.h | 2 +- 7 files changed, 18 insertions(+), 35 deletions(-) diff --git a/manual.c b/manual.c index a157632..3e4ce27 100644 --- 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; ilocal_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)); diff --git a/refclock.c b/refclock.c index f4f6c0c..64c3273 100644 --- a/refclock.c +++ b/refclock.c @@ -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 diff --git a/rtc_linux.c b/rtc_linux.c index 4f8723c..19b72f8 100644 --- a/rtc_linux.c +++ b/rtc_linux.c @@ -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; isample_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 45a6821..500ef70 100644 --- 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 645659f..8ee9d6e 100644 --- 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);