gpt4 book ai didi

linux - 无法 "rmmod"模块

转载 作者:IT王子 更新时间:2023-10-29 00:35:06 25 4
gpt4 key购买 nike

我正在使用涉及内核和用户空间代码的大型嵌入式软件(ARM 处理器、嵌入式 linux 2.6.31、busybox)。通常首先加载一个内核模块,守护进程与该模块建立网络链接套接字。

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

% rmmod _module.ko
% rmmod: _module.ko: Resource temporarily unavailable

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

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

还有谁知道还有什么要看和探索的吗?

最佳答案

检查与您的模块相关的所有接口(interface)是否都未“启动”。

如果与您的模块相关的任何接口(interface)处于“启动”状态,则 rmmod 将失败并返回 -11。

所以在调用 rmmod 之前,使用“netcfg”命令检查事件接口(interface)。然后使用 ifconfig,将您的界面设置为 'ifconfig <interface_name> down'

然后尝试运行rmmod <module_name> .它会起作用的!!

1.netcfg <lists out all interfaces>
2.ifconfig <interface_name> down
3.rmmod <module_name>

关于linux - 无法 "rmmod"模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13847217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com