libCom/osi: Warn if NTP time stops or decreases.
Add warnings if the NTP time provider sees NTP time stopping or going backwards. Should never happen, but...
This commit is contained in:
@@ -149,6 +149,7 @@ static void NTPTimeSync(void *dummy)
|
||||
epicsTimeStamp timeNow;
|
||||
epicsUInt32 tickNow;
|
||||
double diff;
|
||||
double ntpDelta;
|
||||
|
||||
status = osdNTPGet(×pecNow);
|
||||
tickNow = osdTickGet();
|
||||
@@ -163,13 +164,21 @@ static void NTPTimeSync(void *dummy)
|
||||
continue;
|
||||
}
|
||||
|
||||
epicsTimeFromTimespec(&timeNow, ×pecNow);
|
||||
ntpDelta = epicsTimeDiffInSeconds(&timeNow, &NTPTimePvt.syncTime);
|
||||
|
||||
if (ntpDelta <= 0.0 && NTPTimePvt.synchronized) {
|
||||
errlogPrintf("NTPTimeSync: NTP time not increasing, delta = %g\n",
|
||||
ntpDelta);
|
||||
NTPTimePvt.synchronized = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
NTPTimePvt.syncsFailed = 0;
|
||||
if (!NTPTimePvt.synchronized) {
|
||||
errlogPrintf("NTPTimeSync: Sync recovered.\n");
|
||||
}
|
||||
|
||||
epicsTimeFromTimespec(&timeNow, ×pecNow);
|
||||
|
||||
epicsMutexMustLock(NTPTimePvt.lock);
|
||||
diff = epicsTimeDiffInSeconds(&timeNow, &NTPTimePvt.clockTime);
|
||||
if (diff >= 0.0) {
|
||||
@@ -182,8 +191,7 @@ static void NTPTimeSync(void *dummy)
|
||||
NTPTimePvt.synchronized = 1;
|
||||
epicsMutexUnlock(NTPTimePvt.lock);
|
||||
|
||||
NTPTimePvt.tickRate = (tickNow - NTPTimePvt.syncTick) /
|
||||
epicsTimeDiffInSeconds(&timeNow, &NTPTimePvt.syncTime);
|
||||
NTPTimePvt.tickRate = (tickNow - NTPTimePvt.syncTick) / ntpDelta;
|
||||
NTPTimePvt.syncTick = tickNow;
|
||||
NTPTimePvt.syncTime = timeNow;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user