Linux内核的定时器使用
Linux内核中提供一个定时器机制,我们只需要申请一个 struct time_list timing;
系统初始化定时器 init_timer( &timing)
struct timer_list {
struct list_head entry;
//定时值基于jiffies
unsigned long expires;
//定时器内部值
struct tvec_base *base;
//定时器处理函数
void (*function)(unsigned long);
//定时器处理函数参数
unsigned long data;
……
};
可以看到timer_list中,expires是超时时间,jiffires是当前系统时间,function是超时之后执行的函数句柄,data是function的参数
在声明和初始化了timing之后,需要去对timing的data, function, expires赋值
struct timer_list timing; init_timer(&timing); timing.data = (unsigned long) something; timing.function = polling_handler; timing.expires = jiffies + 2 * HZ;
之后自己去定义void polling_handler(unsigned long data)
在需要开启定时器的地方,add_timer(&timing);
最后关闭定时器,del_timer(&timing);
周期性的执行只需在polling_handler中加入add_timer(&timing)即可
简单的定时器使用就是这样

浙公网安备 33010602011771号