linux 定时器Timer编程

2011-12-30 13:42:24 · 作者: · 浏览: 1556

#include <linux/module.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/ioctl.h>
#include <linux/init.h>
#include <linux/errno.h>
                                                                            
#include <linux/timer.h>
                                                                            
MODULE_LICENSE("GPL");
struct timer_list mytimer;
void mytimer_ok(unsigned long expires)
{
        int i;

         mod_timer(&mytimer,jiffies+30);
        for(i=0;i<10;i++)
        printk("Wahahaha...My timer is OK \n");    
                                                                            
}
                                                                            
static int __init hello_init(void)
{
        printk("Hello modules init!\n");

        init_timer(&mytimer);                      //首先要初始化一个定时器
        mytimer.expires =jiffies+500; //500=5s           //定时器的到期时间,间隔大约5s ,如果不用上jiffies,例如100,那么就只会运行一次,说明到100就到期了,那么就mytimer_ok就不会在工作了,但是该定时器还是开着的.
        mytimer.function = mytimer_ok;                     //定时器到了要开始的动作函数
        add_timer(&mytimer);                       //加入定时器
        return 0;
}
static void __exit hello_exit (void)
{
        del_timer(&mytimer);
        printk("Hello module exit!\n");
                                                                            
}
module_init(hello_init);
module_exit(hello_exit);