[U-Boot] [Patch v3] cmd/gpt: Support gpt command for all devices

Egbert Eich egbert.eich at gmail.com
Sun Oct 13 01:13:52 CEST 2013


On Fri, Oct 11, 2013 at 09:13:22AM +0200, Piotr Wilczek wrote:
> Dear Egbert Eich,
> 
> > -----Original Message-----
> > From: Egbert Eich [mailto:egbert.eich at gmail.com]
> > Sent: Friday, October 04, 2013 6:53 PM
> > To: u-boot at lists.denx.de
> > Cc: Piotr Wilczek; Tom Rini; Egbert Eich; Egbert Eich
> > Subject: [Patch v3] cmd/gpt: Support gpt command for all devices
> > 
> > From: Egbert Eich <eich at suse.com>
> > 
> > The gpt command was only implemented for mmc devices. There is no
> > reason why this command should not be generalized and be applied all
> > other storage device classes.
> > This change both simplifies the implementation and eliminates a build
> > failure for systems that don't support mmcs.
> > 
> > Signed-off-by: Egbert Eich <eich at suse.com>
> > ---
> > Changes for v2:
> >    - Coding style cleanup.
> > Changes for v3:
> >    - Removed wrong '&'
> >    - Removed unused variable
> >    - Fixed argument checking
> >    Spotted by Piotr Wilczek <p.wilczek at samsung.com>
> > 
> >  common/cmd_gpt.c | 45 +++++++++++++++++++--------------------------
> >  1 file changed, 19 insertions(+), 26 deletions(-)
> > 
> > diff --git a/common/cmd_gpt.c b/common/cmd_gpt.c index a46f5cc..17b1180
> > 100644
> > --- a/common/cmd_gpt.c
> > +++ b/common/cmd_gpt.c

[..]

> > 
> > @@ -287,27 +279,28 @@ static int do_gpt(cmd_tbl_t *cmdtp, int flag, int

[..]

> > -		/* device: 'mmc' */
> > -		if (strcmp(argv[2], "mmc") == 0) {
> > -			/* check if 'dev' is a number */
> > -			for (pstr = argv[3]; *pstr != '\0'; pstr++)
> > -				if (!isdigit(*pstr)) {
> > -					printf("'%s' is not a number\n",
> > -						argv[3]);
> > -					return CMD_RET_USAGE;
> > -				}
> > -			dev = (int)simple_strtoul(argv[3], NULL, 10);
> > -			/* write to mmc */
> > -			if (gpt_mmc_default(dev, argv[4]))
> > -				return CMD_RET_FAILURE;
> > +		char *ep;
> > +		block_dev_desc_t *blk_dev_desc;
> This probably should be at the beginning of the function

I personally prefer to keep symbols as local as possible (ie. declare them
in the block they are used in if they are just used within a single block) 
for the following rasons:
1. It makes the code more readable ie. the definition is closeby to
   the location where it is used and doesn't require scrolling to 
   the beginning of a function and the scope of the variable is is 
   much more obvious.
2. The compiler can optimize much better as it knows that a variable 
   can be discarded at the end of the block also by reusing stack 
   slots stack sapce can be used much more efficiently by the compiler.

I agree that in the case at hand the second argument is not too
relevant, it is more a coding style issue. If there is a coding
style requirement to have those definitions at the beginning of
the function I will create a new patch.


[..]

> > +		blk_dev_desc = get_dev(argv[2], dev);
> > +		if (!blk_dev_desc) {
> > +			printf("%s: %s dev %d NOT available\n",
> > +			       __func__, argv[2], dev);
> I think it is not necessary since the mmc subsystem prints 'MMC Device not
> found'.

I've done a quick look over the code - of all subsystems MMC seems to be 
the only one which prints a message when its get_dev() method is called 
but no device is found. Therefore I'd prefer to leave this there.

> 
> Except minor comments this patch looks good to me.
> I tested it on mmc device (Trats2) and works well.

Ok, thanks!

> 
> Tested-by: Piotr Wilczek <p.wilczek at samsung.com>
> 

Thanks a lot for testing!

Cheers,
	Egbert.


More information about the U-Boot mailing list