Define PRI__[uxs]64 macros to print __s64 and __u64 values

Rather than cast every __u64 or __s64 before printing,
define printing helpers for those types directly.

* defs.h (PRI__s64, PRI__u64, PRI__x64): New macros.
This commit is contained in:
Jeff Mahoney 2016-03-31 00:34:17 -04:00 committed by Dmitry V. Levin
parent 3f6ebceb50
commit 1f3482beda

20
defs.h
View File

@ -769,3 +769,23 @@ extern unsigned num_quals;
#define SYS_FUNC(syscall_name) int SYS_FUNC_NAME(sys_ ## syscall_name)(struct tcb *tcp)
#define MPERS_PRINTER_DECL(type, name) type MPERS_FUNC_NAME(name)
/*
* The kernel used to define 64-bit types on 64-bit systems on a per-arch
* basis. Some architectures would use unsigned long and others would use
* unsigned long long. These types were exported as part of the
* kernel-userspace ABI and now must be maintained forever. This matches
* what the kernel exports for each architecture so we don't need to cast
* every printing of __u64 or __s64 to stdint types.
*/
#if SIZEOF_LONG == 4
# define PRI__64 "ll"
#elif defined ALPHA || defined IA64 || defined MIPS || defined POWERPC
# define PRI__64 "l"
#else
# define PRI__64 "ll"
#endif
#define PRI__s64 PRI__64"d"
#define PRI__u64 PRI__64"u"
#define PRI__x64 PRI__64"x"