Linux 内核定时器的使用

2014-11-24 11:10:53 · 作者: · 浏览: 1

定时器有关的头文件:



#include


#include


与定时器有关的结构体:



struct timer_list {


struct list_head entry;


unsigned long expires;//定时间隔 jiffies+delay


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


unsigned long data;//私有数据


struct tvec_base *base;


#ifdef CONFIG_TIMER_STATS


void *start_site;


char start_comm[16];


int start_pid;


#endif


#ifdef CONFIG_LOCKDEP


struct lockdep_map lockdep_map;


#endif


};


struct timer_list time;



init_timer(&(time));


二、设置time的值与返回函数:



time.data = (unsigned long)datap;


time.function = func_exec_timer;


setup_timer(time,






func_exec_timer






, datap)代替,该函数实现赋值并初始化定时器




三、设置定时时间



time.expires = jiffies + 100;


四、注册内核定时器,将定时器添加到内核动态定时器的链表中


add_timer(&(time));







func_exec_timer里,当处理完相应工作后,可能需要重新添加定时器,继续实现定时功能



此时需要做的步骤为:









time.expires = jiffies + 100;









add_timer(&(time));




六、当使用完定时器时,要将定时器删除:


del_timer(&time);