fn install_user_signal_trap_frame(
task: &Arc<SpinLock<Task>>,
sig_num: usize,
entry: isize,
action_mask: SignalFlags,
)Expand description
设置信号用户态处理栈帧
§说明:
当信号投递时,内核在信号栈上从高地址到低地址通常依次构建以下结构: 1. siginfo_t 结构体。 该结构体包含有关信号的信息(如信号编号、发送者等)。 2. ucontext_t 结构体。 该结构体保存了被信号中断时的处理器状态(寄存器等)。 3. 返回地址: 指向 C 库中的一个特殊函数(称为 sigreturn 或信号 trampoline),而不是直接返回原程序。 当信号处理函数返回时,它实际上会跳转到栈上的 sigreturn 函数,该函数会调用 rt_sigreturn 系统调用。 内核接收到这个调用后,会从栈上加载 ucontext_t 结构体,恢复所有保存的寄存器状态,从而使程序恢复到被中断时的执行点。
§参数:
task: 目标任务sig_num: 信号编号entry: 用户信号处理函数入口地址action_mask: 信号处理函数的屏蔽字