2013-07-12 71 views
1

我想在內核模塊中保存一些信息。我在這裏看到過類似的問題,但是我的略有不同。假設我正在使用this code寫入/ proc文件。我應該怎樣在我的內核模塊中調用它?我有一個名爲mymodule的自定義內核模塊,它不是主要文件(沒有init_module()),它將調用下面的函數。在這種情況下,函數的輸入值應該是什麼值,如file的值?基本上可以在內核模塊中創建/ proc文件嗎?如何在內核模塊中創建/ proc文件?

int procfile_write(struct file *file, const char *buffer, unsigned long count, void *data)

+3

試着看看其他驅動程序如何使用/ proc條目。您可以通過閱讀(通過貓或其他)從命令行輸入的內容來查詢您的驅動程序。如果執行proc write()方法,您也可以寫入驅動程序。 –

回答

3

這絕對是可以添加一個內核模塊中的proc入口,但你可能會被誤解如何文件處理內核的作品。

當你在proc中創建一個文件時,你實際上並沒有像在用戶空間中那樣創建一個文件。您正在註冊一些回調,這些回調在用戶空間程序請求您的文件時被調用。

這意味着,當用戶空間程序請求讀取時,您的文件讀取回調函數必須提供數據。當用戶空間程序請求寫入時,您的文件寫入回調必須處理它。

如果您想像傳統文件一樣使用它來存儲信息,則必須分配所需的空間並從中讀取回叫複製數據。

+0

謝謝。是的,我想在LKM中存儲一些信息。對不起,我是新手。我應該如何「分配所需的空間並從那裏讀取回叫複製數據」? – Sara

+1

那取決於。您可以使用'kmalloc'或'vmalloc'來分配您需要的空間,然後將指針存儲到您的'procfile_read'回調可以找到的地方。 – tangrs