Message ID | 20220621090951.29911-1-metan@ucw.cz |
---|---|
State | Not Applicable |
Headers | show |
Series | [v2] uapi: Make __{u, s}64 match {u, }int64_t in userspace | expand |
* Cyril Hrubis: > From: Cyril Hrubis <chrubis@suse.cz> > > This changes the __u64 and __s64 in userspace on 64bit platforms from > long long (unsigned) int to just long (unsigned) int in order to match > the uint64_t and int64_t size in userspace. > > This allows us to use the kernel structure definitions in userspace. > > For example we can use PRIu64 and PRId64 modifiers in printf() to print > structure membere. Morever with this there would be no need to redefine > these structures in an libc implementations as it is done now. > > Consider for example the newly added statx() syscall. If we use the > header from uapi we will get warnings when attempting to print it's > members as: > > printf("%" PRIu64 "\n", stx.stx_size); > > We get: > > warning: format '%lu' expects argument of type 'long unsigned int', > but argument 5 has type '__u64' {aka 'long long unsigned int'} > > Signed-off-by: Cyril Hrubis <chrubis@suse.cz> Could you add some motivation for the C++ condition to the commit message? Thanks, Florian
diff --git a/include/uapi/asm-generic/types.h b/include/uapi/asm-generic/types.h index dfaa50d99d8f..11e468a39d1e 100644 --- a/include/uapi/asm-generic/types.h +++ b/include/uapi/asm-generic/types.h @@ -1,9 +1,16 @@ /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_GENERIC_TYPES_H #define _ASM_GENERIC_TYPES_H + +#include <asm/bitsperlong.h> + /* - * int-ll64 is used everywhere now. + * int-ll64 is used everywhere in kernel now. */ -#include <asm-generic/int-ll64.h> +#if !defined(__KERNEL__) && !defined(__cplusplus) && __BITSPERLONG == 64 +# include <asm-generic/int-l64.h> +#else +# include <asm-generic/int-ll64.h> +#endif #endif /* _ASM_GENERIC_TYPES_H */