Linux内核中工作队列的使用work_struct,delayed_work【转】
本文转载自:http://blog.csdn.net/zahuopuboss/article/details/43268983
初始化工作队列
调度工作队列
取消工作队列
#include <linux/module.h> #include <linux/sched.h> #include <linux/kthread.h> #include <linux/err.h> #include <linux/delay.h> static struct work_struct test_work; static struct delayed_work test_delayed_work; static void test_func(struct work_struct *work) { printk("%s, %d, %ld\n", __func__, __LINE__, jiffies); } static void test_delayed_func(struct work_struct *work) { printk("%s, %d, %ld\n", __func__, __LINE__, jiffies); } static int __init test_init(void) { int ret; printk("%s, %d, %ld\n", __func__, __LINE__, jiffies); INIT_WORK(&test_work, test_func); ret = schedule_work(&test_work); INIT_DELAYED_WORK(&test_delayed_work, test_delayed_func); ret = schedule_delayed_work(&test_delayed_work, 5 * HZ); printk("%s, %d, %ld\n", __func__, __LINE__, jiffies); return 0; } static void __exit test_exit(void) { printk("%s, %d, %ld\n", __func__, __LINE__, jiffies); cancel_work_sync(&test_work); printk("%s, %d, %ld\n", __func__, __LINE__, jiffies); cancel_delayed_work_sync(&test_delayed_work); printk("%s, %d, %ld\n", __func__, __LINE__, jiffies); } module_init(test_init); module_exit(test_exit); MODULE_AUTHOR("tony"); MODULE_DESCRIPTION("test"); MODULE_LICENSE("GPL"); MODULE_ALIAS("test");