日期:2014-05-16  浏览次数:20767 次

(莱昂氏unix源代码分析导读-24)signal(上)

                                                                          by cszhao1980

signal更确切的称呼应该是soft interruption,顾名思义,就是一种能够通过软件手段达到

类似interruption目的的方法。

 

Unix最多支持NSIG20)种软中断,进程的u中有u.signal[NSIG]数组,记录每种软中

断的处理方法。

u_signaln〕的值

当#n中断发生时

此进程将终止自身

奇数,非0

忽略此软件中断

偶数,非0

该值为用户空间中一过程的起始地址,应立即执行该过程

 

第#4 8系统调用ssig(),其主要功能就是设置数组“u_signal”,这个sys call有两个参数:

1asignal type0 ~ NSIG

2u_signal(a)应该被设置的值

 

3614: ssig()

3615: {

3616:    register a;

3617:

3618:    a = u.u_arg[0];

3619:    if(a<=0 || a>=NSIG || a ==SIGKIL) {

3620:       u.u_error = EINVAL;

3621:       return;

3622:    }

3623:    u.u_ar0[R0] = u.u_signal[a];    /返回old

3624: &