workqueue用法

来源:互联网 发布:上海网络安全员培训 编辑:程序博客网 时间:2024/05/21 10:04

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

static struct workqueue_struct *queue = NULL;
static struct work_struct work;

static void work_callback(struct work_struct *data)
{
        printk(KERN_ALERT "work callback function./n");
}

static int __init test_init(void)
{
        queue = create_singlethread_workqueue("helloworld");
        if (!queue)
                goto err;

        INIT_WORK(&work, work_callback);
        queue_work(queue, &work);

        return 0;
err:
        return -1;
}

static void __exit test_exit(void)
{
        destroy_workqueue(queue);
}

MODULE_LICENSE("GPL");

module_init(test_init);
module_exit(test_exit);