Linux内核定时器

Linux内核定时器

打开内核sourceinsight工程,搜索timer.h,打开include/linux/time.h目录下的文件,ps:linux的头文件都是在某个include文件夹下,而linux/include目录下的头文件是用的最多的头文件,它一般是通用的头文件和硬件平台无关,而我们用的时候也是一般用这个目录下的头文件。

 

打开头文件

struct timer_list {

         struct list_head entry;

         unsigned long expires;   /*定时时间点的绝对时间点,到这个时间点就产生就执行定时器函数*/

 

         void(*function)(unsigned long);   //定时器计时到后执行的函数

         unsigned long data;          /*data是传给function函数的参数,很明显这里内核开发者故意把这两条语句放在一起。可知他们的关联性很强*/

 

         struct tvec_base *base;

#ifdef CONFIG_TIMER_STATS

         void*start_site;

         charstart_comm[16];

         int start_pid;

#endif

#ifdef CONFIG_LOCKDEP

         struct lockdep_map lockdep_map;

#endif

};

 

常用的几个定时器函数

初始化定时器

#define init_timer(timer)\

         init_timer_key((timer), NULL, NULL)

启动定时器

extern int mod_timer(struct timer_list*timer, unsigned long expires);

右击这个函数,GO TO CALLER看别人怎么调用这个函数

可以看到,第二个参数expires用到了HZ这个宏,HZ这个宏的值和具体平台相关,它是平台1秒钟内CPU时钟走过多少个时钟周期。

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值