2013-11-28 53 views
1

我正在研究一個內核模塊。長話短說:我需要分配一些內存,並在模塊卸載後讓它留在那裏。可能嗎?怎麼樣?Alloc內存,讓它留在那裏後退出

請記住,我不是問這是個好主意。我有我的理由,這很好。

+1

我不確定它是否需要一些特殊的東西......但這裏是我的建議:將該指針設置爲全局,並在您希望使用該內存的其他文件中使用該指針? – 2013-11-28 09:08:37

+0

@ user9000該內存將被標記爲可執行文件並且它將保存它自己的代碼,該代碼將從系統調用表中調用。 – alexandernst

+0

分配給分配進程的內存在進程終止後被釋放。如果您的程序退出,則無法挽救其內存。也許,使用文件共享數據。 – erbdex

回答

3

真的很容易做到。你所要做的就是在模塊初始化函數中動態地分配內存,並且它們不能在退出函數中釋放它。換句話說,創建一個故意的內存泄漏。

雖然在初始化時需要小心,以避免多次執行分配(和系統調用表修補)。我強烈建議不要這樣做,只要模塊已加載,只保持監視代碼處於活動狀態。事後保持活躍意味着你有多重負載問題,並且它也會讓你的模塊的用戶感到驚訝。

+0

呵呵,我真的沒想到會這麼簡單:P因此,當進程死亡時,由進程獲得的內存分配的一般規則不適用於內核/內核模塊,對吧? – alexandernst

+2

正確。內核中沒有手持設備;) –