All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot]  [RESEND PATCH 0/3] Fix command repeat
@ 2014-06-05 18:07 Thomas Betker
  2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 1/3] Check run_command() return code properly Thomas Betker
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Thomas Betker @ 2014-06-05 18:07 UTC (permalink / raw)
  To: u-boot

I am resending the patches because they didn't make it to Patchwork the 
first time, probably due to a configuration issue on my side.

The intent of these patches is to get command repeat to work again. 
Currently, successful commands won't be repeated but failed commands 
will -- neither is as expected.

The issue is that run_command() returns 0 on success, 1 on error. In 
order to get command repeat to work, we need a variant which returns -1 
on error and 0/1 (non-repeatable/repeatable) on succcess, the same way 
as cli_simple_run_command() does.

Patch 2 adds the run_command_repeatable() function, and patch 3 
replaces run_command() by run_command_repeatable() where necessary.

Patch 1 is a cleanup of places which call run_command(), but expect it 
to return -1 on error. This is actually independent of the other two 
patches -- it just came up when checking run_command() invocations in 
general.

Best regards,
Thomas Betker

Thomas Betker (3):
  Check run_command() return code properly
  Add run_command_repeatable()
  Use run_command_repeatable()

 arch/arm/cpu/arm926ejs/kirkwood/cpu.c |  2 +-
 board/gdsys/p1022/controlcenterd.c    |  6 +-----
 common/cli.c                          | 24 ++++++++++++++++++++++++
 common/cli_simple.c                   |  2 +-
 common/cmd_bedbug.c                   |  2 +-
 common/cmd_bootm.c                    |  6 +-----
 include/common.h                      |  1 +
 7 files changed, 30 insertions(+), 13 deletions(-)

-- 
1.9.3

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [RESEND PATCH 1/3] Check run_command() return code properly
  2014-06-05 18:07 [U-Boot] [RESEND PATCH 0/3] Fix command repeat Thomas Betker
@ 2014-06-05 18:07 ` Thomas Betker
  2014-06-05 18:14   ` Simon Glass
                     ` (2 more replies)
  2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 2/3] Add run_command_repeatable() Thomas Betker
  2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 3/3] Use run_command_repeatable() Thomas Betker
  2 siblings, 3 replies; 13+ messages in thread
From: Thomas Betker @ 2014-06-05 18:07 UTC (permalink / raw)
  To: u-boot

run_command() returns 0 for success, 1 for failure. Fix places which
assume that failure is indicated by a negative return code.

Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>
---
 arch/arm/cpu/arm926ejs/kirkwood/cpu.c | 2 +-
 board/gdsys/p1022/controlcenterd.c    | 6 +-----
 common/cmd_bootm.c                    | 6 +-----
 3 files changed, 3 insertions(+), 11 deletions(-)

diff --git a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c
index 0937506..da80240 100644
--- a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c
+++ b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c
@@ -210,7 +210,7 @@ static void kw_sysrst_action(void)
 
 	debug("Starting %s process...\n", __FUNCTION__);
 	ret = run_command(s, 0);
-	if (ret < 0)
+	if (ret != 0)
 		debug("Error.. %s failed\n", __FUNCTION__);
 	else
 		debug("%s process finished\n", __FUNCTION__);
diff --git a/board/gdsys/p1022/controlcenterd.c b/board/gdsys/p1022/controlcenterd.c
index 8ccd9ce..642b807 100644
--- a/board/gdsys/p1022/controlcenterd.c
+++ b/board/gdsys/p1022/controlcenterd.c
@@ -221,11 +221,7 @@ void hw_watchdog_reset(void)
 #ifdef CONFIG_TRAILBLAZER
 int do_bootd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
-	int rcode = 0;
-
-	if (run_command(getenv("bootcmd"), flag) < 0)
-		rcode = 1;
-	return rcode;
+	return run_command(getenv("bootcmd"), flag);
 }
 
 int board_early_init_r(void)
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 449bb36..745fc65 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -1079,11 +1079,7 @@ U_BOOT_CMD(
 #if defined(CONFIG_CMD_BOOTD)
 int do_bootd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
-	int rcode = 0;
-
-	if (run_command(getenv("bootcmd"), flag) < 0)
-		rcode = 1;
-	return rcode;
+	return run_command(getenv("bootcmd"), flag);
 }
 
 U_BOOT_CMD(
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [U-Boot]  [RESEND PATCH 2/3] Add run_command_repeatable()
  2014-06-05 18:07 [U-Boot] [RESEND PATCH 0/3] Fix command repeat Thomas Betker
  2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 1/3] Check run_command() return code properly Thomas Betker
@ 2014-06-05 18:07 ` Thomas Betker
  2014-06-05 18:18   ` Simon Glass
  2014-06-11 22:18   ` [U-Boot] [U-Boot,RESEND,2/3] " Tom Rini
  2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 3/3] Use run_command_repeatable() Thomas Betker
  2 siblings, 2 replies; 13+ messages in thread
