您的位置:首页 > 运维架构 > Linux

Linux内核中工作队列的使用work_struct,delayed_work【转】

2017-12-28 15:16 846 查看
本文转载自: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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: