Create a single cmd_call() function to handle command execution
We should aim for a single point of entry to the commands, whichever parser is used. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
7fed89e00e
commit
bdf8e34b93
|
@ -487,3 +487,24 @@ void fixup_cmdtable(cmd_tbl_t *cmdtp, int size)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call a command function. This should be the only route in U-Boot to call
|
||||||
|
* a command, so that we can track whether we are waiting for input or
|
||||||
|
* executing a command.
|
||||||
|
*
|
||||||
|
* @param cmdtp Pointer to the command to execute
|
||||||
|
* @param flag Some flags normally 0 (see CMD_FLAG_.. above)
|
||||||
|
* @param argc Number of arguments (arg 0 must be the command text)
|
||||||
|
* @param argv Arguments
|
||||||
|
* @return 0 if command succeeded, else non-zero (CMD_RET_...)
|
||||||
|
*/
|
||||||
|
int cmd_call(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
|
||||||
|
result = (cmdtp->cmd)(cmdtp, flag, argc, argv);
|
||||||
|
if (result)
|
||||||
|
debug("Command failed, result=%d", result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
|
@ -1679,13 +1679,10 @@ static int run_pipe_real(struct pipe *pi)
|
||||||
rcode = x->function(child);
|
rcode = x->function(child);
|
||||||
#else
|
#else
|
||||||
/* OK - call function to do the command */
|
/* OK - call function to do the command */
|
||||||
|
rcode = cmd_call(cmdtp, flag, child->argc-i,
|
||||||
rcode = (cmdtp->cmd)
|
&child->argv[i]);
|
||||||
(cmdtp, flag,child->argc-i,&child->argv[i]);
|
if (!cmdtp->repeatable)
|
||||||
if ( !cmdtp->repeatable )
|
|
||||||
flag_repeat = 0;
|
flag_repeat = 0;
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
child->argv-=i; /* XXX restore hack so free() can work right */
|
child->argv-=i; /* XXX restore hack so free() can work right */
|
||||||
#ifndef __U_BOOT__
|
#ifndef __U_BOOT__
|
||||||
|
|
|
@ -1370,9 +1370,8 @@ static int builtin_run_command(const char *cmd, int flag)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* OK - call function to do the command */
|
/* OK - call function to do the command */
|
||||||
if ((cmdtp->cmd) (cmdtp, flag, argc, argv) != 0) {
|
if (cmd_call(cmdtp, flag, argc, argv) != 0)
|
||||||
rc = -1;
|
rc = -1;
|
||||||
}
|
|
||||||
|
|
||||||
repeatable &= cmdtp->repeatable;
|
repeatable &= cmdtp->repeatable;
|
||||||
|
|
||||||
|
|
|
@ -112,6 +112,8 @@ static inline int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd)
|
||||||
#endif
|
#endif
|
||||||
extern int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
|
extern int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
|
||||||
|
|
||||||
|
int cmd_call(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -150,4 +152,5 @@ extern int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
|
||||||
#if defined(CONFIG_NEEDS_MANUAL_RELOC)
|
#if defined(CONFIG_NEEDS_MANUAL_RELOC)
|
||||||
void fixup_cmdtable(cmd_tbl_t *cmdtp, int size);
|
void fixup_cmdtable(cmd_tbl_t *cmdtp, int size);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __COMMAND_H */
|
#endif /* __COMMAND_H */
|
||||||
|
|
Loading…
Reference in New Issue