sys: fix clock stepping by integer number of seconds on Linux
The kernel requires in the ADJ_SETOFFSET | ADJ_NANO mode that the timex.time.tv_usec value is smaller than 10^9 nanosecond, which wasn't the case with a negative integer offset (e.g. inserted leap second).
This commit is contained in:
parent
1f0e6296c6
commit
c2f83bd8a4
1 changed files with 5 additions and 5 deletions
|
@ -193,12 +193,12 @@ TMX_ApplyStepOffset(double offset)
|
|||
struct timex txc;
|
||||
|
||||
txc.modes = ADJ_SETOFFSET | ADJ_NANO;
|
||||
if (offset >= 0) {
|
||||
txc.time.tv_sec = offset;
|
||||
} else {
|
||||
txc.time.tv_sec = offset - 1;
|
||||
}
|
||||
txc.time.tv_sec = offset;
|
||||
txc.time.tv_usec = 1.0e9 * (offset - txc.time.tv_sec);
|
||||
if (txc.time.tv_usec < 0) {
|
||||
txc.time.tv_sec--;
|
||||
txc.time.tv_usec += 1000000000;
|
||||
}
|
||||
|
||||
return adjtimex(&txc);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue