1 /* 内核定时器的使用 设定5秒后调用 定时器处理函数
2 * 并向处理函数传递 参数 3 (eg 常用与传递设备结构体指针)
3 * 可惜 只能调用一次服务处理程序
4 * 下一步将整合 工作队列 循环调用 处理函数 获取数据
5 */
6 #include<linux/kernel.h>
7 #include<linux/module.h>
8 #include<linux/init.h>
9 #include<linux/timer.h> /*timer*/
10 #include<asm/uaccess.h> /*jiffies*/
11
12 MODULE_LICENSE("GPL");
13 MODULE_AUTHOR("David Xie");
14 MODULE_DESCRIPTION("Timer Module");
15
16
17 struct timer_list timer;
18
19 void timer_function(int para)
20 {
21 printk("<0> Timer Expired and para is %d !!\n", para);
22 }
23 int timer_init()
24 {
25 printk("<0> timer_init!\n");
26 init_timer(&timer);
27 timer.data = 3;
28 timer.expires = jiffies + (5 * HZ);
29 timer.function = timer_function;
30 add_timer(&timer);
31
32 return 0;
33 }
34
35 void timer_exit()
36 {
37 printk("<0>timer exit!\n");
38 del_timer(&timer);
39 }
40
41 module_init(timer_init);
42 module_exit(timer_exit);
43
2 * 并向处理函数传递 参数 3 (eg 常用与传递设备结构体指针)
3 * 可惜 只能调用一次服务处理程序
4 * 下一步将整合 工作队列 循环调用 处理函数 获取数据
5 */
6 #include<linux/kernel.h>
7 #include<linux/module.h>
8 #include<linux/init.h>
9 #include<linux/timer.h> /*timer*/
10 #include<asm/uaccess.h> /*jiffies*/
11
12 MODULE_LICENSE("GPL");
13 MODULE_AUTHOR("David Xie");
14 MODULE_DESCRIPTION("Timer Module");
15
16
17 struct timer_list timer;
18
19 void timer_function(int para)
20 {
21 printk("<0> Timer Expired and para is %d !!\n", para);
22 }
23 int timer_init()
24 {
25 printk("<0> timer_init!\n");
26 init_timer(&timer);
27 timer.data = 3;
28 timer.expires = jiffies + (5 * HZ);
29 timer.function = timer_function;
30 add_timer(&timer);
31
32 return 0;
33 }
34
35 void timer_exit()
36 {
37 printk("<0>timer exit!\n");
38 del_timer(&timer);
39 }
40
41 module_init(timer_init);
42 module_exit(timer_exit);
43