2018年2月13日 星期二

Linux kernel - 創建一個5秒的timer

#include <linux/module.h>
#include <linux/init.h>

MODULE_LICENSE("Dual BSD/GPL");

#define TIMEOUT_VALUE (5 * HZ)

static struct timer_list tickfn;

static void sample_timeout(unsigned long arg)
{
 struct timer_list *tick = (struct timer_list *) arg;

 printk(KERN_INFO "ptr %p\n", tick);
}

static int __init sample_init(void)
{
 printk(KERN_INFO "driver loaded\n");

 init_timer(&tickfn);
 tickfn.function = sample_timeout;
 tickfn.data = (unsigned long) &tickfn;
 tickfn.expires = jiffies + TIMEOUT_VALUE;
 add_timer(&tickfn);

 return 0;
}

static void __exit sample_exit(void)
{
 int ret;
 ret = del_timer_sync(&tickfn);
 
 printk(KERN_INFO "driver unloaded (%d)\n", ret);
}

module_init(sample_init);
module_exit(sample_exit);

沒有留言:

張貼留言