Linux系统下内核定时器的用法
内核定时器的用法其实很简单
1.需要定义一个timer_list变量timer、先初始化timer
init_timer(&timer);
2.对timer的相关参数赋值
timer.function = fun;
timer.expires = jiffies + TIMER_DELAY;
3.向内核添加定时器
add_timer(&timer);
在定时器时间到的时候,会执行fun,如果继续定时,可以通过在fun中执行
mod_timer(&timer, jiffies + TIMER_DELAY);
4.在不需要的时候通过调用
del_timer(&timer);
比如下面的例子
............
static struct timer_list my_timer;
static void my_timer_function(unsigned long data)
{
mod_timer(&my_timer, jiffies+HZ/100);
}
static int sixth_drv_init(void)
{
init_timer(&my_timer);
my_timer.function = my_timer_function;
//my_timer.expires = 0;
add_timer(&my_timer);
}
static void sixth_drv_exit(void)
{
del_timer(&my_timer);
}
module_init(sixth_drv_init);
module_exit(sixth_drv_exit);
MODULE_LICENSE("GPL");