模块API之find_module
2017-10-30 15:17
501 查看
find_module 函数根据模块的name返回指向这个模块的指针 其用法如下: if (mutex_lock_interruptible(&module_mutex) != 0) return -EINTR; mod = find_module(name); if (!mod) { ret = -ENOENT; goto out; } mutex_unlock(&module_mutex); 其使用时一般用module_mutex 这个mutex包起来 find_module的源码在linux/kernel/module.c struct module *find_module(const char *name) { module_assert_mutex(); return find_module_all(name, strlen(name), false); } EXPORT_SYMBOL_GPL(find_module); 继续看find_module_all static struct module *find_module_all(const char *name, size_t len, bool even_unformed) { struct module *mod; module_assert_mutex_or_preempt(); //可见循环查找modules 这个list,这里的even_unformed 为false,如果这个模块还处于MODULE_STATE_UNFORMED //的话,则模块还没有加载好,就文卫没有找到 list_for_each_entry_rcu(mod, &modules, list) { if (!even_unformed && mod->state == MODULE_STATE_UNFORMED) continue; //找到模块的标准是模块的name的size和内容完全相等 if (strlen(mod->name) == len && !memcmp(mod->name, name, len)) return mod; } return NULL; }
相关文章推荐
- 模块API之__module_text_address
- 模块API之register_module_notifier
- 模块API之module_refcount
- 模块API之module_get_kallsym
- SIP模块版本错误问题:the sip module implements API v??? but XXX module requires API v???
- Cannot find module 'angular-in-memory-web-api'
- 【精选】Nginx模块Lua-Nginx-Module学习笔记(一)Nginx Lua API 接口详解
- intel dpdk api memory manage module (内存管理模块)
- 模块API之module_is_live
- 模块API之module_address_lookup
- 模块API之module_put/__module_get
- 模块API之lookup_module_symbol_name
- intel dpdk api interrupt module 中断模块介绍
- 模块API之__module_address
- 模块API之lookup_module_symbol_attrs
- apache 模块开发提示错误Cant locate api module
- ERROR in Cannot find module 'node-sass' 找不到 node-sass 模块
- 模块API之try_module_get
- 【ng2】Cannot find module 'angular-in-memory-web-api'
- 执行npm安装模块的命令 Cannot find module