[U-Boot] [PATCH] 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.gen...@gmail.com --- common/cmd_time.c | 33 ++--- common/command.c |4 +++- common/hush.c |2 +- common/main.c |2 +- include/command.h |4 +++- 5 files changed, 10 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..a58dca6 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,9 @@ 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 ticksIf 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
Re: [U-Boot] [PATCH] cmd_time: merge run_command_and_time_it with cmd_process
On 12/03/2012 04:28 PM, Richard Genoud 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 |4 +++- common/hush.c |2 +- common/main.c |2 +- include/command.h |4 +++- 5 files changed, 10 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..a58dca6 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,9 @@ 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); Newline please: if (ticks) *ticks = get_timer(0); rc = cmd_call(cmdtp, flag, argc, argv); + if (ticks) *ticks = get_timer(*ticks); Here as well. Thanks, Stefan ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH] cmd_time: merge run_command_and_time_it with cmd_process
2012/12/3 Stefan Roese s...@denx.de: @@ -543,7 +543,9 @@ 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); Newline please: if (ticks) *ticks = get_timer(0); rc = cmd_call(cmdtp, flag, argc, argv); + if (ticks) *ticks = get_timer(*ticks); Here as well. Thanks, Stefan Ok, I'll resend it with new lines (I thought it was a little bit more readable without new lines). Thanks ! Richard. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH] cmd_time: merge run_command_and_time_it with cmd_process
Acked-by: Che-Liang Chiou clch...@chromium.org On Mon, Dec 3, 2012 at 8:23 AM, Richard Genoud richard.gen...@gmail.com wrote: 2012/12/3 Stefan Roese s...@denx.de: @@ -543,7 +543,9 @@ 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); Newline please: if (ticks) *ticks = get_timer(0); rc = cmd_call(cmdtp, flag, argc, argv); + if (ticks) *ticks = get_timer(*ticks); Here as well. Thanks, Stefan Ok, I'll resend it with new lines (I thought it was a little bit more readable without new lines). Thanks ! Richard. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot