2017-12-01 3 views
0

Ich möchte zu Linux ein Moudle hinzufügen; Das ist mein Teil meines Code:Warum bekomme ich diesen Fehler 'init_task' nicht deklariert (erste Verwendung in dieser Funktion)?

1 #include<linux/module.h> 
2 #include<linux/kernel.h> 
3 #include<linux/init.h> 
4 #include<linux/sched.h> 
5 #include<linux/list.h>  
6 
7 MODULE_LICENSE("GPL"); 
8 
9 static int sched_fun_init(void) 
10 { 
11  struct task_struct *p,*ts = &init_task; 
12  struct list_head *pos; 

Aber ich bekomme diese:

error: ‘init_task’ undeclared (first use in this function) 
    struct task_struct *p,*ts = &init_task; 

Antwort

0

Weil es nicht angemeldeter ist. Haben Sie eine Erklärung für init_task?

Oder es von init_task.c verwenden möchten dann

extern struct task_struct init_task; 
0

Da Linux-Kernel 4.11, verwenden variable init_task in linux/sched/task.h, nicht in linux/sched.h erklärt. Von patch description:

‚init_task‘ ist wirklich nicht Teil des Kern Scheduler-APIs, sondern Teil die fork() Schnittstelle zwischen dem Planer und Prozessmanagement.

Verschieben Sie die Deklarationen.

Verwandte Themen