From: Thomas Betker @ 2014-06-05 18:07 UTC (permalink / raw)
  To: u-boot

run_command() returns 0 on success and 1 on error. However, there are some
invocations which expect 0 or 1 for success (not repeatable or repeatable)
and -1 for error; add run_command_repeatable() for this purpose.

Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>
---
 common/cli.c     | 24 ++++++++++++++++++++++++
 include/common.h |  1 +
 2 files changed, 25 insertions(+)

diff --git a/common/cli.c b/common/cli.c
index ea6bfb3..272b028 100644
--- a/common/cli.c
+++ b/common/cli.c
@@ -41,6 +41,30 @@ int run_command(const char *cmd, int flag)
 #endif
 }
 
+/*
+ * Run a command using the selected parser, and check if it is repeatable.
+ *
+ * @param cmd	Command to run
+ * @param flag	Execution flags (CMD_FLAG_...)
+ * @return 0 (not repeatable) or 1 (repeatable) on success, -1 on error.
+ */
+int run_command_repeatable(const char *cmd, int flag)
+{
+#ifndef CONFIG_SYS_HUSH_PARSER
+	return cli_simple_run_command(cmd, flag);
+#else
+	/*
+	 * parse_string_outer() returns 1 for failure, so clean up
+	 * its result.
+	 */
+	if (parse_string_outer(cmd,
+			       FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP))
+		return -1;
+
+	return 0;
+#endif
+}
+
 int run_command_list(const char *cmd, int len, int flag)
 {
 	int need_buff = 1;
diff --git a/include/common.h b/include/common.h
index 91dc0f3..cc74633 100644
--- a/include/common.h
+++ b/include/common.h
@@ -271,6 +271,7 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
 /* common/main.c */
 void	main_loop	(void);
 int run_command(const char *cmd, int flag);
+int run_command_repeatable(const char *cmd, int flag);
 
 /**
  * Run a list of commands separated by ; or even \0
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [U-Boot]  [RESEND PATCH 3/3] Use run_command_repeatable()
  2014-06-05 18:07 [U-Boot] [RESEND PATCH 0/3] Fix command repeat Thomas Betker
  2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 1/3] Check run_command() return code properly Thomas Betker
  2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 2/3] Add run_command_repeatable() Thomas Betker
@ 2014-06-05 18:07 ` Thomas Betker
  2014-06-05 18:18   ` Simon Glass
  2014-06-11 22:18   ` [U-Boot] [U-Boot,RESEND,3/3] " Tom Rini
  2 siblings, 2 replies; 13+ messages in thread
From: Thomas Betker @ 2014-06-05 18:07 UTC (permalink / raw)
  To: u-boot

Replace run_command() by run_command_repeatable() in places which
depend on the return code to indicate repeatability.

Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>
---
 common/cli_simple.c | 2 +-
 common/cmd_bedbug.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/common/cli_simple.c b/common/cli_simple.c
index 413c2eb..222e292 100644
--- a/common/cli_simple.c
+++ b/common/cli_simple.c
@@ -295,7 +295,7 @@ void cli_simple_loop(void)
 		if (len == -1)
 			puts("<INTERRUPT>\n");
 		else
-			rc = run_command(lastcommand, flag);
+			rc = run_command_repeatable(lastcommand, flag);
 
 		if (rc <= 0) {
 			/* invalid command or not repeatable, forget it */
diff --git a/common/cmd_bedbug.c b/common/cmd_bedbug.c
index bdcf712..57a8a3f 100644
--- a/common/cmd_bedbug.c
+++ b/common/cmd_bedbug.c
@@ -238,7 +238,7 @@ void bedbug_main_loop (unsigned long addr, struct pt_regs *regs)
 		if (len == -1)
 			printf ("<INTERRUPT>\n");
 		else
-			rc = run_command(lastcommand, flag);
+			rc = run_command_repeatable(lastcommand, flag);
 
 		if (rc <= 0) {
 			/* invalid command or not repeatable, forget it */
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [U-Boot] [RESEND PATCH 1/3] Check run_command() return code properly
  2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 1/3] Check run_command() return code properly Thomas Betker
@ 2014-06-05 18:14   ` Simon Glass
  2014-06-05 18:18     ` Simon Glass
  2014-06-06  8:40     ` Thomas.Betker at rohde-schwarz.com
  2014-06-08  8:57   ` Stefan Roese
  2014-06-11 22:18   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
  2 siblings, 2 replies; 13+ messages in thread
From: Simon Glass @ 2014-06-05 18:14 UTC (permalink / raw)
  To: u-boot

On 5 June 2014 12:07, Thomas Betker <thomas.betker@freenet.de> wrote:
>
> run_command() returns 0 for success, 1 for failure. Fix places which
> assume that failure is indicated by a negative return code.
>
> Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>

This has come through fine to patchwork - it may have been your
missing name that was the problem.

Acked-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [RESEND PATCH 2/3] Add run_command_repeatable()
  2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 2/3] Add run_command_repeatable() Thomas Betker
