12
我注意到x86 int $0x80
和amd64 syscall
系統調用有不同的數字。例如,sys_exit
是x86中的syscall 1和amd64中的syscall 60。是否有不同的系統呼叫編號方案的(歷史)原因?爲什麼amd64 linux中的系統調用號碼不同?
我注意到x86 int $0x80
和amd64 syscall
系統調用有不同的數字。例如,sys_exit
是x86中的syscall 1和amd64中的syscall 60。是否有不同的系統呼叫編號方案的(歷史)原因?爲什麼amd64 linux中的系統調用號碼不同?
系統調用接口應該是非常穩定的,只允許添加。談到系統調用接口對於每種架構都不相同的事實,Linux人員最有可能決定清理一些累積的垃圾並從頭開始啓動amd64系統調用。
參考:linux/Documentation/ABI/stable/syscalls
此接口匹配許多POSIX接口,並在此基礎上 和其它基於Unix的接口。它只會隨着時間的推移而被添加, 並沒有從中刪除任何東西。
請注意,對於Linux支持的每種體系結構,此接口都不相同。有關要映射到每個系統調用的系統調用號碼的詳細信息,請參閱體系結構特定文檔 。
相關LKML文章:http://lkml.iu.edu/hypermail/linux/kernel/0104.0/0547.html – 2017-01-20 02:29:45