赞
踩
目录
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。