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");