linux时间管理 之 jiffies

1、jiffies

     又称时钟滴答,是一个全局变量,它的值在系统引导的时候初始化为0,在时钟中断初始化完成后,每次时钟中断发生,在时钟中断处理例程中都会将jiffies的值 +1。

     jiffies_64:为了解决jiffies溢出问题,更重要的是通过jiffies_64可以知道自开机以来的时间间隔。

2、HZ

     HZ表示时钟中断发生的频率。可以在.config的配置文件中改写。1/HZ是每个jiffies+1的时间间隔。

3、通过jiffies可以进行时间的比较和时间转换

4、时间比较

     32位                                                    64位

     time_after(a,b)                                    time_after64(a,b)

     time_before(a,b)                                 time_before64(a,b)

     time_after_eq(a,b)                              time_after_eq64(a,b)

     time_before_eq(a,b)                           time_before_eq64

     time_in_range(a,b,c)                           time_in_range(a,b,c)

5、时间转换

     a、jiffies和msecs以及usecs的转换:

     unsigned int jiffies_to_msecs(const unsigned long);

     unsigned int jiffies_to_usecs(const unsigned long);

     unsigned long msecs_to_jiffies(const unsigned int m);

     unsigned long usecs_to_jiffies(const unsigned int u);

    b、jiffies和timespec以及timeval的转换

     在用户空间,应用程序更多的使用秒以及毫秒等时间形式,而在内核中多使用jiffes。

     内核定义了struct timeval 和 struct timespec 两种数据结构

     struct timespec {

               __kernel_time_t tv_sec;

               long              tv_nsec;

      }

     struct timeval {

               __kernel_time_t          tv_sec;

              __kernel_suseconds_t  tv_usec;

    }

    相互转换函数:

     unsigned long timespec_to_jiffies(const struct timespec *value);

     void jiffies_to_timespec(const unsigned long jiffies, struct timespec *value);

     unsigned long timeval_to_jiffies(const struct timeval *value);

     void jiffies_to_timeval(const unsigned long jiffies, struct timeval *value);

6、要注意的是jiffies的精度问题。如果HZ = 1000,则jiffies增加1代表1ms。

     如果要用到更高精度的始终,要用其他的硬件机制。


 


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值