LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1134|回复: 5

一个关于可加载模块编程的问题,很菜

[复制链接]
发表于 2003-8-7 09:46:48 | 显示全部楼层 |阅读模式
比如说在有模块实现我的系统调用时,要往sys_call_table[]中添加我的函数的地址。
一般是这样的:
int mycall(){
.......
........
}


__init_module()
{
extern long  sys_call_table[];
sys_call_table[__NR_mycall]=(long)mycall;
............
}
以上只是示意,语法不一定准确,只为能说明我的问题

我的问题是:::::!!!!
以上代码编译进模块。编译时sys_call_table应在某头文件中说明了。编译时把它放入符号表。请问编译器如何连接这一外部符号成地址的。
我以为是:由模块在加载时查找内核符号表,才得到具体地址。但是我察看内核符号表时,却未见到sys_call_table。
请问,实际情况应该是怎样的?
 楼主| 发表于 2003-8-7 10:33:47 | 显示全部楼层

and

另:请问:进入内核函数前,寄存器顺序为AX,...dx,cx,bx,cs,ip.则_mycall是如何被编译,实现巴返回值放入ax中的
发表于 2003-8-8 21:12:29 | 显示全部楼层
/arch/i386/kernel/entry.S#L406
 楼主| 发表于 2003-8-9 18:50:38 | 显示全部楼层
看来你没看请我的问题。我的意思是:在运行时察看到的系统输出的符号。
 楼主| 发表于 2003-8-9 18:51:23 | 显示全部楼层
看来这里人气不行呀
发表于 2003-8-9 23:59:47 | 显示全部楼层
at run time, who? which component see the exported symbol?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表