diff --git a/src/os/posix/ostimer.c b/src/os/posix/ostimer.c index 54ad418fc..1b85ad79d 100644 --- a/src/os/posix/ostimer.c +++ b/src/os/posix/ostimer.c @@ -285,9 +285,10 @@ int32 OS_Posix_TimeBaseAPI_Impl_Init(void) } /* - * Calculate microseconds per tick - Rounding UP - * - If the ratio is not an integer, this will choose the next higher value - * - The result is guaranteed not to be zero. + * Calculate microseconds per tick + * - If the ratio is not an integer, this will round to the nearest integer value + * - This is used internally for reporting accuracy, + * - TicksPerSecond values over 2M will return zero */ OS_SharedGlobalVars.MicroSecPerTick = (1000000 + (OS_SharedGlobalVars.TicksPerSecond / 2)) / OS_SharedGlobalVars.TicksPerSecond; diff --git a/src/os/shared/osapi-common.c b/src/os/shared/osapi-common.c index dde63d3b8..2b7ecb803 100644 --- a/src/os/shared/osapi-common.c +++ b/src/os/shared/osapi-common.c @@ -64,6 +64,7 @@ int32 OS_API_Init(void) { int32 return_code = OS_SUCCESS; uint32 idtype; + uint32 microSecPerSec; if (OS_SharedGlobalVars.Initialized != false) { @@ -161,6 +162,14 @@ int32 OS_API_Init(void) return_code = OS_ERROR; } + microSecPerSec = OS_SharedGlobalVars.MicroSecPerTick * OS_SharedGlobalVars.TicksPerSecond; + + if ( microSecPerSec != 1000000 ) + { + OS_DEBUG("Error: Microsecs per sec value of %lu does not equal 1000000 (MicroSecPerTick: %ld TicksPerSecond: %ld)\n", + (unsigned long) microSecPerSec, (long) OS_SharedGlobalVars.MicroSecPerTick, (long) OS_SharedGlobalVars.TicksPerSecond); + } + return(return_code); } /* end OS_API_Init */