client: make waitsync check interval configurable
This commit is contained in:
parent
6a9c756cf0
commit
ca5a791d09
2 changed files with 22 additions and 10 deletions
|
@ -4687,10 +4687,10 @@ with the @code{rtcautotrim} directive (@pxref{rtcautotrim directive}).
|
|||
@subsubsection waitsync
|
||||
The @code{waitsync} command waits for @code{chronyd} to synchronise.
|
||||
|
||||
Up to three optional arguments can be specified, the first is the maximum
|
||||
number of tries in 10 second intervals before giving up and returning a
|
||||
non-zero error code. When 0 is specified, or there are no arguments, the
|
||||
number of tries will not be limited.
|
||||
Up to four optional arguments can be specified, the first is the maximum
|
||||
number of tries before giving up and returning a non-zero error code. When 0
|
||||
is specified, or there are no arguments, the number of tries will not be
|
||||
limited.
|
||||
|
||||
The second and third arguments are the maximum allowed remaining correction of
|
||||
the system clock and the maximum allowed skew (in ppm) as reported by the
|
||||
|
@ -4698,14 +4698,18 @@ the system clock and the maximum allowed skew (in ppm) as reported by the
|
|||
and @code{Skew} fields. If not specified or zero, the value will not be
|
||||
checked.
|
||||
|
||||
The fourth argument is the interval in which the check is repeated. The
|
||||
interval is 10 seconds by default.
|
||||
|
||||
An example is
|
||||
|
||||
@example
|
||||
waitsync 60 0.01
|
||||
@end example
|
||||
|
||||
which will wait up to about 10 minutes for @code{chronyd} to synchronise to a
|
||||
source and the remaining correction to be less than 10 milliseconds.
|
||||
which will wait up to about 10 minutes (60 times 10 seconds) for @code{chronyd}
|
||||
to synchronise to a source and the remaining correction to be less than 10
|
||||
milliseconds.
|
||||
@c }}}
|
||||
@c {{{ writertc
|
||||
@node writertc command
|
||||
|
|
16
client.c
16
client.c
|
@ -1191,7 +1191,7 @@ give_help(void)
|
|||
"makestep\0Correct clock by stepping immediately\0"
|
||||
"makestep <threshold> <updates>\0Configure automatic clock stepping\0"
|
||||
"maxupdateskew <skew>\0Modify maximum valid skew to update frequency\0"
|
||||
"waitsync [max-tries [max-correction [max-skew]]]\0"
|
||||
"waitsync [max-tries [max-correction [max-skew [interval]]]]\0"
|
||||
"Wait until synchronised in specified limits\0"
|
||||
"\0\0"
|
||||
"Time sources:\0\0"
|
||||
|
@ -2313,14 +2313,20 @@ process_cmd_waitsync(char *line)
|
|||
CMD_Request request;
|
||||
CMD_Reply reply;
|
||||
uint32_t ref_id, a, b, c, d;
|
||||
double correction, skew_ppm, max_correction, max_skew_ppm;
|
||||
double correction, skew_ppm, max_correction, max_skew_ppm, interval;
|
||||
int ret = 0, max_tries, i;
|
||||
struct timeval timeout;
|
||||
|
||||
max_tries = 0;
|
||||
max_correction = 0.0;
|
||||
max_skew_ppm = 0.0;
|
||||
interval = 10.0;
|
||||
|
||||
sscanf(line, "%d %lf %lf", &max_tries, &max_correction, &max_skew_ppm);
|
||||
sscanf(line, "%d %lf %lf %lf", &max_tries, &max_correction, &max_skew_ppm, &interval);
|
||||
|
||||
/* Don't allow shorter interval than 0.1 seconds */
|
||||
if (interval < 0.1)
|
||||
interval = 0.1;
|
||||
|
||||
request.command = htons(REQ_TRACKING);
|
||||
|
||||
|
@ -2347,7 +2353,9 @@ process_cmd_waitsync(char *line)
|
|||
}
|
||||
|
||||
if (!ret && (!max_tries || i < max_tries) && !quit) {
|
||||
sleep(10);
|
||||
UTI_DoubleToTimeval(interval, &timeout);
|
||||
if (select(0, NULL, NULL, NULL, &timeout))
|
||||
break;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue