From: Vegard Nossum <vegard.nossum@gmail.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Sam Ravnborg <sam@ravnborg.org>,
Jaswinder Singh Rajput <jaswinderrajput@gmail.com>,
"David S. Miller" <davem@davemloft.net>
Subject: Re: [mingo@elte.hu: [git pull] headers_check fixes]
Date: Wed, 28 Jan 2009 00:51:36 +0100 [thread overview]
Message-ID: <19f34abd0901271551h482b3337k8097849d2ddb26b4@mail.gmail.com> (raw)
In-Reply-To: <20090127233159.GA26403@elte.hu>
On Wed, Jan 28, 2009 at 12:31 AM, Ingo Molnar <mingo@elte.hu> wrote:
> It would be much better if we exported _much_ less and reduced our
> cross-section to user-space. Also, the include/linux/Kbuild rules are all
> but transparent: it would also be nice if whatever we exported was be
> visible straight in the header itself, to make it obvious to people who
> modify/extend those files that those definitions are going to be exported
> to user-space.
>
> Some __user_export tag on structures perhaps? I have no good ideas here -
> #ifdefs are ugly and tags obscure the purity of the code.
Something that might or might not be doable in practice, but at least
it's a suggestion that I haven't seen elsewhere:
Create an include/user/ directory that contains a "mirror" of the
include/ directory _structure_, so that random exported header
include/linux/foo.h now has two parts -- include/linux/foo.h and
include/user/linux/foo.h.
- include/user/linux/foo.h contains the definitions that are needed by
both kernel and userspace
- include/linux/foo.h contains the definitions that are needed only by
the kernel
- include/linux/foo.h can simply #include <user/linux/foo.h> and no
other change (to source files which _use_ this header) is necessary
- no dependency on a kernel header will exist in a "user" header --
that's how it is now, but this way is more explicit
- the whole include/user/ can be shipped verbatim to /usr/include (or
wherever it is needed)
- no #ifdef __KERNEL__ or #ifdef CONFIG_ stuff in the "user" headers;
no stripping or unifdefing is needed
- it's easier to see exactly what is being exported
Of course, obvious disadvantages are:
- less readable in the sense that what used to be in one file is now
spread across two
- the split itself would probably require a tremendous effort
- other things?
It's just an idea...
Vegard
--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036
next prev parent reply other threads:[~2009-01-27 23:51 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20090127222825.GA27097@elte.hu>
2009-01-27 22:57 ` Linus Torvalds
2009-01-27 23:22 ` H. Peter Anvin
2009-01-27 23:29 ` Linus Torvalds
2009-01-28 0:12 ` H. Peter Anvin
2009-01-28 0:19 ` Linus Torvalds
2009-01-28 1:02 ` H. Peter Anvin
2009-01-27 23:31 ` Ingo Molnar
2009-01-27 23:43 ` Linus Torvalds
2009-01-27 23:51 ` Vegard Nossum [this message]
2009-01-30 14:01 ` Jaswinder Singh Rajput
2009-01-30 18:20 ` Ingo Molnar
2009-01-28 0:03 ` Harvey Harrison
2009-01-28 1:36 ` Jaswinder Singh Rajput
2009-01-28 12:37 ` Arnd Bergmann
2009-01-28 17:48 ` H. Peter Anvin
2009-01-28 19:22 ` Harvey Harrison
2009-01-28 19:44 ` Linus Torvalds
2009-01-28 20:03 ` Harvey Harrison
2009-01-28 21:25 ` H. Peter Anvin
2009-01-28 21:58 ` [PATCH] x86: do not expose CONFIG_BSWAP to userspace Harvey Harrison
2009-01-28 22:13 ` Linus Torvalds
2009-01-28 22:40 ` Harvey Harrison
2009-01-30 20:37 ` Pavel Machek
2009-01-28 22:15 ` H. Peter Anvin
2009-01-28 22:38 ` Harvey Harrison
2009-01-28 23:04 ` Ben Pfaff
2009-01-30 18:20 ` H. Peter Anvin
2009-01-28 23:27 ` H. Peter Anvin
2009-01-28 23:36 ` Harvey Harrison
2009-01-28 23:47 ` H. Peter Anvin
2009-02-03 18:19 ` Arnd Bergmann
2009-01-31 18:43 ` Maciej W. Rozycki
2009-01-31 20:24 ` H. Peter Anvin
2009-01-28 23:24 ` Arnd Bergmann
2009-01-28 23:30 ` H. Peter Anvin
2009-01-28 20:49 ` [mingo@elte.hu: [git pull] headers_check fixes] Sam Ravnborg
2009-01-28 21:23 ` H. Peter Anvin
2009-01-28 21:06 ` Sam Ravnborg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=19f34abd0901271551h482b3337k8097849d2ddb26b4@mail.gmail.com \
--to=vegard.nossum@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=davem@davemloft.net \
--cc=jaswinderrajput@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=sam@ravnborg.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®