我注意到x86 int $0x80
和amd64 syscall
系统调用具有不同的数字。例如,sys_exit
是x86中的系统调用1和amd64中的系统调用60。是否存在不同系统呼叫编号方案的(历史)原因?
答案 0 :(得分:14)
syscall接口应该非常稳定,只允许添加。对于每个架构的系统调用接口都不同的优势,Linux人员很可能决定清理一些累积的错误并从头开始启动amd64系统调用。
参考:linux/Documentation/ABI/stable/syscalls
此接口与POSIX接口的大部分匹配,并以此为基础 和其他基于Unix的接口。它只会随着时间的推移而添加, 并没有从中删除任何东西。
请注意,此接口对于每个体系结构都是不同的 Linux支持。请参阅特定于体系结构的文档 有关要映射到每个的系统调用号的详细信息 系统调用。