分配的内存是否使模块被内核视为“已使用”

时间:2013-03-03 09:59:46

标签: linux-kernel kernel drivers

我是内核编程的新手,目前正在使用tplink无线网卡(Atheros芯片组)的“Madwifi”驱动程序。我的内核版本是2.6.32-37(ubuntu)。

我正在使用一个已被其他人修改的驱动程序(我不知道也无法联系以获取更多信息),我担心他们动态分配内存(使用kmalloc)但没有'适当地释放它。

我的问题是:

  1. 如果他们实际上没有释放分配的内存,是否会让操作系统将模块视为“忙”,使其无法卸载模块?

  2. 我应该如何或在哪里释放模块中的已分配内存(考虑到模块应该“永远”运行)?

  3. 谢谢!

    奥马尔。

1 个答案:

答案 0 :(得分:1)

没有。为kmalloc(或其任何同事)分配内存不会增加模块的use-count。分配内存的所有权可以随时改变,只需将地址(保存在指针变量中)传递给另一个存储在某处的模块/块。内核没有跟踪这个。

如何共享,给定和采用内存在很大程度上取决于编码体系结构和编码模型的选择。这是用 C 写的;没有规则。

处理模块使用次数的一种方法是使用kref。有关更多信息,请参阅kernel-source-tree中的 Documentation / kref.txt here