IIRC the current agreed scheme is something along the lines of this:
abi/abi-linux/* Userspace relevant parts of include/linux
abi/abi-asm/ symlink to abi/abi-$(ARCH)
abi/abi-i386 i386 specific userland abi
abi/abi-ppc ppc ....
So a header file in include/linux with a counterpart in abi could look like this:
include/linux/wait.h:
#include <abi-linux/wait.h>
#include <linux/config.h>
typedef struct __wait_queue wait_queue_t;
...
abi/abi-linux/wait.h:
#define WNOHANG 0x00000001
#define WUNTRACED 0x00000002
This proposal meets some resistence related to internal issues such as
renaming of internal types etc.
But in the end the gain from a scheme like this outweights the drawbacks - IMHO.
And the backward compatible stuff can be located in abi where it may belong -
if really needed.