今天小编要和大家分享的是嵌入式技术相关信息,接下来我将从嵌入式Linux:内核模块引用计数的实现(附源代码),arm嵌入式linux系统开发技术详解(珍藏版)【附光盘一张】这几个方面来介绍。

嵌入式技术相关技术文章嵌入式Linux:内核模块引用计数的实现(附源代码)arm嵌入式linux系统开发技术详解(珍藏版)【附光盘一张】

嵌入式技术相关技术文章嵌入式Linux:内核模块引用计数的实现(附源代码)

一、模块使用计数的背景知识

模块是一种可以在内核运行过程中动态加载、卸载的内核功能组件。2.6内核中模块的命名方式为*.ko。模块在被使用时,是不允许被卸载的。编程时需要用“使用计数”来描述模块是否在被使用。

二、2.4内核使用计数的实现方法

2.4内核中,模块自身通过 MOD_INC_USE_COUNT, MOD_DEC_USE_COUNT宏来管理自己被使用的计数。通常我们在写模块时,会在open方法中加入MOD_INC_USE_COUNT,在close方法中加入MOD_DEC_USE_COUNT来实现使用计数。

三、2.6内核使用计数的实现方法

2.6内核提供了更健壮、灵活的模块计数管理接口 try_module_get(&module), module_put(&module)取代2.4中的模块使用计数管理宏。模块的使用计数不必由自身管理,而且在管理模块使用计数时考虑到SMP与PREEMPT机制的影响(参考module.h中try_module_get和module.c中module_put的实现)。

int try_module_get(struct module *module); 用于增加模块使用计数;若返回为0,表示调用失败,希望使用的模块没有被加载或正在被卸载中。

void module_put(struct module *module); 减少模块使用计数。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查