Platform: IMX6DL
OS: Android 4.4
Kernel branch: 3.0.35
网上有很多不同版本说 do_gettimeofday()精度是ms,有的又说是us,那么正确答案到底是什么呢?
还有,系统的tick只有ms的精度,如果是us精度,那么它又是如何做到的呢?
先看do_gettimeofday()源代码:
do_gettimeofday -> //timekeeping.c
getnstimeofday ->
timekeeping_get_ns //先获取ns,再转换成us.
OS: Android 4.4
Kernel branch: 3.0.35
网上有很多不同版本说 do_gettimeofday()精度是ms,有的又说是us,那么正确答案到底是什么呢?
还有,系统的tick只有ms的精度,如果是us精度,那么它又是如何做到的呢?
先看do_gettimeofday()源代码:
do_gettimeofday -> //timekeeping.c
getnstimeofday ->
timekeeping_get_ns //先获取ns,再转换成us.
static inline s64 timekeeping_get_ns(void)
{
cycle_t cycle_now, cycle_delta;
struct clocksource *clock;
/* read clocksource: */
clock = timekeeper.clock;
/*读取当前时间*/
cycle_now = clock->read(clock);
/*计算上一次和现在的时间差。*/
/* calculate the delta since the last update_wall_time: */
cycle_delta = (cycle_now - clock->cycle_last) & clock->mask;
/* return delta convert to nanoseconds using ntp adjusted mult. */
return clocksource_cyc2ns(cycle_delta, tim