@ 2014-06-05 18:18   ` Simon Glass
  2014-06-11 22:18   ` [U-Boot] [U-Boot,RESEND,2/3] " Tom Rini
  1 sibling, 0 replies; 13+ messages in thread
From: Simon Glass @ 2014-06-05 18:18 UTC (permalink / raw)
  To: u-boot

On 5 June 2014 12:07, Thomas Betker <thomas.betker@freenet.de> wrote:
> run_command() returns 0 on success and 1 on error. However, there are some
> invocations which expect 0 or 1 for success (not repeatable or repeatable)
> and -1 for error; add run_command_repeatable() for this purpose.
>
> Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>

I feel that a separate function is fine for now.

Acked-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [RESEND PATCH 3/3] Use run_command_repeatable()
  2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 3/3] Use run_command_repeatable() Thomas Betker
@ 2014-06-05 18:18   ` Simon Glass
  2014-06-11 22:18   ` [U-Boot] [U-Boot,RESEND,3/3] " Tom Rini
  1 sibling, 0 replies; 13+ messages in thread
From: Simon Glass @ 2014-06-05 18:18 UTC (permalink / raw)
  To: u-boot

On 5 June 2014 12:07, Thomas Betker <thomas.betker@freenet.de> wrote:
> Replace run_command() by run_command_repeatable() in places which
> depend on the return code to indicate repeatability.
>
> Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>

Acked-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [RESEND PATCH 1/3] Check run_command() return code properly
  2014-06-05 18:14   ` Simon Glass
@ 2014-06-05 18:18     ` Simon Glass
  2014-06-06  8:40     ` Thomas.Betker at rohde-schwarz.com
  1 sibling, 0 replies; 13+ messages in thread
From: Simon Glass @ 2014-06-05 18:18 UTC (permalink / raw)
  To: u-boot

On 5 June 2014 12:14, Simon Glass <sjg@chromium.org> wrote:
> On 5 June 2014 12:07, Thomas Betker <thomas.betker@freenet.de> wrote:
>>
>> run_command() returns 0 for success, 1 for failure. Fix places which
>> assume that failure is indicated by a negative return code.
>>
>> Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>
>
> This has come through fine to patchwork - it may have been your
> missing name that was the problem.
>
> Acked-by: Simon Glass <sjg@chromium.org>

Tested-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [RESEND PATCH 1/3] Check run_command() return code properly
  2014-06-05 18:14   ` Simon Glass
  2014-06-05 18:18     ` Simon Glass
@ 2014-06-06  8:40     ` Thomas.Betker at rohde-schwarz.com
  1 sibling, 0 replies; 13+ messages in thread
From: Thomas.Betker at rohde-schwarz.com @ 2014-06-06  8:40 UTC (permalink / raw)
  To: u-boot

Hello Simon:

> > run_command() returns 0 for success, 1 for failure. Fix places which
> > assume that failure is indicated by a negative return code.
> >
> > Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>
> 
> This has come through fine to patchwork - it may have been your
> missing name that was the problem.

Yes, I checked that the patches made it to Patchwork last night. Thanks 
for the hint; you were right, it was the missing name in my .gitconfig.

