public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: linux-kernel@vger.kernel.org
Subject: Header files and the kernel ABI
Date: 24 Jul 2002 23:28:37 -0700	[thread overview]
Message-ID: <aho5ql$9ja$1@cesium.transmeta.com> (raw)

OK... I have had a thought grinding in my head for a while, and wanted
to throw it out for everyone to think about...

In the libc4/libc5 days, we attempted to use kernel headers in user
space.  This was a total mess, not the least because the kernel
headers tended to pull in a lot of other kernel headers, and the
datatypes were unsuitable to have spead all across userspace.

In glibc, the official rule is "don't use kernel headers."  This
causes problems, because certain aspects of the kernel ABI is only
available through the include files, and reproducing them by hand is
tedious and error-prone.

I'm in the process of writing a very tiny libc for initramfs, and will
likely have to deal with how to use the kernel ABI as well.

It seems to me that a reasonable solution for how to do this is not
for user space to use kernel headers, but for user space and the
kernel to share a set of common ABI description files[1].  These files
should be highly stylized, and only describe things visible to user
space.  Furthermore, if they introduce types, they should use the
already-established __kernel_ namespace, and of course __s* and __u*
could be used for specific types.

This means that we would be able to get rid of #if(n)def __KERNEL__ in
the main kernel header files, because there would be a separation by
file location -- something in the main kernel include files could
include the ABI description files, but the opposite should never be
true.

I would like to propose that these files be set up in the #include
namespace as <linux/abi/*>, with <linux/abi/arch/*> for any
architecture-specific support files (I do believe, however, that those
files should only be included by files in the linux/abi/ root.  This
probably would be a symlink to ../asm/abi in the kernel sources,
unless we change the kernel include layout.)  The linux/ namespace is
universally reserved for the kernel, and unlike <abi/*> I don't know
of any potential conflicts.  I was considered <kabi/*>, but it seems
cleaner to use existing namespace.

If people think this is an idea, I will try to set up the
infrastructure as part of my work on klibc, although I'm definitely
not going to be able to migrate every portion of every include file
that needs to be migrated all by myself.

Thoughts?

	-hpa



[1] I'm assuming here they are C include files, just because it's a
common language to everyone; however, it would be possible to create
an "ABI description language" which would compile to C headers as well
as perhaps other formats (assembly language support files?), ...)
-- 
<hpa@transmeta.com> at work, <hpa@zytor.com> in private!
"Unix gives you enough rope to shoot yourself in the foot."
http://www.zytor.com/~hpa/puzzle.txt	<amsp@zytor.com>

             reply	other threads:[~2002-07-25  6:25 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-25  6:28 H. Peter Anvin [this message]
2002-07-25  6:51 ` Header files and the kernel ABI Andreas Dilger
2002-07-25  7:07   ` H. Peter Anvin
2002-07-25  7:32     ` Andreas Dilger
2002-07-25 16:29       ` Oliver Xymoron
2002-07-25 16:31         ` H. Peter Anvin
2002-07-25 18:19           ` Erik Andersen
2002-07-25 20:03             ` Oliver Xymoron
2002-07-27 11:29               ` Eric W. Biederman
2002-07-25 16:30       ` H. Peter Anvin
2002-07-25  8:00 ` DervishD
2002-07-25 13:08 ` Brad Hards
2002-07-25 16:09   ` DervishD
2002-07-25 16:17   ` H. Peter Anvin
2002-07-25 18:22     ` Erik Andersen
2002-07-31 21:37 ` Kernel ABI BoF at Linux-Kongress? [was: Header files and the kernel ABI] Brad Hards
  -- strict thread matches above, loose matches on Subject: below --
2002-07-25 21:13 Header files and the kernel ABI dank
2002-07-26  2:37 ` jw schultz

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='aho5ql$9ja$1@cesium.transmeta.com' \
    --to=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.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