Linux内核中信号处理的堆栈框架

Linux内核中信号处理的堆栈框架,linux,linux-kernel,signals,linux-device-driver,Linux,Linux Kernel,Signals,Linux Device Driver,我看到进程处理信号所需的堆栈帧是在函数setup\u rt\u frame()中分配的 我的问题是:在哪里取消分配 谢谢大家! setup\u rt\u frame()为实时信号设置堆栈(请参阅)。它有两个主要功能: 将用户进程的CPU上下文(在中断之前)从内核堆栈保存到用户堆栈 对于ARM架构,它是在中完成的 将返回地址(信号处理程序返回的位置)保存到用户堆栈 返回地址将指向rt\u sigreurn()syscall(有关详细信息,请参阅) 对于ARM架构,它是在中完成的 正如您所看到的,一

我看到进程处理信号所需的堆栈帧是在函数
setup\u rt\u frame()
中分配的

我的问题是:在哪里取消分配

谢谢大家!

setup\u rt\u frame()
实时信号设置堆栈(请参阅)。它有两个主要功能:

  • 将用户进程的CPU上下文(在中断之前)从内核堆栈保存到用户堆栈
    对于ARM架构,它是在中完成的
  • 将返回地址(信号处理程序返回的位置)保存到用户堆栈
    返回地址将指向
    rt\u sigreurn()
    syscall(有关详细信息,请参阅)
    对于ARM架构,它是在中完成的
  • 正如您所看到的,一旦信号处理程序完成,它将自动返回内核中的函数。此函数将从用户堆栈恢复内核堆栈,并返回到中断的用户空间进程

    那么,回答你的问题:

    在哪里取消分配

    它正在
    sys\u rt\u sigreurn()
    函数中还原

    另见:

    [1]

    [2]

    [3] (见“发送信号(7)”至“发送信号(12)”章节)