mindmap
定时机制API
init_timer
mod_timer
add_timer
del_timer
current_kernel_time
msecs_to_jiffies
jiffies_to_msecs
usecs_to_jiffies
init_timer
init_timer函数功能描述
- 函数init_timer( )用于初始化结构体struct timer_list变量,将此结构体变量存储的定时器插入到系统内核定时器模块中,并确定由哪个CPU处理。
init_timer函数定义
init_timer(struct timer_list *timer);
init_timer输入参数说明
- 此函数的输入参数是struct timer_list类型的变量,此变量用于存放动态定时器。
init_timer返回参数说明
- 函数init_timer()返回值是void类型的变量,即不返回任何结果。
init_timer实例解析
struct timer_list timer;
init_timer(&timer);
timer.function = function; /* 设置定时处理函数 */
timer.expires=jffies + msecs_to_jiffies(2000);/* 超时时间 2 秒 */
timer.data = (unsigned long)&dev; /* 将设备结构体作为参数 */
setup_timer
setup_timer函数功能描述
- 与init_timer()类似,初始化timer
setup_timer函数定义
setup_timer(struct timer_list *timer, static void (*fn),unsigned long *data);
setup_timer输入参数说明
- 第一个参数是struct timer_list类型的变量,此变量用于存放动态定时器,是即将要被初始化的对象。
- 第二个参数是定时器到期时将要执行的函数,用于给定时器变量的function字段赋值。
- 第三个参数用于给定时器变量的data字段赋值。
setup_timer返回参数说明
- 函数setup_timer()返回值是void类型的变量,即不返回任何结果。
setup_timer实例解析
struct gpio_desc{
int gpio;
int irq;
char *name;
int key;
struct timer_list key_timer;
};
static struct gpio_desc gpios[2] = {
{131, 0, "gpio_100ask_1", 1, },
{132, 0, "gpio_100ask_2", 2, },
};
setup_timer(&gpios[i].key_timer, fn_name, (unsigned long)&gpios[i]);
add_timer
add_timer函数功能描述
- 根据参数struct timer_list变量的expires值将定时器插入到合适的动态定时器的链表中,并激活定时器。
add_timer函数定义
void add_timer(struct timer_list *timer)
add_timer输入参数说明
- 函数add_timer()入参strcut timer_list结构体
add_timer返回参数说明
- 函数add_timer( )返回值是void类型的变量,即不返回任何结果。
add_timer实例解析
add_timer(&gpios[i].key_timer);
mod_timer
mod_timer函数功能描述
- 主要用于更改动态定时器的到期时间,从而可更改定时器的执行顺序,相当于执行如下代码序列:
del_timer(timer);
timer->expires=expires;
add_timer(timer);
mod_timer函数定义
int mod_timer(struct timer_list *timer, unsigned long expires)
mod_timer输入参数说明
- 第一个输入参数是struct timer_list类型的变量,用于存放动态定时器,其定义及详细信息参考add_timer( )分析文档的输入参数说明部分。
- 第二个参数是传入的新的定时器到期节拍数,把此参数赋给定时器的字段expires。
mod_timer返回参数说明
- 返回0:调用 mod_timer 函数前定时器未被激活;
- 返回1:调用 mod_timer 函数前定时器已被激活。
mod_timer实例解析
/* 1HZ = 1s = 1000ms HZ/5 = 200ms */
mod_timer(&gpio_desc->key_timer, jiffies + HZ/5);
或者
mod_timer(&gpio_desc->key_timer, jiffies + msecs_to_jiffies(2000));/* 超时时间2s*/
del_timer
del_timer函数功能描述
- 函数del_timer( )用于将处于非活动状态的定时器从动态定时器链表中删除。
del_timer函数定义
void add_timer(struct timer_list *timer)
del_timer输入参数说明
- 此函数的输入参数是struct timer_list类型的变量,此变量用于存放动态定时器。
del_timer返回参数说明
- 返回1:说明删除的定时器处于激活状态,删除成功;
- 返回0:说明删除的定时器已经处于到期函数执行状态或已经不存在,删除无效。
current_kernel_time
current_kernel_time函数功能描述
- 用于获得当前系统内核的时间,该时间是距离1970年1月1日0时0分0秒的时间,是用秒和纳秒表示的。
current_kernel_time函数定义
struct timespec current_kernel_time(void)
current_kernel_time输入参数说明
- 该函数不需要任何参数。
current_kernel_time返回参数说明
- 函数返回值类型是一个struct timespec类型的结构体变量。
struct timespec
{
__kernel_time_t tv_sec; /*秒数 */
long tv_nsec; /*纳秒数*/
};
msecs_to_jiffies
msecs_to_jiffies函数功能描述
- 将毫秒转换为 jiffies 类型
msecs_to_jiffies函数定义
long msecs_to_jiffies(const unsigned int m);
msecs_to_jiffies输入参数说明
- 需要转化jiffies的毫秒数
msecs_to_jiffies输出参数说明
- 返回 jiffies 数
jiffies_to_msecs
jiffies_to_msecs函数功能描述
- jiffies 转毫秒
jiffies_to_msecs函数定义
int jiffies_to_msecs(const unsigned long j);
jiffies_to_msecs输入参数说明
- 返回 jiffies 数
jiffies_to_msecs输出参数说明
- 需要转化jiffies的毫秒数
usecs_to_jiffies
usecs_to_jiffies函数功能描述
微秒转 jiffies
usecs_to_jiffies函数定义
long usecs_to_jiffies(const unsigned int u);
usecs_to_jiffies输入参数说明
- 需要转化jiffies的微秒数
usecs_to_jiffies输出参数说明
- 返回 jiffies 数