1 /* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
5 * LTTng syscall header.
7 * Copyright (C) 2021 Francis Deslauriers <francis.deslauriers@efficios.com>
10 #ifndef LTTNG_SYSCALLS_H
11 #define LTTNG_SYSCALLS_H
13 #include <asm/ptrace.h>
14 #include <linux/compat.h>
15 #include <linux/fcntl.h>
17 #include <linux/in6.h>
18 #include <linux/mman.h>
19 #include <linux/posix_types.h>
21 #include <lttng/events.h>
22 #include <lttng/kernel-version.h>
24 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,13,0))
25 #include <linux/landlock.h>
27 struct landlock_ruleset_attr
;
29 enum landlock_rule_type
{
30 LANDLOCK_RULE_PATH_BENEATH
= 1,
35 * Forward declarations allowing LTTng to build its system call instrumentation
36 * against old kernels which do not declare the more recent system call
37 * argument structure types.
42 struct io_uring_params
;
43 struct mmap_arg_struct
;
46 struct oldold_utsname
;
48 struct old_itimerspec32
;
49 struct old_timespec32
;
57 struct sel_arg_struct
;
62 struct __kernel_old_itimerval
;
63 struct __kernel_timespec
;
64 struct __kernel_timex
;
65 struct __kernel_old_timeval
;
66 struct __kernel_itimerspec
;
70 #ifndef __kernel_long_t
71 typedef long __kernel_long_t
;
74 typedef __kernel_long_t __kernel_old_time_t
;
75 typedef int __bitwise __kernel_rwf_t
;
76 typedef __kernel_rwf_t rwf_t
;
77 typedef s32 old_time32_t
;
79 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,6,0))
81 * Forward declaration and typedef for old types expected by MIPS and POWER
82 * system call instrumentation when building against kernel >= 5.6.0. To be
83 * removed after those system call instrumentation headers are regenerated
84 * against a recent kernel.
86 typedef __kernel_old_time_t
time_t;
94 struct trace_syscall_entry
{
96 const struct lttng_kernel_event_desc
*desc
;
97 const struct lttng_kernel_event_field
* const *fields
;
101 struct trace_syscall_table
{
102 const struct trace_syscall_entry
*table
;
107 void syscall_entry_event_probe(void *__data
, struct pt_regs
*regs
, long id
);
110 void syscall_exit_event_probe(void *__data
, struct pt_regs
*regs
, long ret
);
113 void syscall_entry_event_notifier_probe(void *__data
, struct pt_regs
*regs
,
116 void syscall_exit_event_notifier_probe(void *__data
, struct pt_regs
*regs
,
119 #endif /* LTTNG_SYSCALLS_H */