Patch series "linux/const.h: cleanups of macros such as UL(), _BITUL(), BIT() etc", v3. ARM, ARM64, UniCore32 define UL() as a shorthand of _AC(..., UL). More architectures may introduce it in the future. UL() is arch-agnostic, and useful. So let's move it to include/linux/const.h Currently, <asm/memory.h> must be included to use UL(). It pulls in more bloats just for defining some bit macros. I posted V2 one year ago. The previous posts are: https://patchwork.kernel.org/patch/9498273/ https://patchwork.kernel.org/patch/9498275/ https://patchwork.kernel.org/patch/9498269/ https://patchwork.kernel.org/patch/9498271/ At that time, what blocked this series was a comment from David Howells: You need to be very careful doing this. Some userspace stuff depends on the guard macro names on the kernel header files. (https://patchwork.kernel.org/patch/9498275/) Looking at the code closer, I noticed this is not a problem. See the following line. https://github.com/torvalds/linux/blob/v4.16-rc2/scripts/headers_install.sh#L40 scripts/headers_install.sh rips off _UAPI prefix from guard macro names. I ran "make headers_install" and confirmed the result is what I expect. So, we can prefix the include guard of include/uapi/linux/const.h, and add a new include/linux/const.h. This patch (of 4): I am going to add include/linux/const.h for the kernel space. Add _UAPI to the include guard of include/uapi/linux/const.h to prepare for that. Please notice the guard name of the exported one will be kept as-is. So, this commit has no impact to the userspace even if some userspace stuff depends on the guard macro names. scripts/headers_install.sh processes exported headers by SED, and rips off "_UAPI" from guard macro names. #ifndef _UAPI_LINUX_CONST_H #define _UAPI_LINUX_CONST_H will be turned into #ifndef _LINUX_CONST_H #define _LINUX_CONST_H
Showing the changes to include/uapi/linux (1 of 1 file). Show all
Unified · Split
| @@ -1,8 +1,8 @@ | ||
| 1 | 1 | /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
| 2 | 2 | /* const.h: Macros for dealing with constants. */ |
| 3 | 3 | |
| 4 | −#ifndef _LINUX_CONST_H | |
| 5 | −#define _LINUX_CONST_H | |
| 4 | +#ifndef _UAPI_LINUX_CONST_H | |
| 5 | +#define _UAPI_LINUX_CONST_H | |
| 6 | 6 | |
| 7 | 7 | /* Some constant macros are used in both assembler and |
| 8 | 8 | * C code. Therefore we cannot annotate them always with |
| @@ -25,4 +25,4 @@ · 16 unmodified lines | ||
| 25 | 25 | #define _BITUL(x) (_AC(1,UL) << (x)) |
| 26 | 26 | #define _BITULL(x) (_AC(1,ULL) << (x)) |
| 27 | 27 | |
| 28 | −#endif /* !(_LINUX_CONST_H) */ | |
| 28 | +#endif /* _UAPI_LINUX_CONST_H */ | |