定时器主要使用timer_list结构体
struct timer_list
{
struct list_head list;
unsigned long expires; //定时器到期时间
unsigned long data; //作为参数被传入定时器处理函数
void (*function)(unsigned long);
};
一: timer的API函数:
初始化定时器:
void init_timer(struct timer_list * timer);
增加定时器:
void add_timer(struct timer_list * timer);
删除定时器:
int del_timer(struct timer_list * timer);
修改定时器的expire:
int mod_timer(struct timer_list *timer, unsigned long expires);
第一步:声明一个定时器结构体,初始化、给结构体赋值并加入链表
如果只想定时器运行一次就停止,不用设置expires到期时间。
第二步:在需要使用定时器的地方使用mod_timer()函数
jiffies: 是系统时钟,全局变量,默认每隔10ms加1
HZ:是每S的频率,通过系统时钟换算出来,比如每隔10ms加1,那么HZ就等于100
jiffies+HZ/100表示更新定时器10ms超时 。超时后定时器就会去调用初始化时设定的函数
最后完善被设定的函数,在被定时器调用的函数中把想做的事情写出来即可。