add_timer函数功能描述:函数add_timer( )根据参数struct timer_list变量的expires值将定时器插入到合适的动态定时器的链表中,并激活定时器。函数首先检测定时器是否处于挂起状态,如果挂起给出警告信息并退出,否则插入合适的定时器链表。
add_timer文件包含
#include<linux/timer.h>
add_timer函数定义
在内核源码中的位置:linux-3.19.3/kernel/time/timer.c
函数定义格式:
void add_timer(struct timer_list *timer)
add_timer输入参数说明
此函数的输入参数是struct timer_list类型的变量,定义参见文件linux-3.19.3/include/linux/timer.h,用于存放动态定时器,其定义如下:
struct timer_list {
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
};
其中:
- 字段
entry
:用来将多个定时器连接成一条双向循环链表。 - 字段
expires
:给出定时器到期时间,时间用节拍表示,其值为系统启动以来所经过的节拍数,当其值小于或等于jiff ies的值时,就说明定时器到期或终止。 - 字段
base
:用来指定此定时器在哪个CPU上执行。 - 字段
function
:定时器到期时执行函数的地址。 - 字段
data
:指定传递给定时器函数的参数。
add_timer返回参数说明
- 函数add_timer( )返回值是void类型的变量,即不返回任何结果。
add_timer实例解析
此函数必须和函数del_timer( )配对使用,不能单独使用,所以测试程序及结果分析参考函数del_timer( )分析文档的实例解析部分。