Re: [U-Boot] [U-Boot, PATCHv2] cmd_time: merge run_command_and_time_it with cmd_process

2013-02-04 Thread Tom Rini
On Mon, Dec 03, 2012 at 06:28:28AM -, 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
 Acked-By: Che-Liang Chiou clch...@chromium.org

Applied to u-boot/master, with a s/ulong/unsigned long/ in command.h, thanks!

-- 
Tom


signature.asc
Description: Digital signature
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCHv2] cmd_time: merge run_command_and_time_it with cmd_process

2012-12-03 Thread Richard Genoud
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 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] [PATCHv2] cmd_time: merge run_command_and_time_it with cmd_process

2012-12-03 Thread Che-liang Chiou
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 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__ */

 --