Linux内核中的系统调用表在哪里?

2024-01-09

我正在阅读 Robert Love 撰写的《Linux 内核开发》,他所做的练习之一就是创建系统调用(第 106 页)。问题是我无法在 v3.9 中找到 x86_32 架构的系统调用表文件。我知道他使用的是 2.6.xx 版本,但我不知道该版本是否适用于我正在使用的发行版,因为它已经很旧了,所以我更喜欢 v3.9。

更多信息: 我所说的练习如下: 在系统调用表的末尾添加一个条目。这需要为每个支持系统调用的体系结构完成(对于大多数调用来说,是所有体系结构)。系统调用在表中的位置,从零开始, 是它的系统调用号。例如,列表中的第十个条目被分配为系统调用号 9。

使用以下方法解决:对于 x86 架构,系统调用表位于 arch/x86/syscalls/syscall_32.tbl 中。感谢 Sudip Mukherjee 的帮助。

另一种方法如下: http://lists.kernelnewbies.org/pipermail/kernelnewbies/2013-July/008598.html http://lists.kernelnewbies.org/pipermail/kernelnewbies/2013-July/008598.html也感谢 Srinivas Ganji 的帮助。


从Linux内核4.2开始,系统调用表已从arch/x86/syscalls/syscall_64.tbl https://github.com/torvalds/linux/blob/v4.1/arch/x86/syscalls/syscall_64.tbl to arch/x86/entry/syscalls/syscall_64.tbl https://github.com/torvalds/linux/blob/v4.3/arch/x86/entry/syscalls/syscall_64.tbl

这里是对应的commit https://github.com/torvalds/linux/commit/1f57d5d85ba7f1f467173ff33f51d01a91f9aaf1:

commit 1f57d5d85ba7f1f467173ff33f51d01a91f9aaf1
Author: Ingo Molnar <[email protected] /cdn-cgi/l/email-protection>
Date:   Wed Jun 3 18:36:41 2015 +0200

    x86/asm/entry: Move the arch/x86/syscalls/ definitions to arch/x86/entry/syscalls/

    The build time generated syscall definitions are entry code related, move
    them into the arch/x86/entry/ directory.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux内核中的系统调用表在哪里? 的相关文章

随机推荐