我是靠谱客的博主 俭朴钢铁侠,最近开发中收集的这篇文章主要介绍内核变量——Jiffies,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

全局变量jiffies表示自系统启动以来系统产生的嘀嗒数。当启动时,内核初始化该变量为0。每次时钟中断就会增1,所以系统运行时间可以计算为:jiffies/HZ秒。

       jiffies变量定义如下:

extern unsigned long volatile jiffies;

jiffies转换为秒:(jiffies / HZ)。将秒换算为jiffies(seconds*HZ)

       jiffies比较相关的宏

#define time_after(unknown, known) ((long)(known) - (long)(unknown) < 0)

#define time_before(unknown, known) ((long)(unknown) - (long)(known) < 0)

#define time_after_eq(unknown, known) ((long)(unknown) - (long)(known) >= 0)

#define time_before_eq(unknown, known) ((long)(known) - (long)(unknown) >= 0)

使用例子:

unsigned long timeout = jiffies + HZ/2;

/* timeout in 0.5s */

/* ... */

 

if (time_before(jiffies, timeout)) {

 

/* we did not time out, good ... */

 

} else {

 

/* we timed out, error ... */

 

}

 

代码参考:

typedef struct {
    unsigned long jiffies;
}os_time_t;

static inline osal_result os_clock_get_time(os_time_t *time){
    time->jiffies = jiffies;
    return OSAL_SUCCESS;
}

static inline osal_result os_clock_get_time_diff_msecs( os_time_t *time,
                                                        unsigned long *msecs)
{
    *msecs = (jiffies - time->jiffies) * 1000 / HZ;
    return OSAL_SUCCESS;
}

static inline osal_result os_clock_get_time_diff_secs(  os_time_t *time,
                                                        unsigned long *secs)
{
    *secs = (jiffies - time->jiffies) / HZ;
    return OSAL_SUCCESS;
}


最后

以上就是俭朴钢铁侠为你收集整理的内核变量——Jiffies的全部内容,希望文章能够帮你解决内核变量——Jiffies所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部