Kernel中用于在某个时间点执行任务或周期任务:
1.定时器任务列表
-
#include
-
-
struct timer_list{
-
struct list_head entry;
-
unsigned long expires;//超时时间
-
void(*function)(unsigned long);//超时处理函数
-
unsigned long data;//传递给处理函数
-
struct tvec_base *base;
-
}
2. 创建定时器
-
struct timer_list*ptmr = (struct timer_list*)kmalloc(sizeof(struct timer_list),GFP_ATOMIC);
-
if(!ptmr){
-
printk(KERN_ERROR"Fail to create timer!!!\n");
-
return;
-
}
-
init_timer(ptmr);//初始化定时器
-
ptmr->data = xxx;//设置传递给超时处理函数参数
-
ptmr->function = xxx;//设置超时处理函数
-
ptmr->expires = jiffies + xxx * HZ / 1000;//当前时间后xxx ms 后超时
-
//注册定时器
-
add_timer(ptmr);
若是周期任务,只需在超时出事函数退出前重新设定下一次超时时间并注册定时器。
3.销毁定时器
-
//销毁定时器
-
del_timer(ptmr);
-
kfree(ptmr);
阅读(926) | 评论(0) | 转发(0) |