2013-11-28 25 views
1

我正在研究一个内核模块。长话短说:我需要分配一些内存,并在模块卸载后让它留在那里。可能吗?怎么样?Alloc内存,让它留在那里后退出

请记住,我不是问这是个好主意。我有我的理由,这很好。

+1

我不确定它是否需要一些特殊的东西......但这里是我的建议:将该指针设置为全局,并在您希望使用该内存的其他文件中使用该指针? – 2013-11-28 09:08:37

+0

@ user9000该内存将被标记为可执行文件并且它将保存它自己的代码,该代码将从系统调用表中调用。 – alexandernst

+0

分配给分配进程的内存在进程终止后被释放。如果您的程序退出,则无法挽救其内存。也许,使用文件共享数据。 – erbdex

回答

3

真的很容易做到。你所要做的就是在模块初始化函数中动态地分配内存,并且它们不能在退出函数中释放它。换句话说,创建一个故意的内存泄漏。

虽然在初始化时需要小心,以避免多次执行分配(和系统调用表修补)。我强烈建议不要这样做,只要模块已加载,只保持监视代码处于活动状态。事后保持活跃意味着你有多重负载问题,并且它也会让你的模块的用户感到惊讶。

+0

呵呵,我真的没想到会这么简单:P因此,当进程死亡时,由进程获得的内存分配的一般规则不适用于内核/内核模块,对吧? – alexandernst

+2

正确。内核中没有手持设备;) –