LinuxSir.cn,穿越时空的Linuxsir!

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

do_signal参数的疑问

[复制链接]
发表于 2006-2-23 09:42:16 | 显示全部楼层 |阅读模式
在中断返回的代码中,会判断如果当前进程有signal要处理,就会进入do_signal,

call SYMBOL_NAME(do_signal)
但是现在目前的系统堆栈中最上面应该是一个reg的结构,然后是do_signal的返回地址,
那么do_signal的参数是怎么传的呢? 按理说应该是reg的最先两个寄存器 ebx,ecx才对啊,没发现在哪里设置了????

谢谢
发表于 2006-3-3 21:32:14 | 显示全部楼层
do_signal的参数依平台的不同而不同,当do_signal只要需要知道引起信号时CPU寄存器的状态信息,即即系统调用进入内核时所保存的调用者保存寄存器caller saved registers。它一般封装在pt_regs数据结构中。同时,do_signal还需要知道当前的中断处理是否是软中断(即系统调用),而此信息有的可以在pt_regs中找到,有的不能,所以在有些体系结构中,do_signal还需要一个参数syscall,来指明当前是否在系统调用中。

^_^

camelguo@gmail.com

http://camelguo1978.blogcn.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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