From: Miroslav Lichvar Date: Fri, 16 Jun 2017 11:39:01 +0000 (+0200) Subject: refclock: set default precision to precision of system clock X-Git-Tag: 3.2-pre1~49 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0dbfe020ad585c8ec4673e9b9812353a4b591fd0;p=thirdparty%2Fchrony.git refclock: set default precision to precision of system clock --- diff --git a/doc/chrony.conf.adoc b/doc/chrony.conf.adoc index 9a20e561..c9cd9a40 100644 --- a/doc/chrony.conf.adoc +++ b/doc/chrony.conf.adoc @@ -505,9 +505,8 @@ algorithm. Increasing the delay is useful to avoid having no majority in the source selection or to make it prefer other sources. The default is 1e-9 (1 nanosecond). *precision* _precision_::: -This option sets the refclock precision (in seconds). The default is 1e-6 (1 -microsecond) for SHM refclock, and 1e-9 (1 nanosecond) for SOCK, PPS and PHC -refclocks. +This option sets the precision of the reference clock (in seconds). The default +value is the estimated precision of the system clock. *maxdispersion* _dispersion_::: Maximum allowed dispersion for filtered samples (in seconds). Samples with larger estimated dispersion are ignored. By default, this limit is disabled. diff --git a/refclock.c b/refclock.c index e89b4851..6959e5b8 100644 --- a/refclock.c +++ b/refclock.c @@ -173,16 +173,12 @@ RCL_AddRefclock(RefclockParameters *params) if (strcmp(params->driver_name, "SHM") == 0) { inst->driver = &RCL_SHM_driver; - inst->precision = 1e-6; } else if (strcmp(params->driver_name, "SOCK") == 0) { inst->driver = &RCL_SOCK_driver; - inst->precision = 1e-9; } else if (strcmp(params->driver_name, "PPS") == 0) { inst->driver = &RCL_PPS_driver; - inst->precision = 1e-9; } else if (strcmp(params->driver_name, "PHC") == 0) { inst->driver = &RCL_PHC_driver; - inst->precision = 1e-9; } else { LOG_FATAL("unknown refclock driver %s", params->driver_name); return 0; @@ -207,8 +203,8 @@ RCL_AddRefclock(RefclockParameters *params) inst->lock_ref = params->lock_ref_id; inst->offset = params->offset; inst->delay = params->delay; - if (params->precision > 0.0) - inst->precision = params->precision; + inst->precision = LCL_GetSysPrecisionAsQuantum(); + inst->precision = MAX(inst->precision, params->precision); inst->pulse_width = params->pulse_width; inst->timeout_id = -1; inst->source = NULL;