当前位置: 技术问答>linux和unix
请教高手:如何在module中访问sys_call_table
来源: 互联网 发布时间:2015-01-31
本文导语: 帮同学作课程设计。要编写一个新的call 我按书上的做法,但是不行。请教了。 说说书上的做法: (我是看的The Linux Kernel Module Programming Guide by Peter Jay Salzman and Ori Pomerantz。) 书上先定义 extern void *sys_call...
帮同学作课程设计。要编写一个新的call
我按书上的做法,但是不行。请教了。
说说书上的做法:
(我是看的The Linux Kernel Module Programming Guide by Peter Jay Salzman and Ori Pomerantz。)
书上先定义
extern void *sys_call_table[];
然后说:the kernel will fill it up
我理解为insmod的时候会自动的使程序中的变量sys_call_table指向实际的sys_call_table
但是当我编译成功后输入:
insmod mysyscall.o
系统显示:
unresolve symbol sys_call_table.
请问这是怎么回事?如何解决?
我按书上的做法,但是不行。请教了。
说说书上的做法:
(我是看的The Linux Kernel Module Programming Guide by Peter Jay Salzman and Ori Pomerantz。)
书上先定义
extern void *sys_call_table[];
然后说:the kernel will fill it up
我理解为insmod的时候会自动的使程序中的变量sys_call_table指向实际的sys_call_table
但是当我编译成功后输入:
insmod mysyscall.o
系统显示:
unresolve symbol sys_call_table.
请问这是怎么回事?如何解决?
|
如果你使用的是redhat linux 8.0的话,你很不幸,因为该内核将sys_call_table引出符号取消了!除非你自己动手将内核修改过来,否则不能修改sys_call_table内的内容。
|
实时下面的形势
typedef int (*sysfun_p)(void);
extern sysfun_p sys_call_table[];
typedef int (*sysfun_p)(void);
extern sysfun_p sys_call_table[];