1.内核定时器的原理
-
如何获取当前的时间
在使用定时器的时候可以通过jiffies来获取当前的时间,jiffies内核时钟节拍数,
从内核启动这一刻起,内核时钟节拍数就一直在增加。
-
定时器每加1代表走多长时间
jiffies的频率可以通过make menuconfig进行选配,选配之后在.config中保存着
CONFIG_HZ=100
在开发板内核上定时器每增加1代表走10ms
在ubuntu内核上定时器每增加1代表走4ms
2.定时器的API
#include <linux/timer.h>
1.分配对象
struct timer_list {
struct hlist_node entry; //构成内核链表的成员
unsigned long expires; //定时的时间 jiffies + 100;
void (*function)(struct timer_list *); //定时器的处理函数
u32 flags; //0
};
struct timer_list mytimer;
2.对象的初始化
mytimer.expires = jiffies+100; //定时1s
timer_setup(&