- 论坛徽章:
- 0
|
本帖最后由 lamp_lighter 于 2014-08-01 14:45 编辑
RT
加入头文件sched.h后,在模块中调用了kernel_thread函数,发现模块编译时会出现WARNING。
模块安装也失败,显示"Unknown symbol in module"。
检查sched.h后发现,kernel_thread函数被定义为extern,所以猜想原因是不是没有放在源代码树中编译造成的。
放回源码树后用make编译也出现同样的问题。
下面是模块的初始化函数:
static int hello_init(void){
printk(KERN_ALERT "Hello World enter\n");
sema_init(&sem_first,0);
sema_init(&sem_second,1);
kernel_thread(thread_print_first,num[0],CLONE_KERNEL);
kernel_thread(thread_print_second,num[1],CLONE_KERNEL);
return 0;
}
第一次编译用的命令:sudo make -C /usr/src/linux-3.15.7 M=`pwd` modules
第二次编译用的命令:sudo make
请问这应该怎么解决?
-----------------------------------------------------------------------------------------------------
2L的方法:添加kthread.h后,用kthread_run(thread_print_first,num[0],"hello_1")代替原来的kernel_thread函数
|
|