gpt4 book ai didi

Linux x86 系统调用 355 在启动时重复运行并导致崩溃,除非返回 -ENOSYS

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

内核版本:3.14.33

在我添加任何系统调用之前,x86(32 位)的最高编号是 352。然后我通过简单地向 arch/x86/syscall/syscall_32.tbl 添加一行然后使用 SYSCALL_DEFINEx 添加 353-357在 kernel/* 中适当。

问题出在编号为 355 的系统调用上。它在启动时重复运行,当它不直接返回 -ENOSYS 时,它会在启动时使内核崩溃,并在 systemd 中断言失败(sd_id128_randomize() 返回 < 0)。当355直接返回-ENOSYS时,系统启动正常。

“正式”安装系统调用还需要采取其他步骤吗?喜欢增加一些最大数量? 355 是为我完全搞砸的东西保留的吗?

我设法通过简单地跳过 355 来解决问题,所以我非常确定这不是我的系统调用实现中的错误

最佳答案

似乎较新版本的内核包含额外的系统调用,其中 355 是 getrandom()。 systemd 会检查这个系统调用号,看看正在运行的内核是否有内置的随机化器,如果返回值不是 ENOSYS,它认为系统调用是 getrandom() 并且可能会出错。

引用资料: http://lxr.free-electrons.com/source/arch/x86/syscalls/syscall_32.tbl http://lwn.net/Articles/606141/

关于Linux x86 系统调用 355 在启动时重复运行并导致崩溃,除非返回 -ENOSYS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28977414/

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