首页 > 解决方案 > 有没有办法从 linux 设备驱动程序中的探测功能中删除加载的模块?

问题描述

我的要求是从它自己的探测功能中卸载/删除加载的模块。

可能吗?如果是,那么请帮助我这样做。

例如,我调用了内核模块ncr-power,在启动时它被系统加载并probe调用函数。我不想在某些情况下加载它,但加载不是我的手,所以如果我可以在加载后移除它。

谢谢你的时间..

标签: linux-kerneldevice-driver

解决方案


有一种从内核加载模块的方法,linux/kmod.h

int request_module(const char *module_name);

但似乎没有相应的调用来删除模块。LDD,第 11 章描述了 request_module() 以及用户模式帮助程序,这可能是一种做你想做的事情的机制。如果驱动程序调用删除驱动程序的调用,当该调用返回时会发生什么?

我会这样做: 1. 在你的探测函数中,如果你想卸载模块,在驱动程序中设置一个变量。2. 从您在启动时运行的脚本或程序中,在用户空间中,调用返回卸载/不卸载状态的 ioctl。3. 如果需要,从用户模式卸载驱动程序。


推荐阅读