LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4299|回复: 7

求救!内核编程问题,rmmod无法卸载模块如何解决????

[复制链接]
发表于 2008-3-7 18:57:14 | 显示全部楼层 |阅读模式
大家好!刚开始学习驱动,按照ldd写了一个程序后,insmod也没啥事,但是当向设备写入东西以后出了错误,然后就无法卸载模块了!rmmod后提示:
device or resource busy,搞的我只能重启!这太可怕了,我不想每次都重启机器啊!请问有什么方法能卸掉模块????
发表于 2008-3-9 21:47:42 | 显示全部楼层
很多情况下,这样的现象都是内存泄露的原因。
回复 支持 反对

使用道具 举报

发表于 2008-4-1 14:21:34 | 显示全部楼层
这就是对内核动刀时的不良后果,以后还会常碰到的:-)
回复 支持 反对

使用道具 举报

发表于 2008-4-30 16:38:55 | 显示全部楼层
我也有遇到这个问题,在编译内核时,要选上unloading module support
回复 支持 反对

使用道具 举报

发表于 2008-5-6 23:57:13 | 显示全部楼层
如果你是在调试这个模块,因为上一次卸载不成功而导致无法再次加载的话,不需要重启,你只要把模块改个名就可以多次加载了。如果你是服务器网管,对系统的健壮性有要求并且不能重启的话,只好把模块改好一点喽。
回复 支持 反对

使用道具 举报

发表于 2008-6-1 15:03:01 | 显示全部楼层
我刚刚编过一个简单的虚拟网络设备
也遇到过你说的情况
当时是因为module_exit函数里释放资源和指针时没写对~
我觉得你可以再好好看看你的程序
这种情况大多数情况是指针的错误引起的
回复 支持 反对

使用道具 举报

发表于 2008-6-3 15:39:37 | 显示全部楼层
我也刚刚遇到这种情况,不过我测试模块都是在xp + vmware下,大不了重启虚拟机,呵呵
回复 支持 反对

使用道具 举报

发表于 2008-6-4 20:08:25 | 显示全部楼层
这是因为你内核模块的问题,估计是close函数不正确。

另外,建议你使用qemu或者usermode linux学习内核开发,这样安全多了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表