||
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef
MODULE
#define MODULE
#endif
#include
<linux/init.h>
#include <linux/module.h>
#include
<linux/kernel.h>
#include <linux/fs.h>
#include
<linux/sched.h>
#include <linux/kthread.h>
#include
<asm/param.h>
#include <linux/timer.h>
void domywork(unsigned long i){
printk(KERN_ALERT "************do do
do!*************\n");
}
static struct timer_list mylist;
static int hello_init(void)
{
printk(KERN_ALERT "**************task
start******************\n");
init_timer(&mylist);
mylist.expires = jiffies + 2*HZ;
mylist.data = 0;
mylist.function
= domywork;
add_timer(&mylist);
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT
"****************task end*******************\n");
del_timer(&mylist);
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Lichie");
/**********************************/
注意:当一个定时器函数即将要被运行前,内核会把相应的定时器从内核链表中删除。如果删除的时候,struct timer_list变量不能找到会造成死机!
|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )
GMT+8, 2024-5-16 04:09 , Processed in 0.052217 second(s), 6 queries , Gzip On, Redis On.
Powered by Discuz! X3.5 Licensed
© 2001-2023 Discuz! Team.