timer

linux kernel 定时器的编写,分为五个步骤:

  • 定义与初始化定时器

  • 设置超时时间与超时处理函数

  • 添加定时器

  • 超时处理函数

  • 删除定时器

1. 定义与初始化定时器

struct timer_list timer;

init_timer(&timer);

2. 设置超时时间与超时处理函数

timer.function = timer_function; // 超时处理函数
timer.data = (unsigned long)data;// 传递给 超时处理函数 的参数
timer.expires = jiffies + msecs_to_jiffies(2000); // 超时时间,2秒

4. 添加定时器

添加定时器后,定时器就开始计时

add_timer(&timer);

3. 超时处理函数

linux kernel 定时器只能执行一次,如果需要重复,需要在 超时处理函数 调用mod_timer()重新设置超时时间并启动即可

void timer_function(unsigned long data)
{
    mod_timer(&timer, jiffies + msecs_to_jiffies(2000)); // 修改超时时间,2秒
}

4. 删除定时器

del_timer(&timer);

Last updated

Was this helpful?