当前位置:   article > 正文

linux驱动内核定时器_linux定时器回调函数

linux定时器回调函数

目录

一、初始化定时器

二、修改定时时间

三、定时器回调函数

四、删除定时器

五、短延时函数

六、定时器其它相关函数


一、初始化定时器

1、init_timer()函数,负责初始化 timer_list 变量

二、修改定时时间

1、mod_timer() 函数用于修改定时值,如果定时器还没有激活的话, 此函数会激活定时器

2、时间转换相关

        (1) jiffies:全局变量 jiffies 来记录系统从启动以来的系统节拍数;

        (2) jiffies转换成时间:

unsigned int jiffies_to_msecs(const unsigned long j)     jiffies转换成毫秒   
unsigned int jiffies_to_usecs(const unsigned long j)     jiffies转换成微秒
u64 jiffies_to_nsecs(const unsigned long j)     jiffies转换成纳秒

        (3) 时间转换成jiffies:

unsigned long msecs_to_jiffies(const unsigned int m)毫秒转换成jiffies
unsigned long usecs_to_jiffies(const unsigned int u)微秒转换成jiffies
unsigned long nsecs_to_jiffies(u64 n)纳秒转换成jiffies

三、定时器回调函数

1、当定时周期到了以后此函数就会被调用,因为内核定时器不是循环的定时器,执行一次以后就结束了,因此在此函数中,会再次调用了 mod_timer() 函数重新开启定时器;

2、定时器初始化的时候,通过 .data 指定定时器回调函数的参数;
 

四、删除定时器

1、发送指令删除定时器

2、执行出口函数的时候,记得删除定时器

3、del_timer_sync() 和 del_timer() 的区别:

        (1) del_timer_sync函数要完成的任务除了同del_timer一样从定时器队列中删除一个定时器对象外,还会确保当函数返回时系统中没有任何处理器正在执行定时器对象上的定时器函数;

        (2)而如果只是调用del_timer,那么当函数返回时,被删除的定时器对象的定时器函数可能在其他处理器上运行;

        (3) del_timer_sync() 不能使用在中断上下文;

五、短延时函数

void mdelay(unsigned long mseces)              毫秒延时
void udelay(unsigned long usecs)              微秒延时
void ndelay(unsigned long nsecs)              纳秒延时

六、定时器其它相关函数

1、add_timer() 函数

        一般在初始化函数,用于向内核注册定时器,注册以后,定时器就会开始运行;

gitee代码链接:gitee_linux_driver: 个人理解编写的linux驱动 - Gitee.com

github代码链接:Can/12_timer at master · CanvMo/Can · GitHub


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/183447
推荐阅读
相关标签
  

闽ICP备14008679号