我正在尝试开发一个必须执行线程的内核模块。
编译模块时遇到错误。
这是模块:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/kthread.h> // for threads
static struct task_struct *thread1;
int thread_fn(void) {
while(1) {
printk("Thread_fuction is running ...\n");
msleep(2000);
}
return 0;
}
int thread_init(void) {
char our_thread[8]="thread1";
printk(KERN_INFO "in init");
thread1 = kthread_create(thread_fn,NULL,our_thread);
if((thread1)) {
printk(KERN_INFO "in if");
wake_up_process(thread1);
}
return 0;
}
void thread_cleanup(void) {
int ret;
ret = kthread_stop(thread1);
if(!ret)
printk(KERN_INFO "Thread stopped");
}
MODULE_LICENSE("GPL");
module_init(thread_init);
module_exit(thread_cleanup);
这是错误:
thread.c:25:26:错误:传递了“ kthread_create_on_node”的参数1 来自不兼容的指针类型[-Werror = incompatible-pointer-types] 线程1 = kthread_create(thread_fn,NULL,我们的线程);
有人可以帮助我解决问题吗?