Linux内核timer使用

内核中用一套timer函数的:主要是围绕struct timer_list来做的。

struct timer_list:

其中重要的成员:
unsigned long data:传递到超时处理函数的参数,主要在多定时器同时使用时,区别是哪个timer超时。
unsigned long expires:超时时间,以jiffies来衡量。
如设置超时时间为1s, timer.expires = jiffies + HZ
设置超时时间为10ms, timer.expires = jiffies + HZ/100
void (*function)(unsigned long):超时处理函数。

重要函数和宏定义: 

DEFINE_TIMER(_name, _function, _expires, _data):一次性定义一个timer_list

init_timer(struct timer_list*):定时器初始化函数; 
del_timer/add_timer(struct timer_list*):往系统删除/添加定时器; 
mod_timer(struct timer_list *, unsigned long jiffier_timerout):修改定时器的超时时间为jiffies_timerout;
timer_pending(struct timer_list *):定时器状态查询,如果在系统的定时器列表中则返回1,否则返回0; 

使用:

定义:
static struct timer_list buttons_timer;

初始化,添加,设置处理函数
init_timer(&buttons_timer);
buttons_timer.function = buttons_timer_function;
//buttons_timer.expires  = 0;
add_timer(&buttons_timer);  

一步到位定义:
static DEFINE_TIMER(buttons_timer, buttons_timer_function, 0, 0);

static void buttons_timer_function(unsigned long data)
{
....
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值