Sascha Hauer wrote: > On Fri, Jun 22, 2012 at 11:54:02AM +0200, Juergen Beisert wrote: > > This patch adds a simple wd command which can setup, trigger and stop a > > watchdog on the platform. > > > > +static int do_wd(int argc, char *argv[]) > > +{ > > + int rc; > > + > > + if (argc > 1) { > > + if (isdigit(*argv[1])) { > > + timeout = simple_strtoul(argv[1], NULL, 0); > > + } else { > > + printf("numerical parameter expected\n"); > > + return 1; > > + } > > + } > > + > > + rc = watchdog_set_timeout(timeout); > > + if (rc == -EINVAL) { > > Why do you check for -EINVAL only? This way all other errors will be > silently ignored. Are you sure we must handle other failure codes than -EINVAL here? The called function is very simple and only must distinguish "timeout != 0" and "timeout == 0". So, timeout can be "out of range" or - as you mentioned - some platforms cannot disable the watchdog anymore once it is enabled. Both results into -EINVAL, because the called function cannot use the given value. What else can happen? > > + if (timeout == 0) > > + printf("Watchdog cannot be disabled\n"); > > + else > > + printf("Timeout value out of range\n"); > > + return rc; > > Do not return negative error codes here. The shell will interpret > negative numbers as 'exit'. You have to return 1 for failure. Okay, missed that. > > + } > > + return 0; > > +} > > + > > + > > +#ifndef INCLUDE_WATCHDOG_H > > +# define INCLUDE_WATCHDOG_H > > + > > +extern int watchdog_set_timeout(unsigned); > > extern is not needed here. Okay. jbe -- Pengutronix e.K. | Juergen Beisert | Linux Solutions for Science and Industry | http://www.pengutronix.de/ | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox