do_gettimeofday调用getnstimeofday,最关键的是timerkeeper.xtime,这是kernel的墙上时间,xtime的更新是在kernel下clockevent注册的时钟中断,只要kernel时钟中断正常,xtime时间就会不断被更新。
但是由于kernel一般是1/100s产生一次时钟中断(kernel配置默认为100HZ),当然对于tickless sysytem,时钟中断不固定,但是精度都不够高。
为了提高时钟精度,调用timekeeping_get_ns,使用已注册clocksource提供的read函数,来获取距上次update xtime的时间,来作为xtime的补充时间,提高精度。
参考:https://blog.csdn.net/skyflying2012/article/details/44623515