code:psignal - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki
- 发送信号sig到指定进程p
- 共输入两个参数
- sig : 信号标志
- p : 指向 指定进程的 proc结构
3958
3959 /*
3960 * Send the specified signal to
3961 * the specified process.
3962 */
3963 psignal(p, sig)
3964 int *p;
3965 {
3966 register *rp;
3967
3968 if(sig >= NSIG)
3969 return;
3970 rp = p;
- 若 信号标志越界(不检查下界),则函数直接返回
- NSIG 定义在 param.h
3971 if(rp->p_sig != SIGKIL)
3972 rp->p_sig = sig;
3973 if(rp->p_pri > PUSER)
- 更新 指定进程的 信号
- 但 SIGKIL 信号不更新
3974 rp->p_pri = PUSER;
3975 if(rp->p_stat == SWAIT)3974 rp->p_stat = PUSER; 疑为错误
- LIONS源代码为
3973 if(rp->p_stat > PUSER)
- 更新 进程优先数 p_pri = min{p_pri,PUSER}
- PUSER 定义在 param.h
3976 setrun(rp);
3977 }
- 若 指定进程 在低优先级睡眠,则唤醒该进程
3978 /* ------------------------- */