我想添加一個新的系統調用通過LKM,但我不知道如何做到這一點。也就是說,我知道如果我想添加一個全新的系統調用,我可以查看sys_call_table並找到一個sys_ni_syscall
並將其替換,但我很好奇是否有可能實際上將添加到sys_call_table
。我意識到它可能是而不是可能,因爲它是一個固定大小的數組,但我想知道是否有其他聰明的方法來添加系統調用而不覆蓋未使用的系統調用號碼。是否可以通過LKM添加系統調用?
9
A
回答
1
檢查「Linux內核模塊編程指南」(http://www.tldp.org/LDP/lkmpg/2.6/html/index.html)的Linux文檔項目網站。具體來說,看看這裏的系統調用:http://www.tldp.org/LDP/lkmpg/2.6/html/x978.html。至少應該給你一個開始。
+4
請仔細閱讀,雖然看起來像sys_call_table是不再在2.6內核中導出。請參閱syscall.c中的註釋 – FreeMemory 2009-01-21 14:25:15
3
下面是一個例子
linux system calls
編輯:
上面的例子顯示HOWTO實現系統調用,就實現一個從一個可加載的模塊; AFAIK,這是不可能的,除非你在哪裏覆蓋現有的,因爲數組的大小是#define。
請記住,還需要更改用戶空間,至少如果您希望能夠實際使用新的系統調用。
1
這是一個老問題,但我想提出我的解決方案。實施「類似系統調用」環境的最簡單方法是依靠假設備。 特別是,您可以創建一個新的設備驅動程序,它實際上不會驅動任何東西。然而,寫上它可能會導致已安裝的模塊執行所需的操作。 此外,如果您想要提供多項服務,則可以將它們映射到ioctl
操作。
相關問題
- 1. 使用內核模塊(LKM)添加系統調用
- 2. 使用LKM實現Linux系統調用
- 3. Android LKM攔截系統調用
- 4. 是否可以通過我自己的應用程序調用系統相機
- 5. 是否可以通過Theos Tweak攔截系統調用?被拘留的版本
- 6. 是否可以向系統庫頭添加一個空格?
- 7. OS X系統調用是否可以覆蓋或插入系統範圍內?
- 8. 如何通過功能ID不使用系統調用調用新添加的系統調用(__ NR_mysyscall)
- 9. 是否可以向addEvenlistener添加回調?
- 10. 是否可以通過api添加參加者?
- 11. 我可以從模塊添加一個系統調用嗎?
- 12. 是否可以在iOS上進行系統調用?
- 13. Android:是否可以觀察系統調用?
- 14. 當我尋找添加系統調用時,我添加系統調用linux-2.6.31
- 15. Mutex是否會調用系統調用?
- 16. Android:是否可以通過編程方式刪除系統管理的通知?
- 17. 是否可以通過`getText()`從Spring中的TextField添加依賴關係
- 18. 命令通過終端,但不是通過python系統調用
- 19. 是否可以使用django從系統目錄加載文件?
- 20. 我們是否可以將系統圖標添加到flex應用程序
- 21. 是否可以通過DynamicProxy將屬性添加到類型?
- 22. 是否可以實現通過EF添加插入行的ID
- 23. 是否可以通過屬性添加到類擴展方法?
- 24. 是否可以通過編程添加Crystal Reports的子報表?
- 25. 是否可以通過編程添加工作流程修改?
- 26. 製作系統,可以通過調試編寫代碼
- 27. 是否可以通過iPhone API下載使用統計信息?
- 28. 是否可以通過iPhone API下載使用統計信息?
- 29. 是否可以添加類?
- 30. 如何通過庫調用C編譯器而不是通過系統調用?
[使用LKM實現Linux系統調用]可能的副本(https://stackoverflow.com/questions/12623066/implementing-linux-system-call-using-lkm) – 2018-01-29 15:26:15