2017-12-01 11 views
0

리눅스에 moudle을 추가하고 싶습니다. 이 내 코드 내 일부입니다왜이 오류 'init_task'가 선언되지 않았습니까 (이 함수에서 처음 사용합니까?)?

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; 

는하지만이 얻을 :이 선언되지 않은 때문에

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

답변

0

합니다. init_task에 대한 선언이 있습니까?

또는 다음 리눅스 커널 4.11 이후

extern struct task_struct init_task; 
0

를 사용 init_task.c에서 그것을 사용하려면, 변수 init_task은하지 linux/sched.h에, linux/sched/task.h에 선언되어있다. patch description에서 :

'init_task는'정말 핵심 스케줄러의 API의 일부하지만 스케줄러 및 프로세스 관리 사이의 포크() 인터페이스의 일부가 아닙니다.

선언을 이동하십시오.