【发布时间】:2020-12-31 04:50:54
【问题描述】:
我有一个基于平台驱动程序的 Linux 内核模块。
我在那里实现了probe() 和remove() 方法。
struct platform_driver {
int (*probe)(struct platform_device *);
int (*remove)(struct platform_device *);
}
现在当用户执行rmmod <myModule> 然后
remove() 方法正在被调用。在这里,我执行了一些条件检查,并知道用户不应该在这里执行rmmod。在这里,我不想执行任何清理并使这个 rmmod 失败。
我尝试在remove() 中返回-1 或-EBUSY,但在rmmod <myModule> 之后它仍然被卸载并且不会显示在lsmod 的输出中。
有什么方法可以停止在remove() 方法中卸载我的模块?
【问题讨论】:
标签: c linux linux-kernel linux-device-driver kernel-module