一.linux内核定时器
硬件为内核提供了一个系统定时器来计算流逝的时间(即基于未来时间点的计时方式,以当前时刻为计时开始的起点,以未来的某一时刻为计时的终点),内核只有在系统定时器的帮助下才能计算和管理时间,但是内核定时器的精度并不高,所以不能作为高精度定时器使用。并且内核定时器的运行没有周期性,到达计时终点后会自动关闭。如果要实现周期性定时,就要在定时处理函数中重新开启定时器。
二.内核定时器数据结构
struct timer_list {
struct list_head entry, /*定时器列表*/
unsigned long expires, /*定时器到期时间,单位为节拍数*/
void (*function) (unsigned long), /*定时器处理函数*/
unsigned long data,/*作为参数被传入定时器处理函数*/
struct timer_base_s *base,
...
};
三.内核定时器API
add_timer:
作用:
add_timer函数用于向Linux内核注册定时器,使用add_timer函数向内核注册定时器以后,定时器就会开始运行。
参数:
timer:要注册的定时器。
返回值:
无
del_timer:
作用:
del_timer函数用于删除一个定时器,不管定时