簡體   English   中英

內核模塊的配置文件

[英]configuration file for kernel module

我學習了如何編寫Linux內核驅動程序,現在我想讓用戶空間的用戶可以更改模塊(或任何其他子系統/模塊)的行為。

我想將任何值(字符串列表)存儲在任何類型的配置文件/系統中,並以文件/系統內部的值的形式存儲-更改模塊的行為。

我考慮過procfs ,我可以使模塊創建/proc/file並對來自用戶空間的讀/寫操作做出反應。

關鍵是:如何從內核空間的另一個配置中讀取該配置(名稱為B)?

也許另一種類型的配置是可能的(我考慮過sysctl,但是我看到沒有存儲任何字符串,我必須存儲某種簡單的“列表”)。

1)通常,如果它是配置文件和一些參數列表,則ioctl更受歡迎,建議使用它。

2)您問,有2個內核模塊-A和B,並且您想閱讀A在B上的配置。 在這種情況下,無論您擁有proc還是ioctl(記住,proc不是真正的文件系統。您都在打印或讀取某些內核變量並從中返回一些值...您可以使用VFS從“ fs”中讀取內容在內核中並返回該字符串,但這非常愚蠢,因為您具有用戶空間控制權。)最終,您需要將內核模塊配置存儲到某些變量中。 如果要從另一個模塊讀取它們,則應使用EXPORT_SYMBOL()關鍵字公開您的變量,但通常不這樣做。

在返回配置值的符號上創建一些API,並公開這些API並從另一個模塊調用它。 由於模塊依賴性,您可能需要小心。

最簡單的方法是創建一些回調ptr並在內核源代碼下定義它。 然后,在初始化模塊A時,配置回調ptr,然后從模塊B調用它。在這種情況下,您將擺脫模塊依賴性。

或者,在模塊B上創建回調指針,並使模塊B成為內置模塊,並公開回調ptr。

然后,可以從模塊A初始化它們,並且每當從B調用它時,都可以在該回調ptr上檢查“ null ptr”。

希望對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM