[U-Boot-Users] [PATCH libfdt 3/3] More clean up of cmd_bootm.c
Kim Phillips
kim.phillips at freescale.com
Wed May 30 17:46:34 CEST 2007
On Tue, 29 May 2007 21:46:01 -0400
Jerry Van Baren <gvb.uboot at gmail.com> wrote:
> Kim Phillips wrote:
> > On Sat, 26 May 2007 08:54:50 -0400
> > Jerry Van Baren <gvb.uboot at gmail.com> wrote:
> >
<snip>
> >> +/*
> >> + * Some FDT-related defines to reduce clutter in the main code.
> >> + */
> >> +#if defined(CONFIG_OF_FLAT_TREE)
> >> +#define FDT_VALIDATE \
> >> + (*((ulong *)(of_flat_tree + sizeof(image_header_t))) != OF_DT_HEADER)
> >> +#endif
> >> +#if defined(CONFIG_OF_LIBFDT)
> >> +#define FDT_VALIDATE \
> >> + (fdt_check_header(of_flat_tree + sizeof(image_header_t)) != 0)
> >> +#endif
> >> +
> >
> > I'd actually prefer to see what the code is doing, where it's doing it.
> > Please read linux-2.6/Documentation/CodingStyle, chapter 12, while
> > you're at it.
>
> My intention is to removed CONFIG_OF_FLAT_TREE once CONFIG_OF_LIBFDT is
> stable and all the boards have been converted over. CONFIG_OF_LIBFDT
> makes CONFIG_OF_FLAT_TREE obsolete, but we have are straddling the fence
> at the moment (ouch).
>
> The above #define makes a rather horrible #if:
>
> #if defined(CONFIG_OF_LIBFDT)
> if (fdt_check_header(of_flat_tree) == 0) {
> #else
> if (*(ulong *)of_flat_tree == OF_DT_HEADER) {
> #endif
>
> into a readable one:
> if (FDT_VALIDATE) {
I disagree; I can't immediately see what the latter is doing. I can't
see what variables it accesses, and the name doesn't match either
operation. FDT_CHECK_HEADER(of_flat_tree) would be a much better
implementation IMO. This is in direct violation of CodingStyle ch. 12,
item 2 - did you read it?
>
> 1) The horrible #if is repeated in 3 places, so it is 9x ugly
that's valid, but I don't mind it too much, esp. given the conversion
stage we're in.
> 2) When CONFIG_OF_FLAT_TREE is retired, the #define will be removed and
> since it will then be a simple expression:
> if (fdt_check_header(of_flat_tree) == 0) {
>
retiring OF_FLAT_TREE does not automatically remove the #define. LIBFDT
can happily continue to use it if the person removing OF_FLAT_TREE
forgets to remove it. If you're telling me it'll be you, and you won't
forget, that's fine; I'm just interested in protecting and maintaining
readability of the code at this point.
Kim
More information about the U-Boot
mailing list