加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 19:25:36 所属栏目:Linux 来源:网络整理
导读:我正在阅读Robert Love的 Linux内核开发,他所做的一项练习是创建一个系统调用(第106页).问题是我无法在v3.9中找到x86_32体系结构的系统调用表文件.我知道他正在使用2.6.xx版本,但我不知道该版本是否适用于我正在使用的发行版,因为它很旧,所以我宁愿选择v3.9.
我正在阅读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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读