15

我注意到 x86int $0x80和 amd64syscall系统调用有不同的编号。例如,sys_exit在 x86 中是系统调用 1,在 amd64 中是系统调用 60。不同的系统调用编号方案是否有(历史)原因?

4

1 回答 1

16

系统调用接口应该非常稳定,只允许添加。谈到每个体系结构的系统调用接口不同这一事实,Linux 人员很可能决定清理一些积累的垃圾并从头开始启动 amd64 系统调用。

参考:linux/Documentation/ABI/stable/syscalls

该接口与 POSIX 接口的大部分内容相匹配,并且基于它和其他基于 Unix 的接口。它只会随着时间的推移而添加,而不会从中删除任何东西。

请注意,对于 Linux 支持的每种体系结构,此接口都不同。有关要映射到每个系统调用的系统调用号的详细信息,请参阅特定于体系结构的文档。

于 2012-04-23T13:50:57.900 回答