In article >[email protected]>,
H. Peter Anvin <[email protected]> wrote:
>Followup to: <[email protected]>
>By author: [email protected] (Miquel van Smoorenburg)
>In newsgroup: linux.dev.kernel
>> >> Everything in /usr/include belongs to and depends on glibc, not
>> >> the currently running kernel.
>> >Unfortunately that doesn't work very well. For user-space daemons
>> >which talk to Linux-specific kernel interfaces, such as automount, you
>> >need both the glibc and the Linux kernel headers.
>> Yes, but you can't mix&match anyway. For stuff like that you're
>> probably best off by using a talktokernel.c file that is
>> compiled with -I/path/to/kernel/include while the rest of the
>> daemon doesn't know about kernel internals.
>> That could and perhaps should be fixed, but I think that is
>> a different issue entirely.
>For most kernel interface daemons, that is not an option. You need to
>be able to translate (or just transfer information) between
>glibc-provided and kernel-provided data structures, so you need to be
>able to include all the datatypes.
Why? As I said you can use a glue layer. Note that you still
cannot mix /usr/include/net and /usr/src/linux/include/net anyway,
so clashes will always exist with the current system.
I agree it should probably be fixed.
>Let's get this straight: #include <linux/*> and #include <asm/*> are
>*expected* to be the kernel headers. This is a completely different
>issue from the fact that glibc headers shouldn't #include these
>headers like libc5 did.
But again as I said that is a different issue. This thread (with the
misleading Subject: header) is mostly about how to build modules
There are 3 different issues here:
1. Consistent build environment for 3rd party modules
2. kernel-provided data structures for system daemons like autofs
3. kernel-provided data structures being used in glibc headers
I was merely talking about #1
Cistron Certified Internetwork Expert #1. Think free speech; drink free beer.