cmd_time: merge run_command_and_time_it with cmd_process
As far as every arch has a get_timer function, run_command_and_time_it code can now disappear. Signed-off-by: Richard Genoud <richard.genoud@gmail.com> Acked-By: Che-Liang Chiou <clchiou@chromium.org> [trini: s/ulong/unsigned long/ in command.h portion] Signed-off-by: Tom Rini <trini@ti.com>
This commit is contained in:
parent
b2f3e0ea3e
commit
34765e8853
|
@ -22,36 +22,6 @@
|
|||
#include <common.h>
|
||||
#include <command.h>
|
||||
|
||||
/*
|
||||
* TODO(clchiou): This function actually minics the bottom-half of the
|
||||
* run_command() function. Since this function has ARM-dependent timer
|
||||
* codes, we cannot merge it with the run_command() for now.
|
||||
*/
|
||||
static int run_command_and_time_it(int flag, int argc, char * const argv[],
|
||||
ulong *cycles)
|
||||
{
|
||||
cmd_tbl_t *cmdtp = find_cmd(argv[0]);
|
||||
int retval = 0;
|
||||
|
||||
if (!cmdtp) {
|
||||
printf("%s: command not found\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
if (argc > cmdtp->maxargs)
|
||||
return CMD_RET_USAGE;
|
||||
|
||||
/*
|
||||
* TODO(clchiou): get_timer_masked() is only defined in certain ARM
|
||||
* boards. We could use the new timer API that Graeme is proposing
|
||||
* so that this piece of code would be arch-independent.
|
||||
*/
|
||||
*cycles = get_timer_masked();
|
||||
retval = cmdtp->cmd(cmdtp, flag, argc, argv);
|
||||
*cycles = get_timer_masked() - *cycles;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
static void report_time(ulong cycles)
|
||||
{
|
||||
ulong minutes, seconds, milliseconds;
|
||||
|
@ -75,11 +45,12 @@ static int do_time(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|||
{
|
||||
ulong cycles = 0;
|
||||
int retval = 0;
|
||||
int repeatable;
|
||||
|
||||
if (argc == 1)
|
||||
return CMD_RET_USAGE;
|
||||
|
||||
retval = run_command_and_time_it(0, argc - 1, argv + 1, &cycles);
|
||||
retval = cmd_process(0, argc - 1, argv + 1, &repeatable, &cycles);
|
||||
report_time(cycles);
|
||||
|
||||
return retval;
|
||||
|
|
|
@ -513,7 +513,7 @@ static int cmd_call(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|||
}
|
||||
|
||||
enum command_ret_t cmd_process(int flag, int argc, char * const argv[],
|
||||
int *repeatable)
|
||||
int *repeatable, ulong *ticks)
|
||||
{
|
||||
enum command_ret_t rc = CMD_RET_SUCCESS;
|
||||
cmd_tbl_t *cmdtp;
|
||||
|
@ -543,7 +543,11 @@ enum command_ret_t cmd_process(int flag, int argc, char * const argv[],
|
|||
|
||||
/* If OK so far, then do the command */
|
||||
if (!rc) {
|
||||
if (ticks)
|
||||
*ticks = get_timer(0);
|
||||
rc = cmd_call(cmdtp, flag, argc, argv);
|
||||
if (ticks)
|
||||
*ticks = get_timer(*ticks);
|
||||
*repeatable &= cmdtp->repeatable;
|
||||
}
|
||||
if (rc == CMD_RET_USAGE)
|
||||
|
|
|
@ -1665,7 +1665,7 @@ static int run_pipe_real(struct pipe *pi)
|
|||
}
|
||||
/* Process the command */
|
||||
return cmd_process(flag, child->argc, child->argv,
|
||||
&flag_repeat);
|
||||
&flag_repeat, NULL);
|
||||
#endif
|
||||
}
|
||||
#ifndef __U_BOOT__
|
||||
|
|
|
@ -1452,7 +1452,7 @@ static int builtin_run_command(const char *cmd, int flag)
|
|||
continue;
|
||||
}
|
||||
|
||||
if (cmd_process(flag, argc, argv, &repeatable))
|
||||
if (cmd_process(flag, argc, argv, &repeatable, NULL))
|
||||
rc = -1;
|
||||
|
||||
/* Did the user stop this? */
|
||||
|
|
|
@ -139,10 +139,12 @@ enum command_ret_t {
|
|||
* @param repeatable This function sets this to 0 if the command is not
|
||||
* repeatable. If the command is repeatable, the value
|
||||
* is left unchanged.
|
||||
* @param ticks If ticks is not null, this function set it to the
|
||||
* number of ticks the command took to complete.
|
||||
* @return 0 if the command succeeded, 1 if it failed
|
||||
*/
|
||||
int cmd_process(int flag, int argc, char * const argv[],
|
||||
int *repeatable);
|
||||
int *repeatable, unsigned long *ticks);
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
|
|
Loading…
Reference in New Issue