Disable mmap bitwise enum in default build
[lttng-modules.git] / include / instrumentation / syscalls / headers / syscalls_integers_override.h
CommitLineData
b7cdc182 1/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only) */
6314c2d3 2
7e42c4ec
MD
3#ifndef CREATE_SYSCALL_TABLE
4
4f65dbd2
MJ
5#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
6
3cf55950
FD
7/*
8 * The `flags` argument of the mmap syscall is split in two parts:
9 * - The type of mapping is described by the four least significant bits of the 4
10 * bytes integer,
11 * - The options on the mapping are described by the remaining 28 most
12 * significant bits.
13 */
14#define MAPPING_TYPE_RESERVED_BITS 4
15#define LTTNG_MMAP_FLAGS_TO_CTF(x) ((x) >> MAPPING_TYPE_RESERVED_BITS)
16
17/*
18 * Enumeration of the mmap flags, as described in the 'mmap'
19 * system call man page.
20 */
21SC_LTTNG_TRACEPOINT_ENUM(lttng_mmap_protection,
22 TP_ENUM_VALUES(
23 ctf_enum_value("PROT_EXEC", PROT_EXEC)
24 ctf_enum_value("PROT_READ", PROT_READ)
25 ctf_enum_value("PROT_WRITE", PROT_WRITE)
26 ctf_enum_value("PROT_NONE", PROT_NONE)
27 )
28)
29
30SC_LTTNG_TRACEPOINT_ENUM(lttng_mmap_flags_mapping_type,
31 TP_ENUM_VALUES(
32 ctf_enum_value("MAP_SHARED", MAP_SHARED)
33 ctf_enum_value("MAP_PRIVATE", MAP_PRIVATE)
5f4c791e 34#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0))
3cf55950 35 ctf_enum_value("MAP_SHARED_VALIDATE", MAP_SHARED_VALIDATE)
5f4c791e 36#endif /* (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0)) */
3cf55950
FD
37 )
38)
39
40/*
41 * Shift the values of the options so we can read them from the `flags` integer
42 * directly.
43 */
44SC_LTTNG_TRACEPOINT_ENUM(lttng_mmap_flags_options,
45 TP_ENUM_VALUES(
46 ctf_enum_value("<none>", 0)
1203baa4
FD
47
48#if defined (MAP_32BIT) && MAP_32BIT != 0
3cf55950 49 ctf_enum_value("MAP_32BIT", LTTNG_MMAP_FLAGS_TO_CTF(MAP_32BIT))
1203baa4
FD
50#endif /* defined (MAP_32BIT) && MAP_32BIT != 0 */
51
3cf55950
FD
52 ctf_enum_value("MAP_ANONYMOUS", LTTNG_MMAP_FLAGS_TO_CTF(MAP_ANONYMOUS))
53 ctf_enum_value("MAP_DENYWRITE", LTTNG_MMAP_FLAGS_TO_CTF(MAP_DENYWRITE))
54 ctf_enum_value("MAP_EXECUTABLE", LTTNG_MMAP_FLAGS_TO_CTF(MAP_EXECUTABLE))
55 ctf_enum_value("MAP_FIXED", LTTNG_MMAP_FLAGS_TO_CTF(MAP_FIXED))
1203baa4 56
5f4c791e 57#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,17,0))
3cf55950 58 ctf_enum_value("MAP_FIXED_NOREPLACE", LTTNG_MMAP_FLAGS_TO_CTF(MAP_FIXED_NOREPLACE))
5f4c791e 59#endif /* (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,17,0)) */
1203baa4 60
3cf55950
FD
61 ctf_enum_value("MAP_GROWSDOWN", LTTNG_MMAP_FLAGS_TO_CTF(MAP_GROWSDOWN))
62 ctf_enum_value("MAP_HUGETLB", LTTNG_MMAP_FLAGS_TO_CTF(MAP_HUGETLB))
1203baa4 63
5f4c791e 64#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,8,0))
1203baa4
FD
65
66#if defined (MAP_HUGE_2MB) && MAP_HUGE_2MB != 0
67 ctf_enum_value("MAP_HUGE_2MB", LTTNG_MMAP_FLAGS_TO_CTF(MAP_HUGE_2MB))
68#endif /* defined (MAP_HUGE_2MB) && MAP_HUGE_2MB != 0 */
69
70#if defined (MAP_HUGE_1GB) && MAP_HUGE_1GB != 0
71 ctf_enum_value("MAP_HUGE_1GB", LTTNG_MMAP_FLAGS_TO_CTF(MAP_HUGE_1GB))
72#endif /* defined (MAP_HUGE_1GB) && MAP_HUGE_1GB != 0 */
73
5f4c791e 74#endif /* (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,8,0)) */
1203baa4 75
3cf55950
FD
76 ctf_enum_value("MAP_LOCKED", LTTNG_MMAP_FLAGS_TO_CTF(MAP_LOCKED))
77 ctf_enum_value("MAP_NONBLOCK", LTTNG_MMAP_FLAGS_TO_CTF(MAP_NONBLOCK))
78 ctf_enum_value("MAP_NORESERVE", LTTNG_MMAP_FLAGS_TO_CTF(MAP_NORESERVE))
79 ctf_enum_value("MAP_POPULATE", LTTNG_MMAP_FLAGS_TO_CTF(MAP_POPULATE))
80 ctf_enum_value("MAP_STACK", LTTNG_MMAP_FLAGS_TO_CTF(MAP_STACK))
1203baa4 81
5f4c791e 82#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0))
3cf55950 83 ctf_enum_value("MAP_SYNC", LTTNG_MMAP_FLAGS_TO_CTF(MAP_SYNC))
5f4c791e 84#endif /* (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0)) */
1203baa4
FD
85
86#if defined (MAP_UNINITIALIZED) && MAP_UNINITIALIZED != 0
3cf55950 87 ctf_enum_value("MAP_UNINITIALIZED", LTTNG_MMAP_FLAGS_TO_CTF(MAP_UNINITIALIZED))
1203baa4 88#endif /* defined (MAP_UNINITIALIZED) && MAP_UNINITIALIZED != 0 */
3cf55950
FD
89 )
90)
91
92#define LTTNG_MMAP_FLAGS_TYPE \
437d5aa5
MD
93 lttng_kernel_static_event_field("type", \
94 lttng_kernel_static_type_enum(&__enum_lttng_mmap_flags_mapping_type, \
95 lttng_kernel_static_type_integer(4, 1, 0, __BYTE_ORDER, 16)), \
96 false, false, false)
3cf55950
FD
97
98#define LTTNG_MMAP_FLAGS_OPTIONS \
437d5aa5
MD
99 lttng_kernel_static_event_field("options", \
100 lttng_kernel_static_type_enum(&__enum_lttng_mmap_flags_options, \
101 lttng_kernel_static_type_integer(28, 1, 0, __BYTE_ORDER, 16)), \
102 false, false, false)
3cf55950
FD
103
104#if (__BYTE_ORDER == __LITTLE_ENDIAN)
105#define LTTNG_MMAP_FLAGS \
437d5aa5 106lttng_kernel_static_event_field_array( \
3cf55950 107 [0] = LTTNG_MMAP_FLAGS_TYPE, \
437d5aa5
MD
108 [1] = LTTNG_MMAP_FLAGS_OPTIONS, \
109)
3cf55950
FD
110#else
111#define LTTNG_MMAP_FLAGS \
437d5aa5 112lttng_kernel_static_event_field_array( \
3cf55950 113 [0] = LTTNG_MMAP_FLAGS_OPTIONS, \
437d5aa5
MD
114 [1] = LTTNG_MMAP_FLAGS_TYPE, \
115)
3cf55950
FD
116#endif
117
4f65dbd2
MJ
118#endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */
119
769ad370
MD
120#define OVERRIDE_32_mmap
121#define OVERRIDE_64_mmap
cb3ef14c 122SC_LTTNG_TRACEPOINT_EVENT(mmap,
769ad370
MD
123 TP_PROTO(sc_exit(unsigned long ret,)
124 unsigned long addr, unsigned long len,
125 unsigned long prot, unsigned long flags,
126 unsigned long fd, unsigned long off),
e17f92ba 127 TP_ARGS(sc_exit(ret,) addr, len, prot, flags, fd, off),
769ad370 128 TP_FIELDS(sc_exit(ctf_integer_hex(unsigned long, ret, ret))
57ede728
MD
129 sc_in(ctf_integer_hex(unsigned long, addr, addr))
130 sc_in(ctf_integer(size_t, len, len))
4f65dbd2
MJ
131#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
132 /*
133 * Use a custom field here so that tracer writes a single
134 * integer and the work of splitting it up in two fields is
135 * left to the trace reader.
136 */
3cf55950
FD
137 sc_in(ctf_enum(lttng_mmap_protection, int, prot, prot))
138 sc_in(
139 ctf_custom_field(
140 ctf_custom_type(
437d5aa5 141 lttng_kernel_static_type_struct(2, LTTNG_MMAP_FLAGS, lttng_alignof(uint32_t) * CHAR_BIT)
3cf55950
FD
142 ),
143 flags,
144 ctf_custom_code(
145 ctf_integer_type(uint32_t, flags)
146 )
147 )
148 )
4f65dbd2
MJ
149#else
150 sc_in(ctf_integer(int, prot, prot))
151 sc_in(ctf_integer(int, flags, flags))
152#endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */
57ede728
MD
153 sc_in(ctf_integer(int, fd, fd))
154 sc_in(ctf_integer(off_t, offset, off))
155 )
7e42c4ec
MD
156)
157
c450bc46 158#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
c1c07d68
GB
159/*
160 * Enumeration of the open flags, as described in the 'open'
161 * system call man page.
162 */
163SC_LTTNG_TRACEPOINT_ENUM(lttng_fcntl_cmd_flags,
164 TP_ENUM_VALUES(
165 ctf_enum_value("F_DUPFD", F_DUPFD)
166 ctf_enum_value("F_GETFD", F_GETFD)
167 ctf_enum_value("F_SETFD", F_SETFD)
168 ctf_enum_value("F_GETFL", F_GETFL)
169 ctf_enum_value("F_SETFL", F_SETFL)
170 ctf_enum_value("F_GETLK", F_GETLK)
171 ctf_enum_value("F_SETLK", F_SETLK)
172 ctf_enum_value("F_SETLKW", F_SETLKW)
173 ctf_enum_value("F_SETOWN", F_SETOWN)
174 ctf_enum_value("F_GETOWN", F_GETOWN)
175 ctf_enum_value("F_SETSIG", F_SETSIG)
176 ctf_enum_value("F_GETSIG", F_GETSIG)
f25545b1 177#if !defined(CONFIG_64BIT) || defined(CONFIG_COMPAT)
c1c07d68
GB
178 ctf_enum_value("F_GETLK64", F_GETLK64)
179 ctf_enum_value("F_SETLK64", F_SETLK64)
180 ctf_enum_value("F_SETLKW64", F_SETLKW64)
f25545b1 181#endif /* #if !defined(CONFIG_64BIT) || defined(CONFIG_COMPAT) */
c1c07d68
GB
182 ctf_enum_value("F_SETOWN_EX", F_SETOWN_EX)
183 ctf_enum_value("F_GETOWN_EX", F_GETOWN_EX)
5f4c791e 184#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,6,0))
c1c07d68 185 ctf_enum_value("F_GETOWNER_UIDS", F_GETOWNER_UIDS)
5f4c791e
MJ
186#endif /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,6,0)) */
187#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,15,0))
c1c07d68
GB
188 ctf_enum_value("F_OFD_GETLK", F_OFD_GETLK)
189 ctf_enum_value("F_OFD_SETLK", F_OFD_SETLK)
190 ctf_enum_value("F_OFD_SETLKW", F_OFD_SETLKW)
5f4c791e 191#endif /* (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,15,0)) */
c1c07d68
GB
192 ctf_enum_value("F_SETLEASE", F_SETLEASE)
193 ctf_enum_value("F_GETLEASE", F_GETLEASE)
194 ctf_enum_value("F_NOTIFY", F_NOTIFY)
195 ctf_enum_value("F_CANCELLK", F_CANCELLK)
196 ctf_enum_value("F_DUPFD_CLOEXEC", F_DUPFD_CLOEXEC)
197 ctf_enum_value("F_SETPIPE_SZ", F_SETPIPE_SZ)
198 ctf_enum_value("F_GETPIPE_SZ", F_GETPIPE_SZ)
5f4c791e 199#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,17,0))
c1c07d68
GB
200 ctf_enum_value("F_ADD_SEALS", F_ADD_SEALS)
201 ctf_enum_value("F_GET_SEALS", F_GET_SEALS)
5f4c791e
MJ
202#endif /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,17,0)) */
203#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,14,0))
c1c07d68
GB
204 ctf_enum_value("F_GET_RW_HINT", F_GET_RW_HINT)
205 ctf_enum_value("F_SET_RW_HINT", F_SET_RW_HINT)
206 ctf_enum_value("F_GET_FILE_RW_HINT", F_GET_FILE_RW_HINT)
207 ctf_enum_value("F_SET_FILE_RW_HINT", F_SET_FILE_RW_HINT)
5f4c791e 208#endif /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,14,0)) */
c1c07d68
GB
209 )
210)
211
212#define OVERRIDE_32_fcntl
213#define OVERRIDE_64_fcntl
214SC_LTTNG_TRACEPOINT_EVENT(fcntl,
215 TP_PROTO(sc_exit(long ret,) unsigned int fd, unsigned int cmd, unsigned long arg),
216 TP_ARGS(sc_exit(ret,) fd, cmd, arg),
217 TP_FIELDS(
218 sc_exit(ctf_integer(long, ret, ret))
219 sc_in(ctf_integer(unsigned int, fd, fd))
220 sc_in(ctf_enum(lttng_fcntl_cmd_flags, unsigned int, cmd, cmd))
221 sc_inout(ctf_integer(unsigned long, arg, arg)))
222)
c450bc46 223#endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */
c1c07d68 224
7e42c4ec 225#endif /* CREATE_SYSCALL_TABLE */
This page took 0.06802 seconds and 4 git commands to generate.