Don't lose remaining adjtime in initiate_slew
initiate_slew is called also from set_frequency which doesn't read
the remaining adjtime. This wasn't a problem before commit 8c0f3f4
as offset_register was 0.0 and initiate_slew immediately returned.
This commit is contained in:
parent
3a9e13445f
commit
dd4fb511a5
1 changed files with 7 additions and 10 deletions
17
sys_linux.c
17
sys_linux.c
|
@ -264,6 +264,13 @@ initiate_slew(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Cancel any standard adjtime that is running */
|
||||||
|
offset = 0;
|
||||||
|
if (TMX_ApplyOffset(&offset) < 0) {
|
||||||
|
CROAK("adjtimex() failed in accrue_offset");
|
||||||
|
}
|
||||||
|
offset_register -= (double) offset / 1.0e6;
|
||||||
|
|
||||||
if (fabs(offset_register) < MAX_ADJUST_WITH_ADJTIME) {
|
if (fabs(offset_register) < MAX_ADJUST_WITH_ADJTIME) {
|
||||||
/* Use adjtime to do the shift */
|
/* Use adjtime to do the shift */
|
||||||
offset = our_lround(1.0e6 * -offset_register);
|
offset = our_lround(1.0e6 * -offset_register);
|
||||||
|
@ -383,19 +390,9 @@ abort_slew(void)
|
||||||
static void
|
static void
|
||||||
accrue_offset(double offset)
|
accrue_offset(double offset)
|
||||||
{
|
{
|
||||||
long toffset;
|
|
||||||
|
|
||||||
/* Add the new offset to the register */
|
/* Add the new offset to the register */
|
||||||
offset_register += offset;
|
offset_register += offset;
|
||||||
|
|
||||||
/* Cancel any standard adjtime that is running */
|
|
||||||
toffset = 0;
|
|
||||||
if (TMX_ApplyOffset(&toffset) < 0) {
|
|
||||||
CROAK("adjtimex() failed in accrue_offset");
|
|
||||||
}
|
|
||||||
|
|
||||||
offset_register -= (double) toffset / 1.0e6;
|
|
||||||
|
|
||||||
if (!fast_slewing) {
|
if (!fast_slewing) {
|
||||||
initiate_slew();
|
initiate_slew();
|
||||||
} /* Otherwise, when the fast slew completes, any other stuff
|
} /* Otherwise, when the fast slew completes, any other stuff
|
||||||
|
|
Loading…
Reference in a new issue