check top-level command registrations
When calling module_register_commands, the return value needs to be checked for failures. Instead of duplicating code, use an array of function pointers to the identical registration functions to iterate over during startup.
This commit is contained in:
parent
eae56d27c3
commit
c5eb8e29bd
|
@ -184,6 +184,11 @@ static const struct command_registration openocd_command_handlers[] = {
|
||||||
COMMAND_REGISTRATION_DONE
|
COMMAND_REGISTRATION_DONE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int openocd_register_commands(struct command_context *cmd_ctx)
|
||||||
|
{
|
||||||
|
return register_commands(cmd_ctx, NULL, openocd_command_handlers);
|
||||||
|
}
|
||||||
|
|
||||||
struct command_context *global_cmd_ctx;
|
struct command_context *global_cmd_ctx;
|
||||||
|
|
||||||
/* NB! this fn can be invoked outside this file for non PC hosted builds */
|
/* NB! this fn can be invoked outside this file for non PC hosted builds */
|
||||||
|
@ -192,28 +197,41 @@ struct command_context *setup_command_handler(Jim_Interp *interp)
|
||||||
log_init();
|
log_init();
|
||||||
LOG_DEBUG("log_init: complete");
|
LOG_DEBUG("log_init: complete");
|
||||||
|
|
||||||
struct command_context *cmd_ctx;
|
const char *startup = openocd_startup_tcl;
|
||||||
|
struct command_context *cmd_ctx = command_init(startup, interp);
|
||||||
|
|
||||||
global_cmd_ctx = cmd_ctx = command_init(openocd_startup_tcl, interp);
|
|
||||||
|
|
||||||
register_commands(cmd_ctx, NULL, openocd_command_handlers);
|
|
||||||
/* register subsystem commands */
|
/* register subsystem commands */
|
||||||
server_register_commands(cmd_ctx);
|
typedef int (*command_registrant_t)(struct command_context *cmd_ctx);
|
||||||
gdb_register_commands(cmd_ctx);
|
command_registrant_t command_registrants[] = {
|
||||||
log_register_commands(cmd_ctx);
|
&openocd_register_commands,
|
||||||
jtag_register_commands(cmd_ctx);
|
&server_register_commands,
|
||||||
xsvf_register_commands(cmd_ctx);
|
&gdb_register_commands,
|
||||||
svf_register_commands(cmd_ctx);
|
&log_register_commands,
|
||||||
target_register_commands(cmd_ctx);
|
&jtag_register_commands,
|
||||||
flash_register_commands(cmd_ctx);
|
&xsvf_register_commands,
|
||||||
nand_register_commands(cmd_ctx);
|
&svf_register_commands,
|
||||||
pld_register_commands(cmd_ctx);
|
&target_register_commands,
|
||||||
mflash_register_commands(cmd_ctx);
|
&flash_register_commands,
|
||||||
|
&nand_register_commands,
|
||||||
|
&pld_register_commands,
|
||||||
|
&mflash_register_commands,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
for (unsigned i = 0; NULL != command_registrants[i]; i++)
|
||||||
|
{
|
||||||
|
int retval = (*command_registrants[i])(cmd_ctx);
|
||||||
|
if (ERROR_OK != retval)
|
||||||
|
{
|
||||||
|
command_done(cmd_ctx);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
LOG_DEBUG("command registration: complete");
|
LOG_DEBUG("command registration: complete");
|
||||||
|
|
||||||
LOG_OUTPUT(OPENOCD_VERSION "\n");
|
LOG_OUTPUT(OPENOCD_VERSION "\n");
|
||||||
|
|
||||||
|
global_cmd_ctx = cmd_ctx;
|
||||||
|
|
||||||
return cmd_ctx;
|
return cmd_ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue