sys_linux: always call TMX_SetLeap() in set_leap()

The optimization avoiding unnecessary setting of the kernel leap status
can cause a problem when something outside chronyd sets the status to
the new expected value. There will be no TMX_SetLeap() call which would
update the saved status and the kernel status will be overwritten with
the old (incorrect) value in a later TMX_*() call.

Always call TMX_SetLeap() to save the new value and for the log message
selection just check if a leap second has been applied.
This commit is contained in:
Miroslav Lichvar
2015-08-26 14:45:36 +02:00
parent d73394dde1
commit 770db1fe02
3 changed files with 5 additions and 14 deletions

View File

@@ -31,7 +31,7 @@ int TMX_ResetOffset(void);
int TMX_SetFrequency(double *freq, long tick);
int TMX_GetFrequency(double *freq, long *tick);
int TMX_SetLeap(int leap);
int TMX_GetLeap(int *leap, int *applied);
int TMX_GetLeapApplied(int *applied);
int TMX_SetSync(int sync, double est_error, double max_error);
int TMX_TestStepOffset(void);
int TMX_ApplyStepOffset(double offset);