Messages in this thread | | | Date | Mon, 19 May 2003 18:09:19 -0700 | From | "H. Peter Anvin" <> | Subject | Re: Recent changes to sysctl.h breaks glibc |
| |
David Woodhouse wrote: > > To a large extent, however, it merely grows. And in a lot of cases when > it grows due to new syscalls, new interfaces, etc., you have to add > matching code to glibc to use them _anyway_, so it's no problem for > glibc's version of the headers to lag behind until the appropriate > support is added. >
... unless you need the new feature, may it be an ioctl to support your device driver, or whatnot.
Most ABI changes do not require
> You are, however, correct that the correct fix is to have completely > separate headers which define the ABI. Then the real kernel headers in > include/linux and include/asm can include them, and C libraries can also > use them without contamination. > > This requires that someone sit down and cut'n'paste large amounts of > structures and definitions from include/linux/*.h into the new header > files. I've been tempted to do that on occasion but what's held me up > has been the fact that there isn't yet a consensus on how it should be > laid out.
I maintain the proposal I have given before:
<linux/abi/*.h> as the header file namespace; <linux/*.h> <asm/*.h> namespaces reserved for compatibility (once the migration is complete these are owned by the libc)
Types use the __kernel_* namespace *only*; structures use struct __kernel_*.
Some form of export of the expected syscall ABI as well as syscall numbering.
> For compatibility with older libc, one approach would be to add a new > directory to the include path which matches the existing layout > (linux/usrinclude/linux, linux/usrinclude/asm-*), and use #include_next > from the actual kernel headers to pull in those files. > > Alternatively, we could go further and take the opportunity to rearrange > stuff further; I'm not sure what we really gain from that though other > than extra pain.
I don't think the <linux/*.h> namespace as its currently laid out is very functional for exporting ABIs, so I'd like to
A bigger issue is if this really should be done in C. A worthwhile thought: if this is done correctly then most or all of the 64/32 compat code (or any other arch1-on-arch2 compatibility) should be able to be automatically generated. If not, it almost certainly isn't done correctly...
> If Linus would approve a strategy for rearranging the headers such that > people can work on it without suspecting that they're just wasting their > time, I think it could get done for 2.6. > > It's not the kind of thing you do in private and present as a fait > accomplis -- if it isn't quite right, you end up having to do the whole > thing from scratch, afaict.
Agreed.
-hpa
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |