Re: [RFC] Splitting out kernel<=>userspace ABI headers

From: Erik Andersen
Date: Sat Sep 03 2005 - 01:41:44 EST


On Fri Sep 02, 2005 at 10:53:19PM -0700, H. Peter Anvin wrote:
> Erik Andersen wrote:
> >On Fri Sep 02, 2005 at 10:22:20PM -0700, H. Peter Anvin wrote:
> >
> >>Exportable types need to be double-underscore types, because the header
> >>files in user space that would include them can generally not include
> >><stdint.h>.
> >
> >
> >I'm not talking about kernel headers that have to worry about
> >eventually being included in user space headers. Those nearly
> >all live in include/asm. I'm talking about the kernel headers
> >that define how userspace is supposed to interface with
> >particular kernel drivers or hardware. Headers such as
> >linux/cdrom.h and linux/loop.h and linux/fb.h.
> >
>
> What are you going to do with them if you're not going to include them
> in userspace?!!!
>
> If you're proposing one policy for linux/loop.h and one for sys/stat.h,
> I would have to classify that as insane. Everything that gets exported
> to userspace should behave the same way, please.

That is certainly not what I was proposing. Why are you bringing
sys/stat.h into this? The contents of sys/stat.h are entirely up
to SUSv3 and the C library to worry about. Nobody has proposed
mucking with that. I dunno about your C library, but mine
doesn't include linux/* header files (not even sys/stat.h). And
I'd really like to fix uClibc to not use any asm/* either, since
much of it is entirely unsuitable for user space.

I am proposing a single consistant policy for all of linux/* such
that all linux/* headers that need integer types of a specific
size shall #include unistd.h and use ISO C99 types rather that
the ad-hoc kernel types they now use.

The policy has _long_ been that user space must never include
linux/* header files. Since we are now proposing a project to
reverse this policy, the long standing policy making linux/*
verboten now leaves us completely free to do pretty much anything
with linux/*. And what I want is for linux/* to use the shiny
ISO C99 types.

-Erik

--
Erik B. Andersen http://codepoet-consulting.com/
--This message was written using 73% post-consumer electrons--
-
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/