Indeed. One of the reasons for separating them now is that it gives Linus a
free rein to do whatever cleanups he wants in kernel space without breaking
user-space applications.
Once they _have_ been cleaned up (which isn't going to happen in the short
term, by which I mean Linux 2.2/glibc 2.1) we can go back to using them from
userspace. However, this still won't mean that including <linux/*> headers is
acceptable for a user program in the general case; that's something that
should be restricted only to the very few cases where it's actually necessary.
In general user programs should still go via the appropriate libc header,
which may well just be a wrapper round one or more kernel headers. If there
are `public' interfaces that the kernel exports, such as the sg device, we
can add libc headers for them.
p.