INIT_WORK传递参数的一个问题
下面是我编写的一个使用内核工作队列的模块:#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/interrupt.h>
#include <linux/workqueue.h>
static void intr_print(void* data)
{
printk("\n%s\n", (char*)data);
}
static struct work_struct works;
static int intr_init(void)
{
char list;
strlcpy(list, "Hello world", 20);
INIT_WORK(&works, (void*)intr_print, (void*)list);
schedule_work(&works);
return 0;
}
static void intr_exit(void)
{
printk("intr_exit");
}
module_init(intr_init);
module_exit(intr_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Shakespeare");
通过以下命令编译后:
#make(Makefile我已经编好了)
#insmod ./helloworld.ko
#rmmod helloworld
#dmesg
此时只能看到“intr_exit”函数中的“intr_exit”语句被打印出来了。而“INIT_WORK”传递过去的list没有打印出来。
按照INIT_WORK的参数说明,其最后一个参数应该是传递过去函数的参数,但为什么打印不出来呢?
页:
[1]