当前位置: 技术问答>linux和unix
问个关于内核模块和系统调用的问题
来源: 互联网 发布时间:2015-06-23
本文导语: 用加载模块的方法创建自己的系统调用,其中必须用到sys_call_table[]=my_syscall 但是在insmod的时候说 unresolved symbol sys_call_table, 系统是2.4.20-8,发现kernel/ksyms.c下面是没有EXPORT_SYMBOL(sys_call_table) 于是我加了上去,重新编...
用加载模块的方法创建自己的系统调用,其中必须用到sys_call_table[]=my_syscall
但是在insmod的时候说 unresolved symbol sys_call_table,
系统是2.4.20-8,发现kernel/ksyms.c下面是没有EXPORT_SYMBOL(sys_call_table)
于是我加了上去,重新编译了内核,但是用/sbin/ksyms还是没发现export了这个
变量,不过在/proc/ksyms中有这么一个信息
c02d9ef0 sys_call_table_R__ver_sys_call_table
编译的命令应该没错吧 gcc -O2 -I /usr/src/linux.2.4.20-8/include -c mysyscall.c
何解?高手help 一把。。。 等着救命。。。
但是在insmod的时候说 unresolved symbol sys_call_table,
系统是2.4.20-8,发现kernel/ksyms.c下面是没有EXPORT_SYMBOL(sys_call_table)
于是我加了上去,重新编译了内核,但是用/sbin/ksyms还是没发现export了这个
变量,不过在/proc/ksyms中有这么一个信息
c02d9ef0 sys_call_table_R__ver_sys_call_table
编译的命令应该没错吧 gcc -O2 -I /usr/src/linux.2.4.20-8/include -c mysyscall.c
何解?高手help 一把。。。 等着救命。。。
|
sys_call_table已经从引出符号表中被取消了
|
那现在是什么哪?
|
你应该如此这般,这般如此
#define SYS_CALL_TABLE_ADDR 0xc02d9ef0
void **sys_call_table;
sys_call_table = (void **)SYS_CALL_TABLE_ADDR;
#define SYS_CALL_TABLE_ADDR 0xc02d9ef0
void **sys_call_table;
sys_call_table = (void **)SYS_CALL_TABLE_ADDR;
|
现在已经不能这样做了。