helper/command: pass command prefix to command registration
authorAntonio Borneo <borneo.antonio@gmail.com>
Sun, 10 May 2020 17:35:56 +0000 (19:35 +0200)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sun, 18 Apr 2021 14:33:30 +0000 (15:33 +0100)
Replace the "struct command *parent" parameter with a string that
contains the command prefix.
This abstracts the openocd code from the knowledge of the tree of
struct command.
This also makes unused the function command_find_in_context(), so
remove it.

Change-Id: I598d60719cfdc1811ee6f6edfff8a116f82c7ed6
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/5668
Tested-by: jenkins
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
src/flash/nand/tcl.c
src/flash/nor/esirisc_flash.c
src/flash/nor/tcl.c
src/helper/command.c
src/helper/command.h
src/pld/pld.c
src/target/etm.c

index ca8b9dad4d191d624bdaa5644458b7c0e27ce70e..9e0ca41ace827014c8496884c0bd4c666e7d2791 100644 (file)
@@ -479,8 +479,8 @@ static int nand_init(struct command_context *cmd_ctx)
 {
        if (!nand_devices)
                return ERROR_OK;
-       struct command *parent = command_find_in_context(cmd_ctx, "nand");
-       return register_commands(cmd_ctx, parent, nand_exec_command_handlers);
+
+       return register_commands(cmd_ctx, "nand", nand_exec_command_handlers);
 }
 
 COMMAND_HANDLER(handle_nand_init_command)
index 88f00bccaa6a0a676a5adcfb2d5232a75ee4bfe3..24e8117045d86cd4be8ca0c5b26a10fa4e28d722 100644 (file)
@@ -109,7 +109,6 @@ static const struct command_registration esirisc_flash_command_handlers[];
 FLASH_BANK_COMMAND_HANDLER(esirisc_flash_bank_command)
 {
        struct esirisc_flash_bank *esirisc_info;
-       struct command *esirisc_cmd;
 
        if (CMD_ARGC < 9)
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -123,8 +122,7 @@ FLASH_BANK_COMMAND_HANDLER(esirisc_flash_bank_command)
        bank->driver_priv = esirisc_info;
 
        /* register commands using existing esirisc context */
-       esirisc_cmd = command_find_in_context(CMD_CTX, "esirisc");
-       register_commands(CMD_CTX, esirisc_cmd, esirisc_flash_command_handlers);
+       register_commands(CMD_CTX, "esirisc", esirisc_flash_command_handlers);
 
        return ERROR_OK;
 }
index 66b9a4cb6cd956415614750dcaa6e622c7769597..3f737aca3b030121e884ef3e1ba707820e5a8044 100644 (file)
@@ -1248,8 +1248,7 @@ static int flash_init_drivers(struct command_context *cmd_ctx)
        if (!flash_bank_list())
                return ERROR_OK;
 
-       struct command *parent = command_find_in_context(cmd_ctx, "flash");
-       return register_commands(cmd_ctx, parent, flash_exec_command_handlers);
+       return register_commands(cmd_ctx, "flash", flash_exec_command_handlers);
 }
 
 COMMAND_HANDLER(handle_flash_bank_command)
index 89e217382bc581d309fbba70083ef560b34786aa..114d0732866a8cd1f3a1db26acb2b65d88571e43 100644 (file)
@@ -244,12 +244,6 @@ static struct command *command_find(struct command *head, const char *name)
        return NULL;
 }
 
-struct command *command_find_in_context(struct command_context *cmd_ctx,
-       const char *name)
-{
-       return command_find(cmd_ctx->commands, name);
-}
-
 /**
  * Add the command into the linked list, sorted by name.
  * @param head Address to head of command list pointer, which may be
@@ -391,7 +385,7 @@ static struct command *register_command(struct command_context *context,
        return c;
 }
 
-int __register_commands(struct command_context *cmd_ctx, struct command *parent,
+static int ___register_commands(struct command_context *cmd_ctx, struct command *parent,
        const struct command_registration *cmds, void *data,
        struct target *override_target)
 {
@@ -412,7 +406,7 @@ int __register_commands(struct command_context *cmd_ctx, struct command *parent,
                }
                if (NULL != cr->chain) {
                        struct command *p = c ? : parent;
-                       retval = __register_commands(cmd_ctx, p, cr->chain, data, override_target);
+                       retval = ___register_commands(cmd_ctx, p, cr->chain, data, override_target);
                        if (ERROR_OK != retval)
                                break;
                }
@@ -424,6 +418,18 @@ int __register_commands(struct command_context *cmd_ctx, struct command *parent,
        return retval;
 }
 
+int __register_commands(struct command_context *cmd_ctx, const char *cmd_prefix,
+       const struct command_registration *cmds, void *data,
+       struct target *override_target)
+{
+       struct command *parent = NULL;
+
+       if (cmd_prefix)
+               parent = command_find(cmd_ctx->commands, cmd_prefix);
+
+       return ___register_commands(cmd_ctx, parent, cmds, data, override_target);
+}
+
 int unregister_all_commands(struct command_context *context,
        struct command *parent)
 {
index 871c064d3b31fe1ca606a21d116119824533d864..9a04e9fa100b1ceb10f3bb489164f8119128a3bf 100644 (file)
@@ -240,7 +240,7 @@ struct command_registration {
 /** Use this as the last entry in an array of command_registration records. */
 #define COMMAND_REGISTRATION_DONE { .name = NULL, .chain = NULL }
 
