[U-Boot] [PATCH v5 2/3] mtd, nand: move common functions from cmd_nand.c to common place

Scott Wood scottwood at freescale.com
Fri Apr 24 07:25:34 CEST 2015


On Fri, 2015-04-24 at 06:59 +0200, Heiko Schocher wrote:
> Hello Scott,
> 
> Am 23.04.2015 19:48, schrieb Scott Wood:
> > On Thu, 2015-04-23 at 13:12 +0200, Heiko Schocher wrote:
> >> Hello Scott,
> >>
> >> Am 23.04.2015 08:55, schrieb Scott Wood:
> >>> On Thu, 2015-04-23 at 07:57 +0200, Heiko Schocher wrote:
> >>>> Hello Scott,
> >>>>
> >>>> Am 23.04.2015 00:47, schrieb Scott Wood:
> >>>>> On Mon, 2015-04-20 at 07:47 +0200, Heiko Schocher wrote:
> >>>>>> +int str2off(const char *p, loff_t *num);
> >>>>>> +int str2long(const char *p, ulong *num);
> >>>>>
> >>>>> These should be moved somewhere more generic, especially if they're no
> >>>>> longer file-local.
> >>>>
> >>>> Hmm... the code is currently in "drivers/mtd/mtd_uboot.c" ... maybe
> >>>> we add a "mtd_" prefix to them? I think these functions are mtd specific ...
> >>>
> >>> What is mtd-specific about them?
> >>
> >> Hmm... I thought:
> >>
> >> return *p != '\0' && *endptr == '\0';
> >>
> >> is more or less mtd specific ... but you are right, it is not really
> >> mtd specific ... so I move them to "./lib/vsprintf.c" ... Ok?
> >
> > OK.  Maybe change the return to bool while you're at it, to make it
> > clear that it isn't return-zero-on-success.
> 
> Hmm.. tried this, but I get:
> 
>    CC      common/cmd_test.o
> In file included from /home/hs/abb/imx6/u-boot/include/common.h:760:0,
>                   from /home/hs/abb/imx6/u-boot/common/cmd_test.c:17:
> /home/hs/abb/imx6/u-boot/include/vsprintf.h:176:1: error: unknown type name 'bool'
> /home/hs/abb/imx6/u-boot/include/vsprintf.h:177:1: error: unknown type name 'bool'
> /home/hs/abb/imx6/u-boot/scripts/Makefile.build:276: recipe for target 'common/cmd_test.o' failed
> make[2]: *** [common/cmd_test.o] Error 1
> /home/hs/abb/imx6/u-boot/Makefile:1156: recipe for target 'common' failed
> make[1]: *** [common] Error 2
> 
> reason is in common/cmd_test.c:
> 
> /*
>   * Define _STDBOOL_H here to avoid macro expansion of true and false.
>   * If the future code requires macro true or false, remove this define
>   * and undef true and false before U_BOOT_CMD. This define and comment
>   * shall be removed if change to U_BOOT_CMD is made to take string
>   * instead of stringifying it.
>   */
> #define _STDBOOL_H

Ugh.  Maybe add a variant of U_BOOT_CMD_COMPLETE that takes a string for
the user-visible name that is separate from the C-visible symbol used
for the ll entry.

Or you could either define bool manually, or do what the comment says
and undef true/false.

> #include <common.h>
> 
> Hmm... I tend to say, this is another patch changing the returntype
> from int to bool ...

It's related because you're moving it from being a local static function
to being an API exposed treewide, so higher standards apply.

Another option would be to convert it to returning zero on success and a
negative error code on error.

-Scott




More information about the U-Boot mailing list