Messages in this thread | | | Date | Thu, 6 Nov 2003 16:21:20 -0500 | From | Daniel Jacobowitz <> | Subject | Re: [PATCH] 2.4.21-rc1: byteorder.h breaks with __STRICT_ANSI__ defined (trivial) |
| |
On Thu, Nov 06, 2003 at 12:05:48PM -0800, David S. Miller wrote: > On Thu, 06 Nov 2003 22:09:29 +0200 > Martin Schlemmer <azarah@gentoo.org> wrote: > > > On Thu, 2003-11-06 at 21:37, David S. Miller wrote: > > > Let's say that you end up using some inline function > > > that takes u32 arguments, and internally it uses > > > u64 types to speed up the calculation or make it more > > > accurate or something like that. > > > > So basically only in cases where the stuff in byteorder.h > > was not inlined ... ? > > No, exactly in the cases where it _IS_ inlined. Imagine > this: > > static inline u32 swab_foo(u32 a, u32 b) > { > u64 tmp = ((u64)a<<32) | ((u64)b); > u32 retval; > > retval = compute(tmp); > > return retval; > } > > If that's in a kernel header somewhere, and you build with -ansi, > you lose.
In general the inlines should be __KERNEL__'d anyway. In any case, the prior art in <linux/types.h> is:
#if defined(__GNUC__) && !defined(__STRICT_ANSI__) typedef __u64 uint64_t; typedef __u64 u_int64_t; typedef __s64 int64_t; #endif
Or did I miss something at the beginning of this conversation?
[Debian is already using similar patches, which disable the 64-bit swabbing in __STRICT_ANSI__.]
-- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |