From: Miroslav Lichvar Date: Fri, 7 May 2010 13:32:51 +0000 (+0200) Subject: Make use of UTI_AdjustTimeval in slew handlers X-Git-Tag: 1.25-pre1~82 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=40d82675bd1ab4c59a15cba127e9669e6f8f16f8;p=thirdparty%2Fchrony.git Make use of UTI_AdjustTimeval in slew handlers --- diff --git a/manual.c b/manual.c index a1576324..3e4ce27d 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 f4f6c0cd..64c32739 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 4f8723c0..19b72f84 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 45a6821f..500ef703 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 645659fe..8ee9d6ed 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);