|
下面是网上摘抄的一段代码,我看了一下似乎有点问题,见下:
#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_handler(struct work_struct *data)
{
printk(KERN_ALERT "work handler function.\n");
}
static int __init test_init(void)
{
queue = create_singlethread_workqueue("helloworld"); /*创建一个单线程的工作队列*/
if (!queue)
goto err;
INIT_WORK(&work, work_handler);
schedule_work(&work);
return 0;
err:
return -1;
}
static void __exit test_exit(void)
{
destroy_workqueue(queue);
}
上面的test_init部分是不是没有实现作者的意图?因为 schedule_work(&work);是使用默认的系统events工作队列,而作者原意是想使用自己创建的queue,应该是调用函数queue_work(queue,&work),,是不是这样啊,呜呜~~~~高手们解释一下吧,多谢! |
|