- 定时器原理:每次定时器时间到的时候都会运行定时器处理函数,同时重新设定定时器的定时值
- 函数:
1.定时器结构体类型:
struct timer_list
{
struct list_head list; 定时器链表的入口
unsigned long expires; 定时时间
void (*function)(unsigned long ); 定时器处理函数
unsigned long data; 传给定时器处理函数的长整型参数
}
2.setup_timer
功能描述:初始化定时器
参数:第一个参数为定时器结构体对象指针,第二个参数为定时器处理函数,第三个参数为传递给处理函数
的参数。
3.add_timer
功能描述:将定时器加入到内核中,同时启动定时器
参数:定时器结构体对象指针
4.del_timer
功能描述:将内核从定时器中删除
参数:定时器结构体对象指针
5.mod_timer
功能描述:修改定时器定时时间(用在处理函数中)
参数:第一个参数为定时器结构体对象指针,第二个参数为定时时间。
- 简单应用
#include <linux/module.h>
#include <linux/timer.h>
#include <linux/jiffies.h>
struct timer_list mytimer; 1.定义一个定时器
static void myfunc(unsigned long data) 4.定时器的定时处理函数
{
printk("%s/n", (char *)data);
mod_timer(&mytimer, jiffies + 2*HZ); 5.修改定时器的定时时间
}
static int __init mytimer_init(void)
{
setup_timer(&mytimer, myfunc, (unsigned long)"Hello, world!"); 2.初始化定时器
mytimer.expires = jiffies + HZ;
add_timer(&mytimer); 3,将定时器加入到内核中并启动定时器
return 0;
}
static void __exit mytimer_exit(void)
{
del_timer(&mytimer); 6.从内核中删除定时器
}
module_init(mytimer_init);
module_exit(mytimer_exit);