加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

Linux 内核定时器的实施

发布时间:2021-11-25 17:36:25 所属栏目:教程 来源:互联网
导读:定时器有关的头文件: #includelinux/timer.h #includelinux/jiffies.h 与定时器有关的结构体: struct timer_list { struct list_head entry; unsigned long expires;//定时间隔 jiffies+delay void (*function)(unsigned long);//定时器执行函数 unsigned

定时器有关的头文件:
 
#include<linux/timer.h>
 
#include<linux/jiffies.h>
 
 
与定时器有关的结构体:
 
struct timer_list {
 
struct list_head entry;
 
unsigned long expires;//定时间隔 jiffies+delay
 
void (*function)(unsigned long);//定时器执行函数
 
unsigned long data;//私有数据
 
struct tvec_base *base;
 
#ifdef CONFIG_TIMER_STATS
 
void *start_site;
 
char start_comm[16];
 
int start_pid;
 
#endif
 
#ifdef CONFIG_LOCKDEP
 
struct lockdep_map lockdep_map;
 
#endif
 
};
 
struct timer_list time;
 
一、初始化定时器:
init_timer(&(time));
 
二、设置time的值与返回函数:
 
time.data = (unsigned long)datap;
 
time.function = func_exec_timer;
 
(注:以上两步可以用函数 setup_timer(time, func_exec_timer , datap)代替,该函数实现赋值并初始化定时器 )
三、设置定时时间
 
time.expires = jiffies + 100;
 
四、注册内核定时器,将定时器添加到内核动态定时器的链表中
 
add_timer(&(time));
 
五、在定时器处理函数 func_exec_timer里,当处理完相应工作后,可能需要重新添加定时器,继续实现定时功能
    此时需要做的步骤为:
time.expires = jiffies + 100;
add_timer(&(time));
六、当使用完定时器时,要将定时器删除:
 
    del_timer(&time);

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读