{
assert(cr->name);
+ /*
+ If it is a non-jim command with no .usage specified,
+ log an error.
+
+ strlen(.usage) == 0 means that the command takes no
+ arguments.
+ */
+ if ((cr->jim_handler == NULL) &&
+ (cr->usage == NULL)) {
+ LOG_DEBUG("BUG: command '%s%s%s' does not have the "
+ "'.usage' field filled out",
+ parent && parent->name ? parent->name : "",
+ parent && parent->name ? " " : "",
+ cr->name);
+ }
+
struct command *c = calloc(1, sizeof(struct command));
if (NULL == c)
return NULL;
.handler = &handle_noinit_command,
.mode = COMMAND_CONFIG,
.help = "Prevent 'init' from being called at startup.",
+ .usage = ""
},
{
.name = "init",
"Changes command mode from CONFIG to EXEC. "
"Unless 'noinit' is called, this command is "
"called automatically at the end of startup.",
-
+ .usage = ""
},
{
.name = "add_script_search_dir",
.handler = &handle_add_script_search_dir_command,
.mode = COMMAND_ANY,
.help = "dir to search for config files and scripts",
-
+ .usage = "<directory>"
},
COMMAND_REGISTRATION_DONE
};
.mode = COMMAND_EXEC,
.help = "loads active fast load image to current target "
"- mainly for profiling purposes",
+ .usage = "",
},
{
.name = "profile",
.handler = handle_profile_command,
.mode = COMMAND_EXEC,
+ .usage = "seconds filename",
.help = "profiling samples the CPU PC",
},
/** @todo don't register virt2phys() unless target supports it */
.name = "soft_reset_halt",
.handler = handle_soft_reset_halt_command,
.mode = COMMAND_EXEC,
+ .usage = "",
.help = "halt the target and do a soft reset",
},
{
.handler = handle_bp_command,
.mode = COMMAND_EXEC,
.help = "list or set hardware or software breakpoint",
- .usage = "usage: bp <address> [<asid>]<length> ['hw'|'hw_ctx']",
+ .usage = "<address> [<asid>]<length> ['hw'|'hw_ctx']",
},
{
.name = "rbp",
.name = "trace",
.mode = COMMAND_EXEC,
.help = "trace command group",
+ .usage = "",
.chain = trace_exec_command_handlers,
},
COMMAND_REGISTRATION_DONE
*/
.mode = COMMAND_ANY,
.help = "Initialize this session's transport",
+ .usage = ""
},
{
.name = "list",
.handler = handle_transport_list,
.mode = COMMAND_ANY,
.help = "list all built-in transports",
+ .usage = ""
},
{
.name = "select",
.mode = COMMAND_ANY,
.help = "Transport command group",
.chain = transport_commands,
+ .usage = ""
},
COMMAND_REGISTRATION_DONE
};