【发布时间】:2012-05-04 03:00:00
【问题描述】:
我注意到 x86 int $0x80 和 amd64 syscall 系统调用有不同的编号。例如,sys_exit 在 x86 中是系统调用 1,在 amd64 中是系统调用 60。不同的系统调用编号方案是否有(历史)原因?
【问题讨论】:
标签: linux naming-conventions x86-64 system-calls
我注意到 x86 int $0x80 和 amd64 syscall 系统调用有不同的编号。例如,sys_exit 在 x86 中是系统调用 1,在 amd64 中是系统调用 60。不同的系统调用编号方案是否有(历史)原因?
【问题讨论】:
标签: linux naming-conventions x86-64 system-calls
系统调用接口应该非常稳定,只允许添加。谈到每个架构的系统调用接口不同这一事实,Linux 人员很可能决定清理一些积累的垃圾并从头开始启动 amd64 系统调用。
参考:linux/Documentation/ABI/stable/syscalls
此接口与 POSIX 接口的大部分内容相匹配,并基于它 和其他基于 Unix 的接口。它只会随着时间的推移而添加, 并且没有从中删除任何东西。
请注意,该接口对于每个架构都不同 Linux 支持。请参阅特定于架构的文档 有关要映射到每个系统调用号的详细信息 系统调用。
【讨论】: