Я компилирую модуль ядра в 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 хуга» любому множество больше ошибок, когда также включены linux/module.h и linux/kthread.h. Как только я прокомментирую эти два файла, модуль компилируется, но дает ошибку связи, которая «waitpid» не определена.
Почему sys/wait.h хорошо компилируется с linux/kthread.h и linux/module.h? Кто-нибудь сталкивался с этой проблемой раньше?
Любая помощь будет оценена по достоинству.
Как выглядит ваш make-файл? –