Messages in this thread | ![/](/images/icornerl.gif) | | Subject | Re: [PATCH] 2.4.21-rc1: byteorder.h breaks with __STRICT_ANSI__ defined (trivial) | From | Martin Schlemmer <> | Date | Thu, 06 Nov 2003 23:18:55 +0200 |
| |
On Thu, 2003-11-06 at 22:27, David S. Miller wrote: > On Thu, 06 Nov 2003 22:29:12 +0200 > Martin Schlemmer <azarah@gentoo.org> 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
[unhandled content-type:application/pgp-signature] | ![\](/images/icornerr.gif) |