linux-kernel - 有没有办法从 linux 设备驱动程序中的探测功能中删除加载的模块?
问题描述
我的要求是从它自己的探测功能中卸载/删除加载的模块。
可能吗?如果是,那么请帮助我这样做。
例如,我调用了内核模块ncr-power
,在启动时它被系统加载并probe
调用函数。我不想在某些情况下加载它,但加载不是我的手,所以如果我可以在加载后移除它。
谢谢你的时间..
解决方案
有一种从内核加载模块的方法,linux/kmod.h
int request_module(const char *module_name);
但似乎没有相应的调用来删除模块。LDD,第 11 章描述了 request_module() 以及用户模式帮助程序,这可能是一种做你想做的事情的机制。如果驱动程序调用删除驱动程序的调用,当该调用返回时会发生什么?
我会这样做: 1. 在你的探测函数中,如果你想卸载模块,在驱动程序中设置一个变量。2. 从您在启动时运行的脚本或程序中,在用户空间中,调用返回卸载/不卸载状态的 ioctl。3. 如果需要,从用户模式卸载驱动程序。
推荐阅读
- sql - SQL中的除法 - 查找每日金额
- svg - 在 Node-RED 仪表板中创建网站弹出窗口
- jquery - 在启动动画jquery之前等待...在页面加载后
- html - CSS 网格 - 重叠网格线号
- javascript - 在 p5.js 程序中将 image(canvas, 0, 0) 放在哪里?
- react-native - React Native:安装应用程序失败。无法找到或加载主类 org.gradle.wrapper.GradleWrapperMain
- c# - .NET Framework 中用于网络流量的性能计数器
- java - 基本实体自定义列
- javascript - 我的横向滚动网站不适用于平滑滚动
- mysql - 从一个列和 GROUP BY 其他列的两个条件返回 COUNT