gpt4 book ai didi

linux - 来自 get_user_pages 的 ERESTARTSYS 和挂起的致命信号?

转载 作者:太空宇宙 更新时间:2023-11-04 04:08:36 33 4
gpt4 key购买 nike

我正在Linux上测试一些软件+驱动程序,该驱动程序在其内部函数中使用get_user_pages()。在某些时候,我的驱动程序从 get_user_pages() 收到 ERESTARTSYS 错误 (-512),根据内核代码,发生这种情况是因为“如果我们有待处理的 SIGKILL,请不要继续出现错误页面并可能分配内存。” - 这是来自 memory.c 内核文件的注释。

我如何查看谁发送了此 SIGKILL 以及原因?我试图查看/var/log/kern.log 文件,但看不到任何有关任何信号的信息。

最佳答案

我不相信你可以使用 SIGKILL (其他人,是的),除非你愿意修补内核以提供信号信息。在这种情况下,您可以根据文档检查 si_code 和 si_pid 值:http://pubs.opengroup.org/onlinepubs/009696699/basedefs/signal.h.html

例如,如果您的信号信息位于 siptr 中:

if ((siptr)->si_code <= 0) {
printk(KERN_DEBUG "kill sent by process %u", (siptr)->si_pid);
}

if 检查并不是绝对必要的:它将 printk() 限制为由kill() 引发的信号。如果内核发出信号,si_code 将大于 0。

关于linux - 来自 get_user_pages 的 ERESTARTSYS 和挂起的致命信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20176804/

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