Re: [PATCH] 2.4.21-rc1: byteorder.h breaks with __STRICT_ANSI__defined (trivial)

From: Martin Schlemmer
Date: Thu Nov 06 2003 - 16:18:57 EST


On Thu, 2003-11-06 at 22:27, David S. Miller wrote:
> On Thu, 06 Nov 2003 22:29:12 +0200
> Martin Schlemmer <azarah@xxxxxxxxxx> wrote:
>
> > If you look at asm/types.h, u64 is kernel only namespace, so in
> > theory that code will not be in userspace.
>
> Replace u64 with __u64 in my examples, the point still stances.
>
>
> > #else
> > <code without __u64>
> > ..
> > #endif
>
> This may not be possible. You cannot account for every internal
> thing that kernel header routines might need to do or work with.
> Many structures, which the userspace can't control the layout
> of etc., makes use of the __u64 type, and we can't just turn off
> all those things just because -ansi was specified.
>
> We're talking about things like structures that define the userspace
> ABI into the kernel, they use things like __u64. So what effectively
> this means is that when you compile with -ansi you are effectively
> turning off access to several userspace ABIs into the kernel.
>
> And this isn't going to be only some obscrure feature like some
> CDROM ioctl or whatever, things like "struct stat" use the 64-bit types
> either directly or indirectly.

Ok - say for instance then you were to write the abi headers - how would
you handle a case like this that -ansi forbid type long long, but it
have to be in the struct userspace uses to pass data to the
kernel/device ?


Thanks,

--

Martin Schlemmer



Attachment: signature.asc
Description: This is a digitally signed message part