module: Move kdb module related code out of main kdb code
No functional change. This patch migrates the kdb 'lsmod' command support out of main kdb code into its own file under kernel/module. In addition to the above, a minor style warning i.e. missing a blank line after declarations, was resolved too. The new file was added to MAINTAINERS. Finally we remove linux/module.h as it is entirely redundant. Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org> Acked-by: Daniel Thompson <daniel.thompson@linaro.org> Signed-off-by: Aaron Tomlin <atomlin@redhat.com> Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
This commit is contained in:
Родитель
44c09535de
Коммит
f64205a420
|
@ -10907,6 +10907,7 @@ F: drivers/tty/serial/kgdboc.c
|
|||
F: include/linux/kdb.h
|
||||
F: include/linux/kgdb.h
|
||||
F: kernel/debug/
|
||||
F: kernel/module/kdb.c
|
||||
|
||||
KHADAS MCU MFD DRIVER
|
||||
M: Neil Armstrong <narmstrong@baylibre.com>
|
||||
|
|
|
@ -222,5 +222,6 @@ enum {
|
|||
|
||||
extern int kdbgetintenv(const char *, int *);
|
||||
extern int kdb_set(int, const char **);
|
||||
int kdb_lsmod(int argc, const char **argv);
|
||||
|
||||
#endif /* !_KDB_H */
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
* Copyright (c) 2009 Wind River Systems, Inc. All Rights Reserved.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/kernel.h>
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#include <linux/kdb.h>
|
||||
#include <linux/keyboard.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
/* Keyboard Controller Registers on normal PCs. */
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
#include <linux/utsname.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/moduleparam.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/init.h>
|
||||
|
@ -2004,54 +2003,6 @@ static int kdb_ef(int argc, const char **argv)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_MODULES)
|
||||
/*
|
||||
* kdb_lsmod - This function implements the 'lsmod' command. Lists
|
||||
* currently loaded kernel modules.
|
||||
* Mostly taken from userland lsmod.
|
||||
*/
|
||||
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%px ", mod->name,
|
||||
mod->core_layout.size, (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->core_layout.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;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_MODULES */
|
||||
|
||||
/*
|
||||
* kdb_env - This function implements the 'env' command. Display the
|
||||
* current environment variables.
|
||||
|
|
|
@ -226,10 +226,6 @@ extern void kdb_kbd_cleanup_state(void);
|
|||
#define kdb_kbd_cleanup_state()
|
||||
#endif /* ! CONFIG_KDB_KEYBOARD */
|
||||
|
||||
#ifdef CONFIG_MODULES
|
||||
extern struct list_head *kdb_modules;
|
||||
#endif /* CONFIG_MODULES */
|
||||
|
||||
extern char kdb_prompt_str[];
|
||||
|
||||
#define KDB_WORD_SIZE ((int)sizeof(unsigned long))
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
#include <linux/stddef.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/highmem.h>
|
||||
#include <linux/hardirq.h>
|
||||
#include <linux/delay.h>
|
||||
|
|
|
@ -17,3 +17,4 @@ obj-$(CONFIG_DEBUG_KMEMLEAK) += debug_kmemleak.o
|
|||
obj-$(CONFIG_KALLSYMS) += kallsyms.o
|
||||
obj-$(CONFIG_PROC_FS) += procfs.o
|
||||
obj-$(CONFIG_SYSFS) += sysfs.o
|
||||
obj-$(CONFIG_KGDB_KDB) += kdb.o
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
// 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 0x%px ", mod->name,
|
||||
mod->core_layout.size, (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->core_layout.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;
|
||||
}
|
|
@ -108,10 +108,6 @@ static void mod_update_bounds(struct module *mod)
|
|||
__mod_update_bounds(mod->init_layout.base, mod->init_layout.size);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_KGDB_KDB
|
||||
struct list_head *kdb_modules = &modules; /* kdb needs the list of modules */
|
||||
#endif /* CONFIG_KGDB_KDB */
|
||||
|
||||
static void module_assert_mutex_or_preempt(void)
|
||||
{
|
||||
#ifdef CONFIG_LOCKDEP
|
||||
|
|
Загрузка…
Ссылка в новой задаче