引言:linux从内核2.6.16开始引入了高精度定时器,达到ns级别。自此,内核拥有两套并行计时器,低精度和高精度。如果高精度没有开启,即使使用高精度函数,默认使用的仍旧是低精度。
高精度:
虽然内核已经支持高精度,但是对于不少产品而言,由于内核是裁剪的,配置的时候并没有加入编译进去,虽然对应的内核源码中有相关代码。如果想支持,那么可以进入内核源码,执行make menuconfig。去查看当前系统是否支持高精度,(备注:因为里面选项比较多,还可以直接去查看编译好的.config文件,看里面是否有CONFIG_HIGH_RES_TIMERS,如果有,就通过make menuconfig开启,没有的话,就是不支持),是否真正启用,可以在内核中对相应宏进行打印。
低精度:
(定时精度和频率HZ相关,精度为(1000/HZ ) ms)
#include <linux/time.h>
void do_gettimeofday(struct timeval *tv);//获取精确时间函数