From d8539681e4d171e036f20b17aa912b515304994a Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Thu, 17 Nov 2022 15:28:12 -0500 Subject: [PATCH] Fix: add missing typedef and forward declarations for old kernels While we are updating this, remove duplicated code between header and implementation. Reorganise list by alphabetical order. Signed-off-by: Mathieu Desnoyers Change-Id: I79f1877d965084a77a1fdd573f8e227cd7f5ce74 --- src/lttng-syscalls.c | 28 ---------------------- src/lttng-syscalls.h | 55 ++++++++++++++++++++++++++++++++------------ 2 files changed, 40 insertions(+), 43 deletions(-) diff --git a/src/lttng-syscalls.c b/src/lttng-syscalls.c index ceba4e06..9cd11ea6 100644 --- a/src/lttng-syscalls.c +++ b/src/lttng-syscalls.c @@ -66,34 +66,6 @@ enum sc_type { void syscall_entry_event_probe(void *__data, struct pt_regs *regs, long id); void syscall_exit_event_probe(void *__data, struct pt_regs *regs, long ret); -/* - * Forward declarations for old kernels. - */ -struct mmsghdr; -struct rlimit64; -struct oldold_utsname; -struct old_utsname; -struct sel_arg_struct; -struct mmap_arg_struct; -struct file_handle; -struct user_msghdr; -struct __kernel_old_itimerval; -struct open_how; -struct mount_attr; -struct futex_waitv; - -/* - * Forward declaration for kernels >= 5.6 - */ -struct timex; -struct timeval; -struct itimerval; -struct itimerspec; - -#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,6,0)) -typedef __kernel_old_time_t time_t; -#endif - #ifdef IA32_NR_syscalls #define NR_compat_syscalls IA32_NR_syscalls #else diff --git a/src/lttng-syscalls.h b/src/lttng-syscalls.h index c9888bd2..e0f340ef 100644 --- a/src/lttng-syscalls.h +++ b/src/lttng-syscalls.h @@ -16,37 +16,62 @@ #include #include #include +#include #include #include - /* - * Forward declarations for old kernels. + * Forward declarations allowing LTTng to build its system call instrumentation + * against old kernels which do not declare the more recent system call + * argument structure types. */ +struct clone_args; +struct file_handle; +struct futex_waitv; +struct io_uring_params; +struct mmap_arg_struct; struct mmsghdr; -struct rlimit64; +struct mount_attr; struct oldold_utsname; struct old_utsname; +struct old_itimerspec32; +struct old_timespec32; +struct old_timeval32; +struct old_timex32; +struct old_utimbuf32; +struct open_how; +struct rlimit64; +struct rseq; struct sel_arg_struct; -struct mmap_arg_struct; -struct file_handle; +struct statx; struct user_msghdr; + +struct __aio_sigset; struct __kernel_old_itimerval; -struct open_how; -struct mount_attr; -struct futex_waitv; +struct __kernel_timespec; +struct __kernel_timex; +struct __kernel_old_timeval; +struct __kernel_itimerspec; -/* - * Forward declaration for kernels >= 5.6 - */ -struct timex; -struct timeval; -struct itimerval; -struct itimerspec; +typedef __kernel_long_t __kernel_old_time_t; +typedef int __bitwise __kernel_rwf_t; +typedef __kernel_rwf_t rwf_t; +typedef s32 old_time32_t; #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,6,0)) +/* + * Forward declaration and typedef for old types expected by MIPS and POWER + * system call instrumentation when building against kernel >= 5.6.0. To be + * removed after those system call instrumentation headers are regenerated + * against a recent kernel. + */ typedef __kernel_old_time_t time_t; + +struct itimerspec; +struct itimerval; +struct timeval; +struct timex; #endif struct trace_syscall_entry { -- 2.34.1