我正在編譯一個與linux創建kthreads相關的內核模塊來實現並行性,但我被困在編譯問題。sys/wait.h和sys/kthread.h不能一起編譯
這裏是我的代碼:
#include <linux/init.h>
#include <linux/errno.h>
#include <asm/byteorder.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/kthread.h>
#include <linux/types.h>
#include <sys/wait.h>
void threadfn1()
{
int j;
for(j = 0; j < 1000000; j++)
printk(KERN_INFO "I AM THREAD 1 %d\n",j);
}
void threadfn2()
{
int j;
for(j = 0; j < 1000000; j++)
printk(KERN_INFO "I AM THREAD 2 %d\n",j);
}
static int __init abc_init(void)
{
struct task_struct *t1 = kthread_run(threadfn1, NULL, "thread1");
struct task_struct *t2 = kthread_run(threadfn2, NULL, "thread2");
printk(KERN_INFO "HELLO WORLD\n");
waitpid(-1,NULL,0); // whatever the parameters of waitpid() are
}
static void __exit abc_fini(void)
{
printk(KERN_INFO "BYE WORLD\n");
}
module_init(abc_init);
module_exit(abc_fini);
我的代碼的問題是,當我編譯我的內核模塊時許,SYS/wait.h給出像「的一些strcut XYZ重新定義」任何許多編譯錯誤更多的錯誤,當linux/module.h和linux/kthread.h也包括在內。只要我註釋掉這兩個文件,模塊編譯得很好,但給出了一個鏈接錯誤,「waitpid」未定義。
爲什麼sys/wait.h不能很好地與linux/kthread.h和linux/module.h一起編譯?有沒有人遇到過這個問題?
任何幫助,將不勝感激。
你的makefile是什麼樣的? – 2010-11-06 07:00:53