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