2
有時我觀察到,當應用程序運行或調用任何內核模塊函數時,相應的內核模塊會自動加載。內核模塊在運行時加載應用程序有什麼要求
我想構建一個類似的內核模塊,當我的應用程序執行並調用其ioctl時,它將自動加載。
其實我想知道,我需要寫在我的內核模塊,以便它將在運行時由我的應用程序自動加載。
我找了很多,但沒有找到任何令人滿意的東西。
有時我觀察到,當應用程序運行或調用任何內核模塊函數時,相應的內核模塊會自動加載。內核模塊在運行時加載應用程序有什麼要求
我想構建一個類似的內核模塊,當我的應用程序執行並調用其ioctl時,它將自動加載。
其實我想知道,我需要寫在我的內核模塊,以便它將在運行時由我的應用程序自動加載。
我找了很多,但沒有找到任何令人滿意的東西。
要搜索的關鍵字是kmod
,它是處理加載內核模塊的請求的Linux內核的一部分。
在這裏的答案中有太多的細節列出,但看看Linux Device Drivers, 2nd Edition' book, chapter 11,它詳細介紹了內核模塊自動加載。
請注意,模塊加載請求必須來自內核內。因此,如果您在自定義模塊中有設備驅動程序但未加載,則內核無法知道如何將ioctl請求與您的驅動程序進行匹配。但假設你有一個驅動程序和一些ioctl函數分爲不同的模塊A和B,可以插入主模塊A來提供設備接口,然後當請求驅動程序A的ioctl時,它可以自動加載包含使用kmod機制的ioctl功能的附加模塊B
+1:註釋'kmod'是相當新的,並且可能在許多當前部署的(2013)平臺上不是標準配置。 –