[ctime]解决clock_gettime计算出来的nsec超过1sec的问题
This commit is contained in:
parent
1638241297
commit
e88a19467e
|
@ -677,8 +677,13 @@ int clock_gettime(clockid_t clockid, struct timespec *tp)
|
||||||
level = rt_hw_interrupt_disable();
|
level = rt_hw_interrupt_disable();
|
||||||
tick = rt_tick_get(); /* get tick */
|
tick = rt_tick_get(); /* get tick */
|
||||||
tp->tv_sec = _timevalue.tv_sec + tick / RT_TICK_PER_SECOND;
|
tp->tv_sec = _timevalue.tv_sec + tick / RT_TICK_PER_SECOND;
|
||||||
tp->tv_nsec = (_timevalue.tv_usec + (tick % RT_TICK_PER_SECOND) * MICROSECOND_PER_TICK) * 1000;
|
tp->tv_nsec = (_timevalue.tv_usec + (tick % RT_TICK_PER_SECOND) * MICROSECOND_PER_TICK) * 1000U;
|
||||||
rt_hw_interrupt_enable(level);
|
rt_hw_interrupt_enable(level);
|
||||||
|
if (tp->tv_nsec > 1000000000ULL)
|
||||||
|
{
|
||||||
|
tp->tv_nsec %= 1000000000ULL;
|
||||||
|
tp->tv_sec += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue