模块API之module_refcount

来源:互联网 发布:全景图拼接软件 编辑:程序博客网 时间:2024/05/29 06:44
module_refcount用来显示该模块被其他模块引用的计数.使用的实例如下:static int kdb_lsmod(int argc, const char **argv){struct module *mod;if (argc != 0)return KDB_ARGCOUNT;kdb_printf("Module                  Size  modstruct     Used by\n");list_for_each_entry(mod, kdb_modules, list) {if (mod->state == MODULE_STATE_UNFORMED)continue;kdb_printf("%-20s%8u  0x%p ", mod->name,   mod->core_layout.size, (void *)mod);#ifdef CONFIG_MODULE_UNLOADkdb_printf("%4d ", module_refcount(mod));#endifif (mod->state == MODULE_STATE_GOING)kdb_printf(" (Unloading)");else if (mod->state == MODULE_STATE_COMING)kdb_printf(" (Loading)");elsekdb_printf(" (Live)");kdb_printf(" 0x%p", mod->core_layout.base);}其源码如下:int module_refcount(struct module *mod){return atomic_read(&mod->refcnt) - MODULE_REF_BASE;}这里的MODULE_REF_BASE 定义如下:#define MODULE_REF_BASE1因为模块在被kmodule加载的时候mod->refcnt 会加1,所以这个模块被其他模块真正引用的计数应该减去1

原创粉丝点击