内核相关
来源:互联网 发布:3d照相机软件 编辑:程序博客网 时间:2024/05/17 23:23
2.4内核中,模块自身通过 MOD_INC_USE_COUNT, MOD_DEC_USE_COUNT宏来管理自己被使用的计数。
2.6内核提供了更健壮、灵活的模块计数管理接口 try_module_get(&module), module_put(&module)取代2.4中的模块使用计数管理宏;模块的使用计数不必由自身管理,而且在管理模块使用计数时考虑到 SMP与PREEMPT机制的影响。
int try_module_get(struct module *module); 用于增加模块使用计数;若返回为0,表示调用失败,希望使用的模块没有被加载或正在被卸载中。
void module_put(struct module *module); 减少模块使用计数。
try_module_get与module_put 的引入与使用与2.6内核下的设备模型密切相关。模块是用来管理硬件设备的,2.6内核为不同类型的设备定义了struct module *owner 域,用来指向管理此设备的模块。如字符设备的定义:
struct cdev
{
struct kobject kobj;
struct module *owner;
struct file_operations *ops;
struct list_head list;
dev_t dev;
unsigned int count;
};
从设备使用的角度出发,当需要打开、开始使用某个设备时,使用 try_module_get(dev->owner)去增加管理此设备的 owner模块的使用计数;当关闭、不再使用此设备时,使用module_put(dev->owner)减少对管理此设备的owner模块的使用 计数。这样,当设备在使用时,管理此设备的模块就不能被卸载;只有设备不再使用时模块才能被卸载。
2.6内核下,对于为具体设备写驱动的开发人员而言,基本无需使用 try_module_get与module_put,因为此时开发人员所写的驱动通常为支持某具体设备的owner模块,对此设备owner模块的计数管理由内核里更底层的代码如总线驱动或是此类设备共用的核心模块来实现,从而简化了设备驱动开发。
- 内核相关
- 内核相关
- 内核相关
- 内核相关资源
- Linux内核相关资源
- linux内核相关基础
- 文件相关内核数据结构
- 内核虚拟机KVM相关
- 内核线程相关
- 编译内核相关
- Linux内核编译相关
- Linux内核相关资源
- 文件相关内核数据结构
- linux 内核相关命令
- 内核移植相关
- 内核模块相关命令
- linux 内核 相关
- linux内核线程相关
- linq.js - jQuery Plugin
- 1的个数
- 最短路径 简单的代码
- libusb+vc6.0环境下demo的编译环境搭建
- Ural FU Championship 2012
- 内核相关
- __doPostBack简单的使用方法
- android shape的使用
- 黑马程序员_线程阻塞问题
- ios证书申请
- 并查集的 路径压缩(递归和非递归)
- Android 常用命令
- 【数论】hdu_1999_不可摸数_201407310919
- PHPSTORM 中文版/汉化 即常用快捷键和配置