相关疑难解决方法(0)

有没有办法弄清楚什么是使用Linux内核模块?

如果我加载内核模块并列出已加载的模块lsmod,我可以得到模块的"使用计数"(其他模块的数量与模块的引用).有没有办法弄清楚什么是使用模块?

问题是我正在开发的模块坚持它的使用计数为1,因此我不能用rmmod它来卸载它,但它的"by"列是空的.这意味着每次我想重新编译和重新加载模块时,我都必须重启机器(或者,至少,我无法找出任何其他方法来卸载它).

linux kernel kernel-module

69
推荐指数
3
解决办法
5万
查看次数

无法"rmmod"模块

我正在使用涉及内核和用户空间代码的大型嵌入式软件(ARM处理器,嵌入式Linux 2.6.31,busybox).首先加载一个内核模块,然后守护进程与模块建立netlink套接字.

这里的问题是在杀死守护进程后,我无法再从内存中卸载模块:

% rmmod _module.ko
% rmmod: _module.ko: Resource temporarily unavailable
Run Code Online (Sandbox Code Playgroud)

分析表明,错误(返回值是-11,即EAGAIN?)是try_stop_module()在syscall delete_module()定义中调用的kernel/module.c.函数try_stop_module()依次调用stop_machine(),这就是我卡住的地方,

我不确定那里到底发生了什么.我认为根本原因是守护进程中的某个地方打开了与模块的连接,显然是其他东西并且在退出时没有正确关闭/清理(显然有些引用/锁没有被释放?)

有没有人知道还有什么可以看和探测?

linux kernel-module linux-kernel

7
推荐指数
1
解决办法
3万
查看次数

标签 统计

kernel-module ×2

linux ×2

kernel ×1

linux-kernel ×1