内核时间:
1:tick:
1 tick = 1/HZ秒
HZ是在make menuconfig里配置的,.config中的CONFIG_HZ,
6410设置的是200,其他取值一般为:100,200,250,300,1000,范围是100-1000
2:相对时间jiffies
jiffies记录着从开机到当前所经过的tick时间,在硬件定时器中断处理函数中对jiffies进行++
jiffies是 unsigned long 类型的,
所以当HZ = 1000的时候,49.7天的时候就会发生溢出,为了解决这个问题,可以使用jiffies64
u64 j64;
j64 = get_jiffies_64();
jiffes开机的时候等于-300 * HZ就相当于开机五分钟要进位一次,之后就是49.7天进位一次
内核中很多延迟和定时都是用jiffies进行判定
3:绝对时间,从1970年1月1日0时0分0秒开始到现在的时间。
可以存放绝对时间的值 中的timeval和timespec。
#include struct timeval val;最小单位微妙
struct timespec val;最小单位纳秒
do_gettimeofday(&val);printf("s = %ld us = %ld \n",val.tv_sec,val.tv_usec);
getnstimeofday(&val);print