using kernel headers in libc headers

From: Ulrich Drepper
Date: Mon Nov 30 2009 - 11:37:31 EST


The kernel headers nowadays are cleaned up to separate in-kernel
definitions from those that are exported. That's of course good but
it's unfortunately not sufficient to use (most of) the headers in
glibc.

Take <linux/sched.h> for instance. The <sched.h> header is defined in
POSIX and therefore the specify which symbols can be defined in which
configuration. The <linux/sched.h> defines all kinds of symbols,
though, unconditionally. If you compare it with the glibc header
you'd see that all the CLONE_* symbols and some of the SCHED_* symbols
are only defined in certain configurations (non-POSIX configurations).

It's likely in everybody's interest to get the kernel headers used.
But for this mode #ifdefs are needed. I'm willing to do the work.
Easy enough to do when I'm going through the headers one-by-one to
enable them in glibc. But I don't want to start this work unless it's
going to be accepted. The symbols would be something like

__USE_MISC

or

__USE_GNU

These are not macros which the user must define. The user sets macros
like _GNU_SOURCE etc which then set all the appropriate __USE_* macros
(see "info libc 'Feature Test Macros'" on machines with glibc
installed). These names are somewhat glibc-specific but other libcs
can (or already have) adapt them.

So, what do you say?
--
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/