Move macros related to kernel types to kernel_types.h

Some macros related to kernel types are defined both in defs.h and
tests/tests.h.  Avoid this redundancy by moving these definitions
to kernel_types.h.

* defs.h (PRI_kl, PRI_kld, PRI_klu, PRI_klx, PRI__64, PRI__d64,
PRI__u64, PRI__x64): Move ...
* kernel_types.h: ... here.
* tests/tests.h (PRI__64, PRI__d64, PRI__u64, PRI__x64): Remove.
This commit is contained in:
Дмитрий Левин 2017-07-13 21:56:29 +00:00
parent 5c34fd9162
commit 14c2dca9e1
3 changed files with 32 additions and 52 deletions

32
defs.h
View File

@ -1024,36 +1024,4 @@ scno_is_valid(kernel_ulong_t scno)
#define SYS_FUNC(syscall_name) int SYS_FUNC_NAME(sys_ ## syscall_name)(struct tcb *tcp)
#if SIZEOF_KERNEL_LONG_T > SIZEOF_LONG
# define PRI_kl "ll"
#else
# define PRI_kl "l"
#endif
#define PRI_kld PRI_kl"d"
#define PRI_klu PRI_kl"u"
#define PRI_klx PRI_kl"x"
/*
* 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.
* The exception is Android, where for MIPS64 unsigned long long is used.
*/
#if SIZEOF_LONG == 4
# define PRI__64 "ll"
#elif defined ALPHA || defined IA64 || defined POWERPC \
|| (defined MIPS && !defined __ANDROID__)
# define PRI__64 "l"
#else
# define PRI__64 "ll"
#endif
#define PRI__d64 PRI__64"d"
#define PRI__u64 PRI__64"u"
#define PRI__x64 PRI__64"x"
#endif /* !STRACE_DEFS_H */

View File

@ -55,4 +55,36 @@ typedef struct {
char d_name[1];
} kernel_dirent;
#if SIZEOF_KERNEL_LONG_T > SIZEOF_LONG
# define PRI_kl "ll"
#else
# define PRI_kl "l"
#endif
#define PRI_kld PRI_kl"d"
#define PRI_klu PRI_kl"u"
#define PRI_klx PRI_kl"x"
/*
* 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.
* The exception is Android, where for MIPS64 unsigned long long is used.
*/
#if SIZEOF_LONG == 4
# define PRI__64 "ll"
#elif defined ALPHA || defined IA64 || defined POWERPC \
|| (defined MIPS && !defined __ANDROID__)
# define PRI__64 "l"
#else
# define PRI__64 "ll"
#endif
#define PRI__d64 PRI__64"d"
#define PRI__u64 PRI__64"u"
#define PRI__x64 PRI__64"x"
#endif /* !STRACE_KERNEL_TYPES_H */

View File

@ -228,26 +228,6 @@ f8ill_ptr_to_kulong(const void *const ptr)
# define SKIP_MAIN_UNDEFINED(arg) \
int main(void) { error_msg_and_skip("undefined: %s", arg); }
/*
* 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__d64 PRI__64"d"
# define PRI__u64 PRI__64"u"
# define PRI__x64 PRI__64"x"
# if WORDS_BIGENDIAN
# define LL_PAIR(HI, LO) (HI), (LO)
# else