【问题标题】:Is there a way to remove loaded module from probe function in linux device driver?有没有办法从 linux 设备驱动程序中的探测函数中删除加载的模块?
【发布时间】:2019-07-23 05:20:03
【问题描述】:

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

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

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

感谢您的宝贵时间..

【问题讨论】:

  • 我想到了一种方法,如果没有根据设备树属性调用probe(),并且该设备树节点是通过设备树覆盖机制实现的。只是一个想法。

标签: linux-kernel device-driver


【解决方案1】:

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

int request_module(const char *module_name);

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

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

【讨论】:

    猜你喜欢
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 2011-04-14
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多