2014-06-19 29 views

回答

0

如果存在compat條目,則幾乎可以肯定意味着系統調用原型已經更改,並且爲了兼容性維護了以前原型的一個版本。通常你會看到compat_sys_xxx只是調用了sys_xxx,其參數適當地轉換了(或者兩者都調用一個具有稍微不同轉換的通用函數)。作爲一個或多或少隨機的例子,compat_sys_msgsnd帶有三個「int」參數,後面跟着一個指向compat_msgbuf結構的指針(其中第一個表面上「長」的字段被強制爲32位大小)。 OTOH,sys_msgsnd以不同的順序列出參數,並且選擇參數類型以適當地爲體系結構進行變形(即根據自然長整數大小的長浮點數,size_t在一個地方替換int等)。

毫無疑問,系統調用接口被改變了,因爲當移動到不同的(非i386)體系結構時,原始接口在某種程度上是不明確的。 compat_版本允許現有的二進制文件無需修改即可繼續工作。

相關問題