虚拟机红帽企业版5
1.内核定时器节点
struct timer_list{
struct list_head entry;//定时器链指针
unsigned long expires;//到期时间
void (*function)(unsigned long);//回调函数
unsigned long data;//函数参数
struct timer_base_s *base;
........................
}
2. 初始化函数
void init_timer(struct timer_list *timer);
其中到期时间、回调函数、函数参数需要自己设置进去
3.启动函数
void add_timer(struct timer_list *timer);
4. 删除定时器
int del_timer(struct timer_list *timer);
5.修改expire
int mod_timer(struct timer_list *timer,unsigned long expires);
例子如下(可以运行):
#include<linux/kernel.h>
#include<linux/module.h>
#include<linux/init.h>
#include<linux/timer.h>
#include<asm/uaccess.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("LMJ");
struct timer_list timer;
void timer_function(int para)
{
printk("<0>Timer expired and para is %d\n",para);
}
int timer_init()
{
init_timer(&timer);
timer.data=10;
timer.expires=jiffies+20*HZ;
timer.function=timer_function;
add_timer(&timer);
return 0;
}
void timer_exit()
{
del_timer(&timer);
}
module_init(timer_init);
module_exit(timer_exit);
Makefile文件为
VER=$(shell uname -r)
obj-m:=timer.o
build:timer
timer:
make -C /lib/modules/$(VER)/build M=$(CURDIR) modules
clean:
make -C /lib/modules/$(VER)/build M=$(CURDIR) clean