libfdt: Abolish _typed() variants, add _cell() variants
Jon Loeliger
jdl at jdl.com
Wed Nov 21 02:06:46 EST 2007
So, like, the other day David Gibson mumbled:
> In a number of places through libfdt and its tests, we have *_typed()
> macro variants on functions which use gcc's typeof and statement
> expression extensions to allow passing literals where the underlying
> function takes a buffer and size.
>
> These seemed like a good idea at the time, but in fact they have some
> problems. They use typeof and statement expressions, extensions I'd
> prefer to avoid for portability. Plus, they have potential gotchas -
> although they'll deal with the size of the thing passed, they won't
> deal with other representation issues (like endianness) and results
> could be very strange if the type of the expression passed isn't what
> you think it is.
>
> In fact, the only users of these _typed() macros were when the value
> passed is a single cell (32-bit integer). Therefore, this patch
> removes all these _typed() macros and replaces them with explicit
> _cell() variants which handle a single 32-bit integer, and which also
> perform endian convesions as appropriate.
>
> With this in place, it now becomes easy to use standardized big-endian
> representation for integer valued properties in the testcases,
> regardless of the platform we're running on. We therefore do that,
> which has the additional advantage that all the example trees created
> during a test run are now byte-for-byte identical regardless of
> platform.
>
> Signed-off-by: David Gibson <david at gibson.dropbear.id.au>
Applied.
jdl
More information about the Linuxppc-dev
mailing list