Compile fixes for RHEL 9.3 kernels
[lttng-modules.git] / include / instrumentation / events / kmem.h
CommitLineData
b7cdc182 1/* SPDX-License-Identifier: GPL-2.0-only */
b283666f
PW
2#undef TRACE_SYSTEM
3#define TRACE_SYSTEM kmem
4
3bc29f0a
MD
5#if !defined(LTTNG_TRACE_KMEM_H) || defined(TRACE_HEADER_MULTI_READ)
6#define LTTNG_TRACE_KMEM_H
b283666f 7
3b4aafcb 8#include <lttng/tracepoint-event.h>
7c68b363 9#include <linux/types.h>
5f4c791e 10#include <lttng/kernel-version.h>
7c68b363 11
c02d67bc 12#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,0,0))
c02d67bc 13#include <../../mm/slab.h>
abbffdb8
MJ
14#endif
15
16#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,1,0))
17LTTNG_TRACEPOINT_EVENT_MAP(kmalloc,
18
19 kmem_kmalloc,
20
21 TP_PROTO(unsigned long call_site,
22 const void *ptr,
23 size_t bytes_req,
24 size_t bytes_alloc,
25 gfp_t gfp_flags,
26 int node),
27
28 TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node),
29
30 TP_FIELDS(
31 ctf_integer_hex(unsigned long, call_site, call_site)
32 ctf_integer_hex(const void *, ptr, ptr)
33 ctf_integer(size_t, bytes_req, bytes_req)
34 ctf_integer(size_t, bytes_alloc, bytes_alloc)
35 ctf_integer(gfp_t, gfp_flags, gfp_flags)
36 ctf_integer(int, node, node)
37 ctf_integer(bool, accounted, (IS_ENABLED(CONFIG_MEMCG_KMEM) &&
38 (gfp_flags & __GFP_ACCOUNT) ? true : false))
39 )
40)
41
42LTTNG_TRACEPOINT_EVENT(kmem_cache_alloc,
43
44 TP_PROTO(unsigned long call_site,
45 const void *ptr,
46 struct kmem_cache *s,
47 gfp_t gfp_flags,
48 int node),
49
50 TP_ARGS(call_site, ptr, s, gfp_flags, node),
c02d67bc 51
abbffdb8
MJ
52 TP_FIELDS(
53 ctf_integer_hex(unsigned long, call_site, call_site)
54 ctf_integer_hex(const void *, ptr, ptr)
55 ctf_integer(size_t, bytes_req, s->object_size)
56 ctf_integer(size_t, bytes_alloc, s->size)
57 ctf_integer(gfp_t, gfp_flags, gfp_flags)
58 ctf_integer(int, node, node)
59 ctf_integer(bool, accounted, IS_ENABLED(CONFIG_MEMCG_KMEM) ?
60 ((gfp_flags & __GFP_ACCOUNT) ||
61 (s->flags & SLAB_ACCOUNT)) : false)
62 )
63)
a9d49ac6
MH
64#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,0,0) || \
65 LTTNG_RHEL_KERNEL_RANGE(5,14,0,163,0,0, 5,15,0,0,0,0))
66
c02d67bc
MJ
67LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc,
68
69 TP_PROTO(unsigned long call_site,
70 const void *ptr,
71 struct kmem_cache *s,
72 size_t bytes_req,
73 size_t bytes_alloc,
74 gfp_t gfp_flags),
75
76 TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags),
77
78 TP_FIELDS(
79 ctf_integer_hex(unsigned long, call_site, call_site)
80 ctf_integer_hex(const void *, ptr, ptr)
81 ctf_integer(size_t, bytes_req, bytes_req)
82 ctf_integer(size_t, bytes_alloc, bytes_alloc)
83 ctf_integer(gfp_t, gfp_flags, gfp_flags)
84 ctf_integer(bool, accounted, IS_ENABLED(CONFIG_MEMCG_KMEM) ?
85 ((gfp_flags & __GFP_ACCOUNT) ||
86 (s && s->flags & SLAB_ACCOUNT)) : false)
87 )
88)
89
90LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_alloc, kmalloc,
91
92 kmem_kmalloc,
93
94 TP_PROTO(unsigned long call_site, const void *ptr, struct kmem_cache *s,
95 size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
96
97 TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags)
98)
99
100LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc, kmem_cache_alloc,
101
102 TP_PROTO(unsigned long call_site, const void *ptr, struct kmem_cache *s,
103 size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
104
105 TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags)
106)
abbffdb8
MJ
107#else
108LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc,
c02d67bc
MJ
109
110 TP_PROTO(unsigned long call_site,
111 const void *ptr,
c02d67bc
MJ
112 size_t bytes_req,
113 size_t bytes_alloc,
abbffdb8 114 gfp_t gfp_flags),
c02d67bc 115
abbffdb8 116 TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags),
c02d67bc
MJ
117
118 TP_FIELDS(
119 ctf_integer_hex(unsigned long, call_site, call_site)
120 ctf_integer_hex(const void *, ptr, ptr)
121 ctf_integer(size_t, bytes_req, bytes_req)
122 ctf_integer(size_t, bytes_alloc, bytes_alloc)
123 ctf_integer(gfp_t, gfp_flags, gfp_flags)
c02d67bc
MJ
124 )
125)
126
abbffdb8 127LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_alloc, kmalloc,
c02d67bc 128
abbffdb8 129 kmem_kmalloc,
c02d67bc
MJ
130
131 TP_PROTO(unsigned long call_site, const void *ptr,
abbffdb8 132 size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
c02d67bc 133
abbffdb8 134 TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags)
c02d67bc
MJ
135)
136
abbffdb8 137LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc, kmem_cache_alloc,
c02d67bc
MJ
138
139 TP_PROTO(unsigned long call_site, const void *ptr,
abbffdb8 140 size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
c02d67bc 141
abbffdb8 142 TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags)
c02d67bc 143)
abbffdb8
MJ
144#endif
145
a9d49ac6
MH
146#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,0,0) || \
147 LTTNG_RHEL_KERNEL_RANGE(5,14,0,163,0,0, 5,15,0,0,0,0))
148
abbffdb8 149LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc_node,
b283666f
PW
150
151 TP_PROTO(unsigned long call_site,
152 const void *ptr,
abbffdb8 153 struct kmem_cache *s,
b283666f
PW
154 size_t bytes_req,
155 size_t bytes_alloc,
abbffdb8
MJ
156 gfp_t gfp_flags,
157 int node),
b283666f 158
abbffdb8 159 TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node),
b283666f 160
f127e61e
MD
161 TP_FIELDS(
162 ctf_integer_hex(unsigned long, call_site, call_site)
163 ctf_integer_hex(const void *, ptr, ptr)
164 ctf_integer(size_t, bytes_req, bytes_req)
165 ctf_integer(size_t, bytes_alloc, bytes_alloc)
166 ctf_integer(gfp_t, gfp_flags, gfp_flags)
abbffdb8
MJ
167 ctf_integer(int, node, node)
168 ctf_integer(bool, accounted, IS_ENABLED(CONFIG_MEMCG_KMEM) ?
169 ((gfp_flags & __GFP_ACCOUNT) ||
170 (s && s->flags & SLAB_ACCOUNT)) : false)
f127e61e 171 )
b283666f
PW
172)
173
abbffdb8 174LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_alloc_node, kmalloc_node,
9cf29d3e 175
abbffdb8 176 kmem_kmalloc_node,
b283666f
PW
177
178 TP_PROTO(unsigned long call_site, const void *ptr,
abbffdb8
MJ
179 struct kmem_cache *s, size_t bytes_req, size_t bytes_alloc,
180 gfp_t gfp_flags, int node),
b283666f 181
abbffdb8 182 TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node)
b283666f
PW
183)
184
abbffdb8 185LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc_node, kmem_cache_alloc_node,
b283666f
PW
186
187 TP_PROTO(unsigned long call_site, const void *ptr,
abbffdb8
MJ
188 struct kmem_cache *s, size_t bytes_req, size_t bytes_alloc,
189 gfp_t gfp_flags, int node),
b283666f 190
abbffdb8 191 TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node)
b283666f 192)
abbffdb8 193#else
3bc29f0a 194LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc_node,
b283666f
PW
195
196 TP_PROTO(unsigned long call_site,
197 const void *ptr,
198 size_t bytes_req,
199 size_t bytes_alloc,
200 gfp_t gfp_flags,
201 int node),
202
203 TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node),
204
f127e61e
MD
205 TP_FIELDS(
206 ctf_integer_hex(unsigned long, call_site, call_site)
207 ctf_integer_hex(const void *, ptr, ptr)
208 ctf_integer(size_t, bytes_req, bytes_req)
209 ctf_integer(size_t, bytes_alloc, bytes_alloc)
210 ctf_integer(gfp_t, gfp_flags, gfp_flags)
211 ctf_integer(int, node, node)
212 )
b283666f
PW
213)
214
3bc29f0a 215LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_alloc_node, kmalloc_node,
9cf29d3e
MD
216
217 kmem_kmalloc_node,
b283666f
PW
218
219 TP_PROTO(unsigned long call_site, const void *ptr,
220 size_t bytes_req, size_t bytes_alloc,
221 gfp_t gfp_flags, int node),
222
223 TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node)
224)
225
3bc29f0a 226LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc_node, kmem_cache_alloc_node,
b283666f
PW
227
228 TP_PROTO(unsigned long call_site, const void *ptr,
229 size_t bytes_req, size_t bytes_alloc,
230 gfp_t gfp_flags, int node),
231
232 TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node)
233)
c02d67bc 234#endif
b283666f 235
89d91715
MJ
236#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,12,0) || \
237 LTTNG_RHEL_KERNEL_RANGE(4,18,0,372,0,0, 4,19,0,0,0,0))
e7c9f1a9
HZ
238LTTNG_TRACEPOINT_EVENT_MAP(kfree,
239
240 kmem_kfree,
a8bc8ae5
MJ
241
242 TP_PROTO(unsigned long call_site, const void *ptr),
243
244 TP_ARGS(call_site, ptr),
245
246 TP_FIELDS(
247 ctf_integer_hex(unsigned long, call_site, call_site)
248 ctf_integer_hex(const void *, ptr, ptr)
249 )
250)
a8bc8ae5 251#else
3bc29f0a 252LTTNG_TRACEPOINT_EVENT_CLASS(kmem_free,
b283666f
PW
253
254 TP_PROTO(unsigned long call_site, const void *ptr),
255
256 TP_ARGS(call_site, ptr),
257
f127e61e
MD
258 TP_FIELDS(
259 ctf_integer_hex(unsigned long, call_site, call_site)
260 ctf_integer_hex(const void *, ptr, ptr)
261 )
b283666f
PW
262)
263
3bc29f0a 264LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_free, kfree,
9cf29d3e
MD
265
266 kmem_kfree,
b283666f
PW
267
268 TP_PROTO(unsigned long call_site, const void *ptr),
269
270 TP_ARGS(call_site, ptr)
271)
272
3bc29f0a 273LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_free, kmem_cache_free,
b283666f
PW
274
275 TP_PROTO(unsigned long call_site, const void *ptr),
276
277 TP_ARGS(call_site, ptr)
278)
a8bc8ae5 279#endif
b283666f 280
abbffdb8
MJ
281#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,1,0))
282LTTNG_TRACEPOINT_EVENT(kmem_cache_free,
283
284 TP_PROTO(unsigned long call_site, const void *ptr, const struct kmem_cache *s),
285
286 TP_ARGS(call_site, ptr, s),
287
288 TP_FIELDS(
289 ctf_integer_hex(unsigned long, call_site, call_site)
290 ctf_integer_hex(const void *, ptr, ptr)
291 ctf_string(name, s->name)
292 )
293)
294#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,12,0))
295LTTNG_TRACEPOINT_EVENT(kmem_cache_free,
296
297 TP_PROTO(unsigned long call_site, const void *ptr, const char *name),
298
299 TP_ARGS(call_site, ptr, name),
300
301 TP_FIELDS(
302 ctf_integer_hex(unsigned long, call_site, call_site)
303 ctf_integer_hex(const void *, ptr, ptr)
304 ctf_string(name, name)
305 )
306)
307#endif
308
9bbf98da 309LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free, kmem_mm_page_free,
b283666f
PW
310
311 TP_PROTO(struct page *page, unsigned int order),
312
313 TP_ARGS(page, order),
314
f127e61e
MD
315 TP_FIELDS(
316 ctf_integer_hex(struct page *, page, page)
d1cf842b 317 ctf_integer(unsigned long, pfn, page_to_pfn(page))
f127e61e
MD
318 ctf_integer(unsigned int, order, order)
319 )
b283666f
PW
320)
321
5f4c791e 322#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0))
071c76b5
MJ
323LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free_batched, kmem_mm_page_free_batched,
324
325 TP_PROTO(struct page *page),
326
327 TP_ARGS(page),
328
329 TP_FIELDS(
330 ctf_integer_hex(struct page *, page, page)
331 ctf_integer(unsigned long, pfn, page_to_pfn(page))
332 )
333)
7c68b363 334#else
6f3ac358 335LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free_batched, kmem_mm_page_free_batched,
b283666f
PW
336
337 TP_PROTO(struct page *page, int cold),
338
339 TP_ARGS(page, cold),
340
f127e61e
MD
341 TP_FIELDS(
342 ctf_integer_hex(struct page *, page, page)
d1cf842b 343 ctf_integer(unsigned long, pfn, page_to_pfn(page))
f127e61e
MD
344 ctf_integer(int, cold, cold)
345 )
b283666f 346)
071c76b5 347#endif
b283666f 348
9bbf98da 349LTTNG_TRACEPOINT_EVENT_MAP(mm_page_alloc, kmem_mm_page_alloc,
b283666f
PW
350
351 TP_PROTO(struct page *page, unsigned int order,
352 gfp_t gfp_flags, int migratetype),
353
354 TP_ARGS(page, order, gfp_flags, migratetype),
355
f127e61e
MD
356 TP_FIELDS(
357 ctf_integer_hex(struct page *, page, page)
d1cf842b
MD
358 ctf_integer(unsigned long, pfn,
359 page ? page_to_pfn(page) : -1UL)
f127e61e
MD
360 ctf_integer(unsigned int, order, order)
361 ctf_integer(gfp_t, gfp_flags, gfp_flags)
362 ctf_integer(int, migratetype, migratetype)
363 )
b283666f
PW
364)
365
a9d49ac6
MH
366#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,19,0) || \
367 LTTNG_RHEL_KERNEL_RANGE(5,14,0,163,0,0, 5,15,0,0,0,0))
368
6229bbaa
MJ
369LTTNG_TRACEPOINT_EVENT_CLASS(kmem_mm_page,
370
371 TP_PROTO(struct page *page, unsigned int order, int migratetype,
372 int percpu_refill),
373
374 TP_ARGS(page, order, migratetype, percpu_refill),
375
376 TP_FIELDS(
377 ctf_integer_hex(struct page *, page, page)
378 ctf_integer(unsigned long, pfn,
379 page ? page_to_pfn(page) : -1UL)
380 ctf_integer(unsigned int, order, order)
381 ctf_integer(int, migratetype, migratetype)
382 ctf_integer(int, percpu_refill, percpu_refill)
383 )
384)
385
386LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_mm_page, mm_page_alloc_zone_locked,
387
388 kmem_mm_page_alloc_zone_locked,
389
390 TP_PROTO(struct page *page, unsigned int order, int migratetype,
391 int percpu_refill),
392
393 TP_ARGS(page, order, migratetype, percpu_refill)
394)
395
396LTTNG_TRACEPOINT_EVENT_MAP(mm_page_pcpu_drain,
397
398 kmem_mm_page_pcpu_drain,
399
400 TP_PROTO(struct page *page, unsigned int order, int migratetype),
401
402 TP_ARGS(page, order, migratetype),
403
404 TP_FIELDS(
405 ctf_integer(unsigned long, pfn,
406 page ? page_to_pfn(page) : -1UL)
407 ctf_integer(unsigned int, order, order)
408 ctf_integer(int, migratetype, migratetype)
409 )
410)
411#else
9bbf98da 412LTTNG_TRACEPOINT_EVENT_CLASS(kmem_mm_page,
b283666f
PW
413
414 TP_PROTO(struct page *page, unsigned int order, int migratetype),
415
416 TP_ARGS(page, order, migratetype),
417
f127e61e
MD
418 TP_FIELDS(
419 ctf_integer_hex(struct page *, page, page)
d1cf842b
MD
420 ctf_integer(unsigned long, pfn,
421 page ? page_to_pfn(page) : -1UL)
f127e61e
MD
422 ctf_integer(unsigned int, order, order)
423 ctf_integer(int, migratetype, migratetype)
424 )
b283666f
PW
425)
426
9bbf98da
MD
427LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_mm_page, mm_page_alloc_zone_locked,
428
429 kmem_mm_page_alloc_zone_locked,
b283666f
PW
430
431 TP_PROTO(struct page *page, unsigned int order, int migratetype),
432
433 TP_ARGS(page, order, migratetype)
434)
435
f127e61e 436LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_mm_page, mm_page_pcpu_drain,
9bbf98da
MD
437
438 kmem_mm_page_pcpu_drain,
b283666f
PW
439
440 TP_PROTO(struct page *page, unsigned int order, int migratetype),
441
f127e61e 442 TP_ARGS(page, order, migratetype)
b283666f 443)
6229bbaa 444#endif
b283666f 445
7c9c39d2
MD
446LTTNG_TRACEPOINT_EVENT_MAP(mm_page_alloc_extfrag,
447
448 kmem_mm_page_alloc_extfrag,
2cf0c2ca
MD
449
450 TP_PROTO(struct page *page,
451 int alloc_order, int fallback_order,
452 int alloc_migratetype, int fallback_migratetype),
453
454 TP_ARGS(page,
455 alloc_order, fallback_order,
456 alloc_migratetype, fallback_migratetype),
457
c94b360d
MD
458 TP_FIELDS(
459 ctf_integer_hex(struct page *, page, page)
d1cf842b 460 ctf_integer(unsigned long, pfn, page_to_pfn(page))
c94b360d
MD
461 ctf_integer(int, alloc_order, alloc_order)
462 ctf_integer(int, fallback_order, fallback_order)
463 ctf_integer(int, alloc_migratetype, alloc_migratetype)
464 ctf_integer(int, fallback_migratetype, fallback_migratetype)
465 ctf_integer(int, change_ownership,
2cf0c2ca 466 (alloc_migratetype == get_pageblock_migratetype(page)))
c94b360d 467 )
2cf0c2ca
MD
468)
469
3bc29f0a 470#endif /* LTTNG_TRACE_KMEM_H */
b283666f
PW
471
472/* This part must be outside protection */
3b4aafcb 473#include <lttng/define_trace.h>
This page took 0.099791 seconds and 4 git commands to generate.