Linux Audio

Check our new training course

Loading...
Note: File does not exist in v5.4.
 1// SPDX-License-Identifier: GPL-2.0-or-later
 2/*
 3 * Module kdb support
 4 *
 5 * Copyright (C) 2010 Jason Wessel
 6 */
 7
 8#include <linux/module.h>
 9#include <linux/kdb.h>
10#include "internal.h"
11
12/*
13 * kdb_lsmod - This function implements the 'lsmod' command.  Lists
14 *	currently loaded kernel modules.
15 *	Mostly taken from userland lsmod.
16 */
17int kdb_lsmod(int argc, const char **argv)
18{
19	struct module *mod;
20
21	if (argc != 0)
22		return KDB_ARGCOUNT;
23
24	kdb_printf("Module                  Size  modstruct     Used by\n");
25	list_for_each_entry(mod, &modules, list) {
26		if (mod->state == MODULE_STATE_UNFORMED)
27			continue;
28
29		kdb_printf("%-20s%8u", mod->name, mod->core_layout.size);
30#ifdef CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC
31		kdb_printf("/%8u", mod->data_layout.size);
32#endif
33		kdb_printf("  0x%px ", (void *)mod);
34#ifdef CONFIG_MODULE_UNLOAD
35		kdb_printf("%4d ", module_refcount(mod));
36#endif
37		if (mod->state == MODULE_STATE_GOING)
38			kdb_printf(" (Unloading)");
39		else if (mod->state == MODULE_STATE_COMING)
40			kdb_printf(" (Loading)");
41		else
42			kdb_printf(" (Live)");
43		kdb_printf(" 0x%px", mod->core_layout.base);
44#ifdef CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC
45		kdb_printf("/0x%px", mod->data_layout.base);
46#endif
47
48#ifdef CONFIG_MODULE_UNLOAD
49		{
50			struct module_use *use;
51
52			kdb_printf(" [ ");
53			list_for_each_entry(use, &mod->source_list,
54					    source_list)
55				kdb_printf("%s ", use->target->name);
56			kdb_printf("]\n");
57		}
58#endif
59	}
60
61	return 0;
62}