Acked-By: Che-Liang Chiou <clch...@chromium.org>
On Mon, Dec 3, 2012 at 8:28 AM, Richard Genoud <richard.gen...@gmail.com> wrote: > 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.gen...@gmail.com> > --- > common/cmd_time.c | 33 ++------------------------------- > common/command.c | 6 +++++- > common/hush.c | 2 +- > common/main.c | 2 +- > include/command.h | 4 +++- > 5 files changed, 12 insertions(+), 35 deletions(-) > > diff --git a/common/cmd_time.c b/common/cmd_time.c > index 6dbdbbf..9808cd6 100644 > --- a/common/cmd_time.c > +++ b/common/cmd_time.c > @@ -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; > diff --git a/common/command.c b/common/command.c > index 50c8429..305a236 100644 > --- a/common/command.c > +++ b/common/command.c > @@ -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) > diff --git a/common/hush.c b/common/hush.c > index eb6c879..cc81c9c 100644 > --- a/common/hush.c > +++ b/common/hush.c > @@ -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__ > diff --git a/common/main.c b/common/main.c > index 5362781..7bdba3e 100644 > --- a/common/main.c > +++ b/common/main.c > @@ -1442,7 +1442,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? */ > diff --git a/include/command.h b/include/command.h > index 10bc260..1344d71 100644 > --- a/include/command.h > +++ b/include/command.h > @@ -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, ulong *ticks); > > #endif /* __ASSEMBLY__ */ > > -- > 1.7.2.5 > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot