在/include/linux/compat.h中,我看到很多compat_sys_xxx。另外,還有別的地方定義了sys_xxx。 compat_sys_xxx和sys_xxx之間的關係是什麼?在Linux內核中如何定義系統調用? compat_sys_xxx和sys_xxx之間的關係是什麼?
-1
A
回答
0
如果存在compat條目,則幾乎可以肯定意味着系統調用原型已經更改,並且爲了兼容性維護了以前原型的一個版本。通常你會看到compat_sys_xxx只是調用了sys_xxx,其參數適當地轉換了(或者兩者都調用一個具有稍微不同轉換的通用函數)。作爲一個或多或少隨機的例子,compat_sys_msgsnd帶有三個「int」參數,後面跟着一個指向compat_msgbuf結構的指針(其中第一個表面上「長」的字段被強制爲32位大小)。 OTOH,sys_msgsnd以不同的順序列出參數,並且選擇參數類型以適當地爲體系結構進行變形(即根據自然長整數大小的長浮點數,size_t在一個地方替換int等)。
毫無疑問,系統調用接口被改變了,因爲當移動到不同的(非i386)體系結構時,原始接口在某種程度上是不明確的。 compat_版本允許現有的二進制文件無需修改即可繼續工作。
相關問題
- 1. dup()和close()系統調用之間的關係是什麼?
- 2. Linux-PAM和內核之間的關係
- 3. memcached板和linux內核板之間有什麼關係
- 4. virt_to_phys和Linux內核中CPU的MMU之間的關係是什麼?
- 5. Linux內核中的系統調用
- 6. Linux內核3.3.4中的自定義系統調用
- 7. 什麼是系統類和PrintStream類之間的關係
- 8. 冗餘的Linux內核系統調用
- 9. Linux內核AIO,開放系統調用
- 10. 更改linux內核系統調用號
- 11. Linux內核模塊(內核3.5)中的系統調用攔截
- 12. 是什麼F_DUPFD內的fcntl在Linux系統調用使用
- 13. ftp.kernel.org中的內核tarball和git.kernel.org中的git樹之間的關係是什麼?
- 14. python虛擬環境和特定系統庫之間的關係是什麼?
- 15. 如何在Linux內核3.2.x中的自定義系統調用期間讀取目錄的內容
- 16. clone()系統調用在linux內核中定義的位置在哪裏?
- 17. C++和Ruby之間的關係和依賴關係是什麼?
- 18. 哪個進程在Linux內核中調用系統調用?
- 19. gcc和arm-linux-gcc之間的關係是什麼
- 20. 內核線程和用戶線程之間的關係是什麼?
- 21. 核心數據中提取與單向關係之間的關係是什麼?
- 22. 特權指令,陷阱和系統調用之間的關係
- 23. linux內核中的系統調用表在哪裏?
- 24. 在Linux內核3.3中添加一個新的系統調用
- 25. 在系統調用中訪問Linux內核的SuperBlock對象
- 26. 什麼是系統調用?
- 27. 用戶與內核之間的區別系統調用
- 28. 什麼Linux操作系統來與Linux內核2.6.32
- 29. getnameinfo - 它在Linux中的系統調用是什麼?
- 30. Linux內核如何防止BIOS系統調用?