63 lines · 1.5 KB · C
RawDownload
// SPDX-License-Identifier: GPL-2.0-or-later/* * Module kdb support * * Copyright (C) 2010 Jason Wessel */ #include <linux/module.h>#include <linux/kdb.h>#include "internal.h" /* * kdb_lsmod - This function implements the 'lsmod' command.  Lists *	currently loaded kernel modules. *	Mostly taken from userland lsmod. */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, &modules, list) {		if (mod->state == MODULE_STATE_UNFORMED)			continue; 		kdb_printf("%-20s%8u", mod->name, mod->mem[MOD_TEXT].size);		kdb_printf("/%8u", mod->mem[MOD_RODATA].size);		kdb_printf("/%8u", mod->mem[MOD_RO_AFTER_INIT].size);		kdb_printf("/%8u", mod->mem[MOD_DATA].size); 		kdb_printf("  0x%px ", (void *)mod);#ifdef CONFIG_MODULE_UNLOAD		kdb_printf("%4d ", module_refcount(mod));#endif		if (mod->state == MODULE_STATE_GOING)			kdb_printf(" (Unloading)");		else if (mod->state == MODULE_STATE_COMING)			kdb_printf(" (Loading)");		else			kdb_printf(" (Live)");		kdb_printf(" 0x%px", mod->mem[MOD_TEXT].base);		kdb_printf("/0x%px", mod->mem[MOD_RODATA].base);		kdb_printf("/0x%px", mod->mem[MOD_RO_AFTER_INIT].base);		kdb_printf("/0x%px", mod->mem[MOD_DATA].base); #ifdef CONFIG_MODULE_UNLOAD		{			struct module_use *use; 			kdb_printf(" [ ");			list_for_each_entry(use, &mod->source_list,					    source_list)				kdb_printf("%s ", use->target->name);			kdb_printf("]\n");		}#endif	} 	return 0;}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t