From 0dbfe020ad585c8ec4673e9b9812353a4b591fd0 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Fri, 16 Jun 2017 13:39:01 +0200 Subject: [PATCH] refclock: set default precision to precision of system clock --- doc/chrony.conf.adoc | 5 ++--- refclock.c | 8 ++------ 2 files changed, 4 insertions(+), 9 deletions(-) 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; -- 2.47.3