2

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

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

我的问题是:

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

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

谢谢!

奥马尔。

4

1 回答 1

1

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

如何共享、给予和获取内存在很大程度上取决于编码架构和编码模型的选择。这是用C编写的;没有规则。

处理模块使用计数的一种方法是使用 kref。有关更多信息,请参阅内核源树中的Documentation/kref.txt或此处

于 2013-03-03T10:03:29.547 回答