[U-Boot] [RFC][PATCH v2] bootm: Add sub commands

Wolfgang Denk wd at denx.de
Tue Sep 23 13:34:44 CEST 2008


Dear Kumar Gala,

In message <1222151236-13920-1-git-send-email-galak at kernel.crashing.org> you wrote:
> This version:
> * cleans ups issues pointed out by Jerry
> * adds a state machine to the command processing
> * adds bd_t and cmdline process on linux for ppc

Thanks a lot.

I'm still missing the possibility to use longer sub-command names, and
code to parse these in a sane way.

> +int do_bootm_subcommand (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
> +{
> +	int ret = 0;
> +	int state;
> +
> +	/* start */
> +	if (argv[1][0] == 's') {
> +		argc--;
> +		argv++;
> +		return bootm_start(cmdtp, flag, argc, argv);
> +	}
> +	/* loados */
> +	else if (argv[1][0] == 'l') {
> +		state = BOOTM_STATE_LOADOS;
> +	}
> +	/* ramdisk relocate */
> +#if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_SPARC)
> +	else if (argv[1][0] == 'r') {
> +		state = BOOTM_STATE_RAMDISK;
> +	}
> +#endif
> +#ifdef CONFIG_OF_LIBFDT
> +	/* fdt relocate */
> +	else if (argv[1][0] == 'f') {
> +		state = BOOTM_STATE_FDT;
> +	}
> +#endif
> +	/* bd_t setup */
> +	else if (argv[1][0] == 'b') {
> +		state = BOOTM_STATE_OS_BD_T;
> +	}
> +	/* cmdline setup */
> +	else if (argv[1][0] == 'c') {
> +		state = BOOTM_STATE_OS_CMDLINE;
> +	}
> +	/* prep os */
> +	else if (argv[1][0] == 'p') {
> +		state = BOOTM_STATE_OS_PREP;
> +	}
> +	/* go */
> +	else if (argv[1][0] == 'g') {
> +		state = BOOTM_STATE_OS_GO;
> +	}
> +	/* Unrecognized command */
> +	else {
> +		printf ("Usage:\n%s\n", cmdtp->usage);
> +		return 1;
> +	}

I really wonder why you didn't use a switch statement here?

Anyway, as mentioned before, I do not like to be restrricted  to  one
letter  subcommand  names - we would rather sooner than later come up
with names that nobody can remember.

Maybe we can extend find_cmd() (in  "common/command.c")  to  take  an
alternative  command  table  (for  the  sub-commands)  and  reuse the
existing code?

[And then probably do this also for some other commands that take
subcommands..]

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"In matters of principle, stand like a rock;  in  matters  of  taste,
swim with the current."                            - Thomas Jefferson


More information about the U-Boot mailing list