Re: [PATCH] afs: fsclient.c sparse endian annotations of operation_ID

From: David Howells
Date: Wed Aug 27 2008 - 07:12:57 EST


Harvey Harrison <harvey.harrison@xxxxxxxxx> wrote:

> + if (call->operation_ID != __constant_htonl(FSFETCHDATA64)) {

Doesn't htonl() resolve to this for a constant argument? Following through
the definitions, it certainly looks like it ought to:

<linux/byteorder/generic.h>
#undef htonl
#define ___htonl(x) __cpu_to_be32(x)

<linux/byteorder/little_endian.h>
#define __cpu_to_be32(x) ((__force __be32)__swab32((x)))

<linux/byteorder/swab.h>
# define __swab32(x) \
(__builtin_constant_p((__u32)(x)) ? \
___constant_swab32((x)) : \
__fswab32((x)))

at least for GCC with optimisation enabled.

Of course, linux/byteorder.h and linux/swab.h seem to do much the same. Any
idea why we have both sets? There seems to be unnecessary redundancy.

David
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/