mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
kdb: Simplify kdb commands registration
Simplify kdb commands registration via using linked list instead of static array for commands storage. Signed-off-by: Sumit Garg <sumit.garg@linaro.org> Link: https://lore.kernel.org/r/20210224070827.408771-1-sumit.garg@linaro.org Reviewed-by: Douglas Anderson <dianders@chromium.org> [daniel.thompson@linaro.org: Removed a bunch of .cmd_minline = 0 initializers] Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
This commit is contained in:
committed by
Daniel Thompson
parent
d027fdc4fa
commit
e4f291b3f7
+50
-25
@@ -522,6 +522,54 @@ static int kdb_ss(int argc, const char **argv)
|
|||||||
return KDB_CMD_SS;
|
return KDB_CMD_SS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static kdbtab_t bptab[] = {
|
||||||
|
{ .cmd_name = "bp",
|
||||||
|
.cmd_func = kdb_bp,
|
||||||
|
.cmd_usage = "[<vaddr>]",
|
||||||
|
.cmd_help = "Set/Display breakpoints",
|
||||||
|
.cmd_flags = KDB_ENABLE_FLOW_CTRL | KDB_REPEAT_NO_ARGS,
|
||||||
|
},
|
||||||
|
{ .cmd_name = "bl",
|
||||||
|
.cmd_func = kdb_bp,
|
||||||
|
.cmd_usage = "[<vaddr>]",
|
||||||
|
.cmd_help = "Display breakpoints",
|
||||||
|
.cmd_flags = KDB_ENABLE_FLOW_CTRL | KDB_REPEAT_NO_ARGS,
|
||||||
|
},
|
||||||
|
{ .cmd_name = "bc",
|
||||||
|
.cmd_func = kdb_bc,
|
||||||
|
.cmd_usage = "<bpnum>",
|
||||||
|
.cmd_help = "Clear Breakpoint",
|
||||||
|
.cmd_flags = KDB_ENABLE_FLOW_CTRL,
|
||||||
|
},
|
||||||
|
{ .cmd_name = "be",
|
||||||
|
.cmd_func = kdb_bc,
|
||||||
|
.cmd_usage = "<bpnum>",
|
||||||
|
.cmd_help = "Enable Breakpoint",
|
||||||
|
.cmd_flags = KDB_ENABLE_FLOW_CTRL,
|
||||||
|
},
|
||||||
|
{ .cmd_name = "bd",
|
||||||
|
.cmd_func = kdb_bc,
|
||||||
|
.cmd_usage = "<bpnum>",
|
||||||
|
.cmd_help = "Disable Breakpoint",
|
||||||
|
.cmd_flags = KDB_ENABLE_FLOW_CTRL,
|
||||||
|
},
|
||||||
|
{ .cmd_name = "ss",
|
||||||
|
.cmd_func = kdb_ss,
|
||||||
|
.cmd_usage = "",
|
||||||
|
.cmd_help = "Single Step",
|
||||||
|
.cmd_minlen = 1,
|
||||||
|
.cmd_flags = KDB_ENABLE_FLOW_CTRL | KDB_REPEAT_NO_ARGS,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static kdbtab_t bphcmd = {
|
||||||
|
.cmd_name = "bph",
|
||||||
|
.cmd_func = kdb_bp,
|
||||||
|
.cmd_usage = "[<vaddr>]",
|
||||||
|
.cmd_help = "[datar [length]|dataw [length]] Set hw brk",
|
||||||
|
.cmd_flags = KDB_ENABLE_FLOW_CTRL | KDB_REPEAT_NO_ARGS,
|
||||||
|
};
|
||||||
|
|
||||||
/* Initialize the breakpoint table and register breakpoint commands. */
|
/* Initialize the breakpoint table and register breakpoint commands. */
|
||||||
|
|
||||||
void __init kdb_initbptab(void)
|
void __init kdb_initbptab(void)
|
||||||
@@ -537,30 +585,7 @@ void __init kdb_initbptab(void)
|
|||||||
for (i = 0, bp = kdb_breakpoints; i < KDB_MAXBPT; i++, bp++)
|
for (i = 0, bp = kdb_breakpoints; i < KDB_MAXBPT; i++, bp++)
|
||||||
bp->bp_free = 1;
|
bp->bp_free = 1;
|
||||||
|
|
||||||
kdb_register_flags("bp", kdb_bp, "[<vaddr>]",
|
kdb_register_table(bptab, ARRAY_SIZE(bptab));
|
||||||
"Set/Display breakpoints", 0,
|
|
||||||
KDB_ENABLE_FLOW_CTRL | KDB_REPEAT_NO_ARGS);
|
|
||||||
kdb_register_flags("bl", kdb_bp, "[<vaddr>]",
|
|
||||||
"Display breakpoints", 0,
|
|
||||||
KDB_ENABLE_FLOW_CTRL | KDB_REPEAT_NO_ARGS);
|
|
||||||
if (arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT)
|
if (arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT)
|
||||||
kdb_register_flags("bph", kdb_bp, "[<vaddr>]",
|
kdb_register_table(&bphcmd, 1);
|
||||||
"[datar [length]|dataw [length]] Set hw brk", 0,
|
|
||||||
KDB_ENABLE_FLOW_CTRL | KDB_REPEAT_NO_ARGS);
|
|
||||||
kdb_register_flags("bc", kdb_bc, "<bpnum>",
|
|
||||||
"Clear Breakpoint", 0,
|
|
||||||
KDB_ENABLE_FLOW_CTRL);
|
|
||||||
kdb_register_flags("be", kdb_bc, "<bpnum>",
|
|
||||||
"Enable Breakpoint", 0,
|
|
||||||
KDB_ENABLE_FLOW_CTRL);
|
|
||||||
kdb_register_flags("bd", kdb_bc, "<bpnum>",
|
|
||||||
"Disable Breakpoint", 0,
|
|
||||||
KDB_ENABLE_FLOW_CTRL);
|
|
||||||
|
|
||||||
kdb_register_flags("ss", kdb_ss, "",
|
|
||||||
"Single Step", 1,
|
|
||||||
KDB_ENABLE_FLOW_CTRL | KDB_REPEAT_NO_ARGS);
|
|
||||||
/*
|
|
||||||
* Architecture dependent initialization.
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|||||||
+261
-191
File diff suppressed because it is too large
Load Diff
@@ -174,8 +174,11 @@ typedef struct _kdbtab {
|
|||||||
short cmd_minlen; /* Minimum legal # command
|
short cmd_minlen; /* Minimum legal # command
|
||||||
* chars required */
|
* chars required */
|
||||||
kdb_cmdflags_t cmd_flags; /* Command behaviour flags */
|
kdb_cmdflags_t cmd_flags; /* Command behaviour flags */
|
||||||
|
struct list_head list_node; /* Command list */
|
||||||
|
bool is_dynamic; /* Command table allocation type */
|
||||||
} kdbtab_t;
|
} kdbtab_t;
|
||||||
|
|
||||||
|
extern void kdb_register_table(kdbtab_t *kp, size_t len);
|
||||||
extern int kdb_bt(int, const char **); /* KDB display back trace */
|
extern int kdb_bt(int, const char **); /* KDB display back trace */
|
||||||
|
|
||||||
/* KDB breakpoint management functions */
|
/* KDB breakpoint management functions */
|
||||||
|
|||||||
Reference in New Issue
Block a user