如何为我自己编写的内核模块禁用rmmod?

如何为我自己编写的内核模块禁用rmmod?

问题描述:

如果用户进程与内核模块一起工作,我希望另一个进程不能为该模块启动rmmod。 如何实现这种类型的功能?如何为我自己编写的内核模块禁用rmmod?

- Linux内核编程的开始。

rmmod只能只有当引用计数为零时卸载模块。

如果引用计数在用户进程连接时增加(并在断开连接时递减),则可以。

如果模块暴露出的设备,或安装为一个文件系统,这应该是自然的处理 - 如果没有,我想这将取决于用户空间的接口上,但是这从哪里开始寻找。

顺便说一句,lsmod会显示你的模块引用计数。您可以检查当用户空间进程连接时它是否增加。

+0

使用列号与refcount相同吗? – 2012-02-15 10:36:30

+0

是,'用于by'示出了引用计数以及模块引用它的列表(该列表可以是空的,即使具有非零计数值,尤其是对于具有每安装的参考文件系统模块)。 – Useless 2012-02-15 10:39:23

+0

谢谢。 GET_USE_COUNT(模块) – 2012-02-15 10:45:10