|
楼主 |
发表于 2007-6-29 03:14:57
|
显示全部楼层
信号处理函数也有自己的栈。原来执行信号处理程序前把原来的进程的context存到内核的一个数据结构里了。restore的时候再拷出来。恢复寄存器的值。
/* Set up registers for signal handler */
regs->esp = (unsigned long) frame;
regs->eip = (unsigned long) ka->sa.sa_handler;
regs->eax = (unsigned long) usig;
regs->edx = (unsigned long) &frame->info;
regs->ecx = (unsigned long) &frame->uc;
set_fs(USER_DS);
regs->xds = __USER_DS;
regs->xes = __USER_DS;
regs->xss = __USER_DS;
regs->xcs = __USER_CS;
........... |
|