-int __register_commands(struct command_context *cmd_ctx, struct command *parent,
+int __register_commands(struct command_context *cmd_ctx, const char *cmd_prefix,
                const struct command_registration *cmds, void *data,
                struct target *override_target);
 
@@ -252,17 +252,17 @@ int __register_commands(struct command_context *cmd_ctx, struct command *parent,
  * Otherwise, the chained commands are added as children of the command.
  *
  * @param cmd_ctx The command_context in which to register the command.
- * @param parent Register this command as a child of this, or NULL to
+ * @param cmd_prefix Register this command as a child of this, or NULL to
  * register a top-level command.
  * @param cmds Pointer to an array of command_registration records that
  * contains the desired command parameters.  The last record must have
  * NULL for all fields.
  * @returns ERROR_OK on success; ERROR_FAIL if any registration fails.
  */
-static inline int register_commands(struct command_context *cmd_ctx, struct command *parent,
+static inline int register_commands(struct command_context *cmd_ctx, const char *cmd_prefix,
                const struct command_registration *cmds)
 {
-       return __register_commands(cmd_ctx, parent, cmds, NULL, NULL);
+       return __register_commands(cmd_ctx, cmd_prefix, cmds, NULL, NULL);
 }
 
 /**
@@ -270,7 +270,7 @@ static inline int register_commands(struct command_context *cmd_ctx, struct comm
  * that command should override the current target
  *
  * @param cmd_ctx The command_context in which to register the command.
- * @param parent Register this command as a child of this, or NULL to
+ * @param cmd_prefix Register this command as a child of this, or NULL to
  * register a top-level command.
  * @param cmds Pointer to an array of command_registration records that
  * contains the desired command parameters.  The last record must have
@@ -279,10 +279,10 @@ static inline int register_commands(struct command_context *cmd_ctx, struct comm
  * @returns ERROR_OK on success; ERROR_FAIL if any registration fails.
  */
 static inline int register_commands_override_target(struct command_context *cmd_ctx,
-               struct command *parent, const struct command_registration *cmds,
+               const char *cmd_prefix, const struct command_registration *cmds,
                struct target *target)
 {
-       return __register_commands(cmd_ctx, parent, cmds, NULL, target);
+       return __register_commands(cmd_ctx, cmd_prefix, cmds, NULL, target);
 }
 
 /**
@@ -292,7 +292,7 @@ static inline int register_commands_override_target(struct command_context *cmd_
  * is unregistered.
  *
  * @param cmd_ctx The command_context in which to register the command.
- * @param parent Register this command as a child of this, or NULL to
+ * @param cmd_prefix Register this command as a child of this, or NULL to
  * register a top-level command.
  * @param cmds Pointer to an array of command_registration records that
  * contains the desired command parameters.  The last record must have
@@ -301,10 +301,10 @@ static inline int register_commands_override_target(struct command_context *cmd_
  * @returns ERROR_OK on success; ERROR_FAIL if any registration fails.
  */
 static inline int register_commands_with_data(struct command_context *cmd_ctx,
-               struct command *parent, const struct command_registration *cmds,
+               const char *cmd_prefix, const struct command_registration *cmds,
                void *data)
 {
-       return __register_commands(cmd_ctx, parent, cmds, data, NULL);
+       return __register_commands(cmd_ctx, cmd_prefix, cmds, data, NULL);
 }
 
 /**
@@ -316,9 +316,6 @@ static inline int register_commands_with_data(struct command_context *cmd_ctx,
 int unregister_all_commands(struct command_context *cmd_ctx,
                struct command *parent);
 
-struct command *command_find_in_context(struct command_context *cmd_ctx,
-               const char *name);
-
 void command_set_output_handler(struct command_context *context,
                command_output_handler_t output_handler, void *priv);
 
index ef7993c5d4e60080248cf755cd8c4fa6e68a2a70..9e8c07d80937326e91a7f28a966efe7258585d81 100644 (file)
@@ -187,8 +187,7 @@ static int pld_init(struct command_context *cmd_ctx)
        if (!pld_devices)
                return ERROR_OK;
 
-       struct command *parent = command_find_in_context(cmd_ctx, "pld");
-       return register_commands(cmd_ctx, parent, pld_exec_command_handlers);
+       return register_commands(cmd_ctx, "pld", pld_exec_command_handlers);
 }
 
 COMMAND_HANDLER(handle_pld_init_command)
index 19f3691bd0a0729530aee09deeb5a5ca89cc5ecb..6dc2bd48c8fcf41e479e38a9907a647b9afdc98e 100644 (file)
@@ -2107,6 +2107,5 @@ static const struct command_registration etm_exec_command_handlers[] = {
 
 static int etm_register_user_commands(struct command_context *cmd_ctx)
 {
-       struct command *etm_cmd = command_find_in_context(cmd_ctx, "etm");
-       return register_commands(cmd_ctx, etm_cmd, etm_exec_command_handlers);
+       return register_commands(cmd_ctx, "etm", etm_exec_command_handlers);
 }