内核定时器

在linux设备驱动编程中,可以利用linux内核中提供的一组函数和数据结构来完成定时触发工作或者完成某周期性的事物。
struct time_list{
	struct list_head  entry;
	unsigned long expires;
	void (*function)(unsigned long);
	unsigned long data;
	struct timer_base_s *base;
	...
}
内核在时钟中断发生后执行检测各定时器是否到期,到期后的定时器处理函数将作为软中断在底半部执行。
当定时器期满后,function()成员将被执行,expires是定时器到期的时间。

1.初始化定时器
void init_timer(struct timer_list *timer);
初始化timer_list的entry的next为NULL,并给base指针赋值。
TIMER_INITIALIZER(_function,_expires,_data)宏用于赋值定时器结构体的function,expires,data和base成员。

2.增加定时器
void add_timer(struct timer_list *timer);
将定时器加到内核动态定时器链表中。

3.删除定时器
int del_timer(struct timer_list *timer);
int del_timer_sync(struct timer_list *timer);del_timer的同步版,不能发生在中断上下文中。

4.修改定时器的expires
int mod_timer(struct timer_list *timer,unsigned long expires);
用于修改定时器的到期时间。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值