- 论坛徽章:
- 0
|
内核定时器被组织成双向链表,这就意味着我们可以添加任意个定时器。定时器包含它的超时值(jiffiers)和超时要调用的函数。定时器需要接收一个参数这个参数和和处理函数指针放在一个数据结构。
定时器的数据格式如下(定义在)
struct timer_list
{
struct timer_list *next;
struct timer_list *prev;
unsigned long expires;
unsigned long data;
void (*function)(unsigned long);
void int running;
}
若当前的jiffiers的值大于expires时,就会执行function,expires是当前的jiffiers的值加上所要延迟的值,一般是
delay*HZ,HZ是系统1秒钟产生的时间中断的次数,一般系统10ms产生一次时间中断,jiffies加1。(jiffiers定义在;HZ定义在;)
操作定时器的函数:
void init_timer(struct timer_list *timer);
作用:将next,prev指针清0;
void add_time(struct timer_list *timer);
作用:将定时器放到活动的定时器队列中去;
int mod_timer(struct timer_list *timer,unsigned long expires)
作用:用于更改定时器的超时时间;
int del_timer(struct timer_list *timer)
作用:删除定时器,将定时器在超时前将定时器删除。
int del_timer_sync(struct timer_list *time)
作用:
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/29387/showart_228958.html |
|