首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于结构file_operations的.owner字段

关于结构file_operations的.owner字段
EN

Stack Overflow用户
提问于 2018-01-28 02:15:58
回答 1查看 723关注 0票数 3

参考LDD-3 pg-50。上面写着

代码语言:javascript
复制
  struct module *owner

第一个file_operations字段根本不是一个操作;它是一个指向“拥有”结构的模块的指针。此字段用于防止在使用模块的操作时将其卸载。几乎所有时候,它都被简单地初始化为THIS_MODULE。

如果我们参考LDD-2,解释是

此字段不像file_operations结构中的所有其他字段那样是一种方法。相反,它是指向“拥有”此结构的模块的指针;内核使用它来维护模块的使用计数。

现在我的问题是,这个字段实际上是如何阻止模块被卸载的?

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2018-01-28 02:51:00

当打开使用这些操作的文件时,在调用.open()文件的操作之前,会为.owner模块调用函数try_module_get()。这会增加模块的使用计数器,因此不能使用rmmod命令卸载模块。

当删除对文件的最后一个引用并完成其.release()操作时,将为.owner模块调用函数module_put。这会递减模块的使用计数器,因此模块可以再次卸载(除非它的引用计数器由于其他原因而递增)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48478978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档