Messages in this thread Patch in this message | | | Date | Thu, 14 Aug 2008 00:14:38 -0600 | From | jmerkey@wolfmoun ... | Subject | [PATCH 2.6.27-rc3 24/29] mdb: add export function to module.c |
| |
add the ability to scan and display the loaded module list inside the debugger.
Signed-off-by: Jeffrey Vernon Merkey (jmerkey@wolfmountaingroup.com)
--- a/kernel/module.c 2008-08-13 14:22:32.000000000 -0600 +++ b/kernel/module.c 2008-08-13 11:56:03.000000000 -0600 @@ -2503,6 +2503,41 @@ return 0; } +#if defined(CONFIG_MDB) || defined(CONFIG_MDB_MODULE) +int mdb_modules(char *str, int (*print)(char *s, ...)) +{ + struct module *mod; + struct module_use *use; + + if (!print) + return 0; + + list_for_each_entry(mod, &modules, list) + { + if (str && *str && !strstr(mod->name, str)) + continue; + + print(" 0x%08p ", mod->module_core); + print("%s", mod->name); + print(" %lu %02u ", mod->init_size + mod->core_size, + module_refcount(mod)); + list_for_each_entry(use, &mod->modules_which_use_me, list) + print("%s,", use->module_which_uses->name); + if (mod->init != NULL && mod->exit == NULL) + print("[permanent],"); + print(" %s ", mod->state == MODULE_STATE_GOING ? "Unloading": + mod->state == MODULE_STATE_COMING ? "Loading": + "Live"); + if (print("\n")) + return 1; + } + return 0; +} +#if defined(CONFIG_MDB_MODULE) +EXPORT_SYMBOL_GPL(mdb_modules); +#endif +#endif + /* Look for this name: can be of form module:name. */ unsigned long module_kallsyms_lookup_name(const char *name) {
| |