linux3.4.2内核定时器time_list的使用
2016-10-27 00:56
405 查看
在有些驱动程序中,我们需要用定时的功能去扫描一个硬件,或者说成去执行一个函数,那么我们可以采用内核动态定时器:
struct timer_list {
/*
* All fields that change during normal runtime grouped to the
* same cacheline
*/
struct list_head entry;
unsigned long expires;
struct tvec_base *base;
/* 定时器到期后,执行的函数 */
void (*function)(unsigned long);
unsigned long data;
int slack;
#ifdef CONFIG_TIMER_STATS
int start_pid;
void *start_site;
char start_comm[16];
#endif
#ifdef CONFIG_LOCKDEP
struct lockdep_map lockdep_map;
#endif
};1.定义一个内核定时器
2.初始化内核结构体
init_timer(&xxx_timer);
xxx_timer.function = xxx_timer_function;
add_timer(&buttons_timer);
xxx_timer.function = xxx_timer_function这里就是指定定时时间到时,去执行的函数,其实干脆就叫定时器中断得了。
3.修改定时器的值:
mod_timer(&xxx_timer, jiffies+HZ/100);
将定时器的值设置为当前的内核计时器值+HZ/100,意思就是10ms以后执行xxx_timer_function函数,干脆叫定时器中断服务程序。
jiffies是内核的一个时钟节拍,研究过操作系统的都知道,相当于是这个CPU只要在工作,这个值就在++。
struct timer_list {
/*
* All fields that change during normal runtime grouped to the
* same cacheline
*/
struct list_head entry;
unsigned long expires;
struct tvec_base *base;
/* 定时器到期后,执行的函数 */
void (*function)(unsigned long);
unsigned long data;
int slack;
#ifdef CONFIG_TIMER_STATS
int start_pid;
void *start_site;
char start_comm[16];
#endif
#ifdef CONFIG_LOCKDEP
struct lockdep_map lockdep_map;
#endif
};1.定义一个内核定时器
2.初始化内核结构体
init_timer(&xxx_timer);
xxx_timer.function = xxx_timer_function;
add_timer(&buttons_timer);
xxx_timer.function = xxx_timer_function这里就是指定定时时间到时,去执行的函数,其实干脆就叫定时器中断得了。
3.修改定时器的值:
mod_timer(&xxx_timer, jiffies+HZ/100);
将定时器的值设置为当前的内核计时器值+HZ/100,意思就是10ms以后执行xxx_timer_function函数,干脆叫定时器中断服务程序。
jiffies是内核的一个时钟节拍,研究过操作系统的都知道,相当于是这个CPU只要在工作,这个值就在++。
相关文章推荐
- Linux定时器的使用-内核驱动定时器
- linux 内核定时器使用模板
- linux 内核定时器 timer_list / mod_timer/init_timer
- linux之延时及内核定时器的使用
- linux之延时及内核定时器的使用
- Linux 内核链表 list.h 的使用
- Linux 内核list使用
- 移植完linux-3.4.2内核,启动系统后使用命令ifconfig -a查看网络配置,没有eth0
- Linux 内核定时器及使用方法
- 使用linux 内核中代码之--list
- linux 内核定时器 timer_list
- linux2.4.18内核定时器的使用
- 移植完linux-3.4.2内核,启动系统后使用命令ifconfig -a查看网络配置只有一个local backloop
- linux 内核定时器 timer_list详解
- linux驱动学习之内核定时器使用
- linux 内核定时器 timer_list详解
- linux 内核定时器 timer_list详解
- 内核定时器timer_list使用
- 内核定时器timer_list使用
- 内核定时器timer_list使用