2016-06-28 62 views
1

我需要幫助完成我的任務之一。我正在編寫一個Linux內核模塊,它應該打印所有已加載的模塊(就像print_modules,但每個模塊都在不同的行中)。我不允許讀取文件(如/ proc/modules)。所有加載的內核模塊列表位於何處

我的問題是,我無法在內核中找到相應的列表,因此我可以用我的C代碼訪問它。

我已經搜索了Modules.c/.h,並找到存儲雙向鏈表的Modul結構,但是我無法訪問其中的其他模塊。

希望我的問題清楚,有人可以幫助我。在此先感謝

+0

我不是內核專家(根本就不是;-),但是print_modules獲取它的信息,並且你不能克隆函數並添加一個'\ n'到它的print語句中?對不起,如果你已經考慮過這一點,但你沒有說清楚爲什麼你不能使用它。祝你好運。 (稍後會刪除此評論)。 – shellter

+0

多數民衆贊成在我們想要做的,但這種方法(http://lxr.free-electrons.com/source/kernel/module.c#L4052只需按Ctrl + F +「print_module」)需要很多參數,我們不能定位aswell = /我被告知應該有一個非常簡單的解決方案,只需遍歷列表 – MajorasKid

+1

找到答案:該列表可以在自己的內核模塊(具有函數get_module)中找到。有一個對象模塊 - >列表,這是一個雙向鏈表。 使用list.h我們可以得到list.next/.prev的模塊 – MajorasKid

回答

0

從我的評論複製:

的列表可以在自己的內核模塊中找到(具有功能get_module)。有一個對象模塊 - >列表,這是一個雙向鏈表。有了list.h,我們可以得到模塊list.next/.prev