리눅스 커널의 시스템 콜 함수 부분인데요 꼭 쫌 도와주세요 ㅜㅠ
시스템 콜 부분인데요
31 에서 40 까지
dereferencing pointer to incomplete type
라는 오류가 납니다...
수정해도 왜 이런 오류가 나는 지 알 수 없었습니다.
꼭 쫌 도와 주세요
#include
02 #include
03 #include
04 #include
05 #include
06
07 #define __NR_getvminfo 259
08
09 asmlinkage int (*saved_entry)(void);
10 extern void *sys_call_table[];
11
12 struct vminfo {
13 unsigned long startcode;
14 unsigned long endcode;
15 unsigned long startdata;
16 unsigned long enddata;
17 unsigned long startbrk;
18 unsigned long brk;
19 unsigned long startstack;
20
21 };
22
23 asmlinkage int sys_getvminfo(int pid, struct vminfo *uvm)
24 {
25
26 struct vminfo vm;
27 struct task_struct *t;
28 struct mm_struct *mm;
29
30 t = find_task_by_pid(pid);
31 mm = t->active_mm;
32
33 vm.startcode = mm->start_code;
34 vm.endcode = mm->end_code;
35 vm.startdata = mm->start_data;
36 vm.enddata = mm->end_data;
37 vm.startbrk = mm->start_brk;
38 vm.brk = mm->brk;
39 vm.endenv = mm->env_end;
40 vm.startstack = mm->start_stack;[/b]41
42 copy_to_user(uvm, &vm, sizeof(struct vminfo));
43 return 0;
44 }
45
46 int module_start()
47 {
48
49 saved_entry = sys_call_table[__NR_getvminfo];
50 sys_call_table[__NR_getvminfo] = sys_getvminfo;
51 return 0;
52 }
53
54 void module_end(void)
55 {
56 sys_call_table[__NR_getvminfo] = saved_entry;
57 }
58
59 module_init(module_start);
60 module_exit(module_end);
61
62 MODULE_LICENSE("GPL");


댓글 달기