On Friday, January 6, 2017 10:43:52 AM CET Nicolas Dichtel wrote:
Here is the v2 of this series. The first 5 patches are just cleanup: some exported headers were still under a non-uapi directory.
Since this is meant as a cleanup, I commented on this to point out a cleaner way to do the same.
The patch 6 was spotted by code review: there is no in-tree user of this functionality. The last patch remove the use of header-y. Now all files under an uapi directory are exported.
Very nice!
asm is a bit special, most of architectures export asm/<arch>/include/uapi/asm only, but there is two exceptions:
- cris which exports arch/cris/include/uapi/arch-v[10|32];
This is interesting, though not your problem. Maybe someone who understands cris better can comment on this: How is the decision made about which of the arch/user.h headers gets used? I couldn't find that in the sources, but it appears to be based on kernel compile-time settings, which is wrong for user space header files that should be independent of the kernel config.
- tile which exports arch/tile/include/uapi/arch.
Because I don't know if the output of 'make headers_install_all' can be changed, I introduce subdir-y in Kbuild file. The headers_install_all target copies all asm/<arch>/include/uapi/asm to usr/include/asm-<arch> but arch/cris/include/uapi/arch-v[10|32] and arch/tile/include/uapi/arch are not prefixed (they are put asis in usr/include/). If it's acceptable to modify the output of 'make headers_install_all' to export asm headers in usr/include/asm-<arch>/asm, then I could remove this new subdir-y and exports everything under arch/<arch>/include/uapi/.
I don't know if anyone still uses "make headers_install_all", I suspect distros these days all use "make headers_install", so it probably doesn't matter much.
In case of cris, it should be easy enough to move all the contents of the uapi/arch-*/*.h headers into the respective uapi/asm/*.h headers, they only seem to be referenced from there.
For tile, I suspect that would not work as the arch/*.h headers are apparently defined as interfaces for both user space and kernel.
Note also that exported files for asm are a mix of files listed by:
- include/uapi/asm-generic/Kbuild.asm;
- arch/x86/include/uapi/asm/Kbuild;
- arch/x86/include/asm/Kbuild.
This complicates a lot the processing (arch/x86/include/asm/Kbuild is also used by scripts/Makefile.asm-generic).
This series has been tested with a 'make headers_install' on x86 and a 'make headers_install_all'. I've checked the result of both commands.
This patch is built against linus tree. I don't know if it should be made against antoher tree.
The series should probably get merged through the kbuild tree, but testing it on mainline is fine here.
Arnd