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
|
@subsubsection waitsync
|
||||||
The @code{waitsync} command waits for @code{chronyd} to synchronise.
|
The @code{waitsync} command waits for @code{chronyd} to synchronise.
|
||||||
|
|
||||||
Up to three optional arguments can be specified, the first is the maximum
|
Up to four optional arguments can be specified, the first is the maximum
|
||||||
number of tries in 10 second intervals before giving up and returning a
|
number of tries before giving up and returning a non-zero error code. When 0
|
||||||
non-zero error code. When 0 is specified, or there are no arguments, the
|
is specified, or there are no arguments, the number of tries will not be
|
||||||
number of tries will not be limited.
|
limited.
|
||||||
|
|
||||||
The second and third arguments are the maximum allowed remaining correction of
|
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
|
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
|
and @code{Skew} fields. If not specified or zero, the value will not be
|
||||||
checked.
|
checked.
|
||||||
|
|
||||||
|
The fourth argument is the interval in which the check is repeated. The
|
||||||
|
interval is 10 seconds by default.
|
||||||
|
|
||||||
An example is
|
An example is
|
||||||
|
|
||||||
@example
|
@example
|
||||||
waitsync 60 0.01
|
waitsync 60 0.01
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
which will wait up to about 10 minutes for @code{chronyd} to synchronise to a
|
which will wait up to about 10 minutes (60 times 10 seconds) for @code{chronyd}
|
||||||
source and the remaining correction to be less than 10 milliseconds.
|
to synchronise to a source and the remaining correction to be less than 10
|
||||||
|
milliseconds.
|
||||||
@c }}}
|
@c }}}
|
||||||
@c {{{ writertc
|
@c {{{ writertc
|
||||||
@node writertc command
|
@node writertc command
|
||||||
|
|
16
client.c
16
client.c
|
@ -1191,7 +1191,7 @@ give_help(void)
|
||||||
"makestep\0Correct clock by stepping immediately\0"
|
"makestep\0Correct clock by stepping immediately\0"
|
||||||
"makestep <threshold> <updates>\0Configure automatic clock stepping\0"
|
"makestep <threshold> <updates>\0Configure automatic clock stepping\0"
|
||||||
"maxupdateskew <skew>\0Modify maximum valid skew to update frequency\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"
|
"Wait until synchronised in specified limits\0"
|
||||||
"\0\0"
|
"\0\0"
|
||||||
"Time sources:\0\0"
|
"Time sources:\0\0"
|
||||||
|
@ -2313,14 +2313,20 @@ process_cmd_waitsync(char *line)
|
||||||
CMD_Request request;
|
CMD_Request request;
|
||||||
CMD_Reply reply;
|
CMD_Reply reply;
|
||||||
uint32_t ref_id, a, b, c, d;
|
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;
|
int ret = 0, max_tries, i;
|
||||||
|
struct timeval timeout;
|
||||||
|
|
||||||
max_tries = 0;
|
max_tries = 0;
|
||||||
max_correction = 0.0;
|
max_correction = 0.0;
|
||||||
max_skew_ppm = 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);
|
request.command = htons(REQ_TRACKING);
|
||||||
|
|
||||||
|
@ -2347,7 +2353,9 @@ process_cmd_waitsync(char *line)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ret && (!max_tries || i < max_tries) && !quit) {
|
if (!ret && (!max_tries || i < max_tries) && !quit) {
|
||||||
sleep(10);
|
UTI_DoubleToTimeval(interval, &timeout);
|
||||||
|
if (select(0, NULL, NULL, NULL, &timeout))
|
||||||
|
break;
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue