gpt4 book ai didi

linux - Linux 内核中信号处理的栈帧

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:58 27 4
gpt4 key购买 nike

我看到进程需要处理信号的堆栈帧在函数 setup_rt_frame() 中分配。

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

谢谢!

最佳答案

setup_rt_frame()实时信号 设置堆栈(参见 man 7 signal )。它主要做两件事:

  1. 将用户进程的 CPU 上下文(在它被中断之前)从内核堆栈保存到用户堆栈。
    对于 ARM 架构,它在 setup_sigframe() 中完成.
  2. 将返回地址(信号处理程序返回的位置)保存到用户堆栈。
    返回地址将指向 rt_sigreturn() 系统调用(详见 man 2 sigreturn)。
    对于 ARM 架构,它在 setup_return() 中完成.

如您所见,一旦信号处理程序完成,它会自动返回到sys_rt_sigreturn()。内核中的函数。此函数将从用户堆栈恢复内核堆栈并返回中断的用户空间进程。

那么,回答你的问题:

where it is de-allocated?

它正在 sys_rt_sigreturn() 函数中恢复。

另见:

[1] How signals work internally?

[2] Who uses POSIX realtime signals and why?

[3] Implementation of signal handling (参见“传递信号(七)”至“传递信号(十二)”)

关于linux - Linux 内核中信号处理的栈帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39517375/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com