我正在阅读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
感谢Srinivas Ganji的帮助.
解决方法
从linux内核4.2开始,系统调用表已从
arch/x86/syscalls/syscall_64.tbl
移到
arch/x86/entry/syscalls/syscall_64.tbl
这是相应的commit:
commit 1f57d5d85ba7f1f467173ff33f51d01a91f9aaf1 Author: Ingo Molnar <mingo@kernel.org> 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.