diff options
| author | Jason Wessel <jason.wessel@windriver.com> | 2010-10-11 11:20:14 -0400 |
|---|---|---|
| committer | Jason Wessel <jason.wessel@windriver.com> | 2010-10-22 16:34:11 -0400 |
| commit | f7030bbc446430ecd12c9ad02cf0ea94934e5f91 (patch) | |
| tree | 1a281ffa0c2686fa898081781a0c7b9bbc2d5b00 /kernel/debug | |
| parent | fb70b5888b70b0b50f738fbfc019445493112eb1 (diff) | |
kdb: Allow kernel loadable modules to add kdb shell functions
In order to allow kernel modules to dynamically add a command to the
kdb shell the kdb_register, kdb_register_repeat, kdb_unregister, and
kdb_printf need to be exported as GPL symbols.
Any kernel module that adds a dynamic kdb shell function should only
need to include linux/kdb.h.
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Diffstat (limited to 'kernel/debug')
| -rw-r--r-- | kernel/debug/kdb/kdb_io.c | 2 | ||||
| -rw-r--r-- | kernel/debug/kdb/kdb_main.c | 4 | ||||
| -rw-r--r-- | kernel/debug/kdb/kdb_private.h | 39 |
3 files changed, 5 insertions, 40 deletions
diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c index c9b7f4f90bba..96fdaac46a80 100644 --- a/kernel/debug/kdb/kdb_io.c +++ b/kernel/debug/kdb/kdb_io.c | |||
| @@ -823,4 +823,4 @@ int kdb_printf(const char *fmt, ...) | |||
| 823 | 823 | ||
| 824 | return r; | 824 | return r; |
| 825 | } | 825 | } |
| 826 | 826 | EXPORT_SYMBOL_GPL(kdb_printf); | |
diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index caf057a3de0e..5448990a299e 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c | |||
| @@ -2783,6 +2783,8 @@ int kdb_register_repeat(char *cmd, | |||
| 2783 | 2783 | ||
| 2784 | return 0; | 2784 | return 0; |
| 2785 | } | 2785 | } |
| 2786 | EXPORT_SYMBOL_GPL(kdb_register_repeat); | ||
| 2787 | |||
| 2786 | 2788 | ||
| 2787 | /* | 2789 | /* |
| 2788 | * kdb_register - Compatibility register function for commands that do | 2790 | * kdb_register - Compatibility register function for commands that do |
| @@ -2805,6 +2807,7 @@ int kdb_register(char *cmd, | |||
| 2805 | return kdb_register_repeat(cmd, func, usage, help, minlen, | 2807 | return kdb_register_repeat(cmd, func, usage, help, minlen, |
| 2806 | KDB_REPEAT_NONE); | 2808 | KDB_REPEAT_NONE); |
| 2807 | } | 2809 | } |
| 2810 | EXPORT_SYMBOL_GPL(kdb_register); | ||
| 2808 | 2811 | ||
| 2809 | /* | 2812 | /* |
| 2810 | * kdb_unregister - This function is used to unregister a kernel | 2813 | * kdb_unregister - This function is used to unregister a kernel |
| @@ -2833,6 +2836,7 @@ int kdb_unregister(char *cmd) | |||
| 2833 | /* Couldn't find it. */ | 2836 | /* Couldn't find it. */ |
| 2834 | return 1; | 2837 | return 1; |
| 2835 | } | 2838 | } |
| 2839 | EXPORT_SYMBOL_GPL(kdb_unregister); | ||
| 2836 | 2840 | ||
| 2837 | /* Initialize the kdb command table. */ | 2841 | /* Initialize the kdb command table. */ |
| 2838 | static void __init kdb_inittab(void) | 2842 | static void __init kdb_inittab(void) |
diff --git a/kernel/debug/kdb/kdb_private.h b/kernel/debug/kdb/kdb_private.h index be775f7e81e0..1921e6e4c0bc 100644 --- a/kernel/debug/kdb/kdb_private.h +++ b/kernel/debug/kdb/kdb_private.h | |||
| @@ -15,29 +15,6 @@ | |||
| 15 | #include <linux/kgdb.h> | 15 | #include <linux/kgdb.h> |
| 16 | #include "../debug_core.h" | 16 | #include "../debug_core.h" |
| 17 | 17 | ||
| 18 | /* Kernel Debugger Error codes. Must not overlap with command codes. */ | ||
| 19 | #define KDB_NOTFOUND (-1) | ||
| 20 | #define KDB_ARGCOUNT (-2) | ||
| 21 | #define KDB_BADWIDTH (-3) | ||
| 22 | #define KDB_BADRADIX (-4) | ||
| 23 | #define KDB_NOTENV (-5) | ||
| 24 | #define KDB_NOENVVALUE (-6) | ||
| 25 | #define KDB_NOTIMP (-7) | ||
| 26 | #define KDB_ENVFULL (-8) | ||
| 27 | #define KDB_ENVBUFFULL (-9) | ||
| 28 | #define KDB_TOOMANYBPT (-10) | ||
| 29 | #define KDB_TOOMANYDBREGS (-11) | ||
| 30 | #define KDB_DUPBPT (-12) | ||
| 31 | #define KDB_BPTNOTFOUND (-13) | ||
| 32 | #define KDB_BADMODE (-14) | ||
| 33 | #define KDB_BADINT (-15) | ||
| 34 | #define KDB_INVADDRFMT (-16) | ||
| 35 | #define KDB_BADREG (-17) | ||
| 36 | #define KDB_BADCPUNUM (-18) | ||
| 37 | #define KDB_BADLENGTH (-19) | ||
| 38 | #define KDB_NOBP (-20) | ||
| 39 | #define KDB_BADADDR (-21) | ||
| 40 | |||
| 41 | /* Kernel Debugger Command codes. Must not overlap with error codes. */ | 18 | /* Kernel Debugger Command codes. Must not overlap with error codes. */ |
| 42 | #define KDB_CMD_GO (-1001) | 19 | #define KDB_CMD_GO (-1001) |
| 43 | #define KDB_CMD_CPU (-1002) | 20 | #define KDB_CMD_CPU (-1002) |
| @@ -93,17 +70,6 @@ | |||
| 93 | */ | 70 | */ |
| 94 | #define KDB_MAXBPT 16 | 71 | #define KDB_MAXBPT 16 |
| 95 | 72 | ||
| 96 | /* Maximum number of arguments to a function */ | ||
| 97 | #define KDB_MAXARGS 16 | ||
| 98 | |||
| 99 | typedef enum { | ||
| 100 | KDB_REPEAT_NONE = 0, /* Do not repeat this command */ | ||
| 101 | KDB_REPEAT_NO_ARGS, /* Repeat the command without arguments */ | ||
| 102 | KDB_REPEAT_WITH_ARGS, /* Repeat the command including its arguments */ | ||
| 103 | } kdb_repeat_t; | ||
| 104 | |||
| 105 | typedef int (*kdb_func_t)(int, const char **); | ||
| 106 | |||
| 107 | /* Symbol table format returned by kallsyms. */ | 73 | /* Symbol table format returned by kallsyms. */ |
| 108 | typedef struct __ksymtab { | 74 | typedef struct __ksymtab { |
| 109 | unsigned long value; /* Address of symbol */ | 75 | unsigned long value; /* Address of symbol */ |
| @@ -123,11 +89,6 @@ extern int kallsyms_symbol_next(char *prefix_name, int flag); | |||
| 123 | extern int kallsyms_symbol_complete(char *prefix_name, int max_len); | 89 | extern int kallsyms_symbol_complete(char *prefix_name, int max_len); |
| 124 | 90 | ||
| 125 | /* Exported Symbols for kernel loadable modules to use. */ | 91 | /* Exported Symbols for kernel loadable modules to use. */ |
| 126 | extern int kdb_register(char *, kdb_func_t, char *, char *, short); | ||
| 127 | extern int kdb_register_repeat(char *, kdb_func_t, char *, char *, | ||
| 128 | short, kdb_repeat_t); | ||
| 129 | extern int kdb_unregister(char *); | ||
| 130 | |||
| 131 | extern int kdb_getarea_size(void *, unsigned long, size_t); | 92 | extern int kdb_getarea_size(void *, unsigned long, size_t); |
| 132 | extern int kdb_putarea_size(unsigned long, void *, size_t); | 93 | extern int kdb_putarea_size(unsigned long, void *, size_t); |
| 133 | 94 | ||