Best regards,
Thomas

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [RESEND PATCH 1/3] Check run_command() return code properly
  2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 1/3] Check run_command() return code properly Thomas Betker
  2014-06-05 18:14   ` Simon Glass
@ 2014-06-08  8:57   ` Stefan Roese
  2014-06-11 22:18   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
  2 siblings, 0 replies; 13+ messages in thread
From: Stefan Roese @ 2014-06-08  8:57 UTC (permalink / raw)
  To: u-boot

On 05.06.2014 20:07, Thomas Betker wrote:
> run_command() returns 0 for success, 1 for failure. Fix places which
> assume that failure is indicated by a negative return code.
>
> Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>

Thanks for fixing this!

Tested-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [U-Boot, RESEND, 1/3] Check run_command() return code properly
  2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 1/3] Check run_command() return code properly Thomas Betker
  2014-06-05 18:14   ` Simon Glass
  2014-06-08  8:57   ` Stefan Roese
@ 2014-06-11 22:18   ` Tom Rini
  2 siblings, 0 replies; 13+ messages in thread
From: Tom Rini @ 2014-06-11 22:18 UTC (permalink / raw)
  To: u-boot

On Thu, Jun 05, 2014 at 08:07:56PM +0200, Thomas Betker wrote:

> run_command() returns 0 for success, 1 for failure. Fix places which
> assume that failure is indicated by a negative return code.
> 
> Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>
> Acked-by: Simon Glass <sjg@chromium.org>
> Tested-by: Simon Glass <sjg@chromium.org>
> Tested-by: Stefan Roese <sr@denx.de>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/27a03037/attachment.pgp>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [U-Boot,RESEND,2/3] Add run_command_repeatable()
  2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 2/3] Add run_command_repeatable() Thomas Betker
  2014-06-05 18:18   ` Simon Glass
@ 2014-06-11 22:18   ` Tom Rini
  1 sibling, 0 replies; 13+ messages in thread
From: Tom Rini @ 2014-06-11 22:18 UTC (permalink / raw)
  To: u-boot

On Thu, Jun 05, 2014 at 08:07:57PM +0200, Thomas Betker wrote:

> run_command() returns 0 on success and 1 on error. However, there are some
> invocations which expect 0 or 1 for success (not repeatable or repeatable)
> and -1 for error; add run_command_repeatable() for this purpose.
> 
> Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>
> Acked-by: Simon Glass <sjg@chromium.org>
> Tested-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/10d66915/attachment.pgp>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [U-Boot] [U-Boot,RESEND,3/3] Use run_command_repeatable()
  2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 3/3] Use run_command_repeatable() Thomas Betker
  2014-06-05 18:18   ` Simon Glass
@ 2014-06-11 22:18   ` Tom Rini
  1 sibling, 0 replies; 13+ messages in thread
From: Tom Rini @ 2014-06-11 22:18 UTC (permalink / raw)
  To: u-boot

On Thu, Jun 05, 2014 at 08:07:58PM +0200, Thomas Betker wrote:

> Replace run_command() by run_command_repeatable() in places which
> depend on the return code to indicate repeatability.
> 
> Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>
> Acked-by: Simon Glass <sjg@chromium.org>
> Tested-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140611/f6f444bb/attachment.pgp>

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2014-06-11 22:18 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-05 18:07 [U-Boot] [RESEND PATCH 0/3] Fix command repeat Thomas Betker
2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 1/3] Check run_command() return code properly Thomas Betker
2014-06-05 18:14   ` Simon Glass
2014-06-05 18:18     ` Simon Glass
2014-06-06  8:40     ` Thomas.Betker at rohde-schwarz.com
2014-06-08  8:57   ` Stefan Roese
2014-06-11 22:18   ` [U-Boot] [U-Boot, RESEND, " Tom Rini
2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 2/3] Add run_command_repeatable() Thomas Betker
2014-06-05 18:18   ` Simon Glass
2014-06-11 22:18   ` [U-Boot] [U-Boot,RESEND,2/3] " Tom Rini
2014-06-05 18:07 ` [U-Boot] [RESEND PATCH 3/3] Use run_command_repeatable() Thomas Betker
2014-06-05 18:18   ` Simon Glass
2014-06-11 22:18   ` [U-Boot] [U-Boot,RESEND,3/3] " Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.