Compile fixes for RHEL 9.3 kernels
[lttng-modules.git] / include / instrumentation / events / kmem.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM kmem
4
5 #if !defined(LTTNG_TRACE_KMEM_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define LTTNG_TRACE_KMEM_H
7
8 #include <lttng/tracepoint-event.h>
9 #include <linux/types.h>
10 #include <lttng/kernel-version.h>
11
12 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,0,0))
13 #include <../../mm/slab.h>
14 #endif
15
16 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,1,0))
17 LTTNG_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
42 LTTNG_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),
51
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 )
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
67 LTTNG_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
90 LTTNG_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
100 LTTNG_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 )
107 #else
108 LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc,
109
110 TP_PROTO(unsigned long call_site,
111 const void *ptr,
112 size_t bytes_req,
113 size_t bytes_alloc,
114 gfp_t gfp_flags),
115
116 TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags),
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)
124 )
125 )
126
127 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_alloc, kmalloc,
128
129 kmem_kmalloc,
130
131 TP_PROTO(unsigned long call_site, const void *ptr,
132 size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
133
134 TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags)
135 )
136
137 LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc, kmem_cache_alloc,
138
139 TP_PROTO(unsigned long call_site, const void *ptr,
140 size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
141
142 TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags)
143 )
144 #endif
145
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
149 LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc_node,
150
151 TP_PROTO(unsigned long call_site,
152 const void *ptr,
153 struct kmem_cache *s,
154 size_t bytes_req,
155 size_t bytes_alloc,
156 gfp_t gfp_flags,
157 int node),
158
159 TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node),
160
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)
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)
171 )
172 )
173
174 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_alloc_node, kmalloc_node,
175
176 kmem_kmalloc_node,
177
178 TP_PROTO(unsigned long call_site, const void *ptr,
179 struct kmem_cache *s, size_t bytes_req, size_t bytes_alloc,
180 gfp_t gfp_flags, int node),
181
182 TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node)
183 )
184
185 LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc_node, kmem_cache_alloc_node,
186
187 TP_PROTO(unsigned long call_site, const void *ptr,
188 struct kmem_cache *s, size_t bytes_req, size_t bytes_alloc,
189 gfp_t gfp_flags, int node),
190
191 TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node)
192 )
193 #else
194 LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc_node,
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
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 )
213 )
214
215 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_alloc_node, kmalloc_node,
216
217 kmem_kmalloc_node,
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
226 LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc_node, kmem_cache_alloc_node,
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 )
234 #endif
235
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))
238 LTTNG_TRACEPOINT_EVENT_MAP(kfree,
239
240 kmem_kfree,
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 )
251 #else
252 LTTNG_TRACEPOINT_EVENT_CLASS(kmem_free,
253
254 TP_PROTO(unsigned long call_site, const void *ptr),
255
256 TP_ARGS(call_site, ptr),
257
258 TP_FIELDS(
259 ctf_integer_hex(unsigned long, call_site, call_site)
260 ctf_integer_hex(const void *, ptr, ptr)
261 )
262 )
263
264 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_free, kfree,
265
266 kmem_kfree,
267
268 TP_PROTO(unsigned long call_site, const void *ptr),
269
270 TP_ARGS(call_site, ptr)
271 )
272
273 LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_free, kmem_cache_free,
274
275 TP_PROTO(unsigned long call_site, const void *ptr),
276
277 TP_ARGS(call_site, ptr)
278 )
279 #endif
280
281 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,1,0))
282 LTTNG_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))
295 LTTNG_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
309 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,3,0))
310 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free, kmem_mm_page_free,
311 #else
312 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free_direct, kmem_mm_page_free_direct,
313 #endif
314
315 TP_PROTO(struct page *page, unsigned int order),
316
317 TP_ARGS(page, order),
318
319 TP_FIELDS(
320 ctf_integer_hex(struct page *, page, page)
321 ctf_integer(unsigned long, pfn, page_to_pfn(page))
322 ctf_integer(unsigned int, order, order)
323 )
324 )
325
326 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0))
327 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free_batched, kmem_mm_page_free_batched,
328
329 TP_PROTO(struct page *page),
330
331 TP_ARGS(page),
332
333 TP_FIELDS(
334 ctf_integer_hex(struct page *, page, page)
335 ctf_integer(unsigned long, pfn, page_to_pfn(page))
336 )
337 )
338 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,3,0))
339 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free_batched, kmem_mm_page_free_batched,
340
341 TP_PROTO(struct page *page, int cold),
342
343 TP_ARGS(page, cold),
344
345 TP_FIELDS(
346 ctf_integer_hex(struct page *, page, page)
347 ctf_integer(unsigned long, pfn, page_to_pfn(page))
348 ctf_integer(int, cold, cold)
349 )
350 )
351 #else
352 LTTNG_TRACEPOINT_EVENT_MAP(mm_pagevec_free, kmem_pagevec_free,
353
354 TP_PROTO(struct page *page, int cold),
355
356 TP_ARGS(page, cold),
357
358 TP_FIELDS(
359 ctf_integer_hex(struct page *, page, page)
360 ctf_integer(unsigned long, pfn, page_to_pfn(page))
361 ctf_integer(int, cold, cold)
362 )
363 )
364 #endif
365
366 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_alloc, kmem_mm_page_alloc,
367
368 TP_PROTO(struct page *page, unsigned int order,
369 gfp_t gfp_flags, int migratetype),
370
371 TP_ARGS(page, order, gfp_flags, migratetype),
372
373 TP_FIELDS(
374 ctf_integer_hex(struct page *, page, page)
375 ctf_integer(unsigned long, pfn,
376 page ? page_to_pfn(page) : -1UL)
377 ctf_integer(unsigned int, order, order)
378 ctf_integer(gfp_t, gfp_flags, gfp_flags)
379 ctf_integer(int, migratetype, migratetype)
380 )
381 )
382
383 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,19,0) || \
384 LTTNG_RHEL_KERNEL_RANGE(5,14,0,163,0,0, 5,15,0,0,0,0))
385
386 LTTNG_TRACEPOINT_EVENT_CLASS(kmem_mm_page,
387
388 TP_PROTO(struct page *page, unsigned int order, int migratetype,
389 int percpu_refill),
390
391 TP_ARGS(page, order, migratetype, percpu_refill),
392
393 TP_FIELDS(
394 ctf_integer_hex(struct page *, page, page)
395 ctf_integer(unsigned long, pfn,
396 page ? page_to_pfn(page) : -1UL)
397 ctf_integer(unsigned int, order, order)
398 ctf_integer(int, migratetype, migratetype)
399 ctf_integer(int, percpu_refill, percpu_refill)
400 )
401 )
402
403 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_mm_page, mm_page_alloc_zone_locked,
404
405 kmem_mm_page_alloc_zone_locked,
406
407 TP_PROTO(struct page *page, unsigned int order, int migratetype,
408 int percpu_refill),
409
410 TP_ARGS(page, order, migratetype, percpu_refill)
411 )
412
413 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_pcpu_drain,
414
415 kmem_mm_page_pcpu_drain,
416
417 TP_PROTO(struct page *page, unsigned int order, int migratetype),
418
419 TP_ARGS(page, order, migratetype),
420
421 TP_FIELDS(
422 ctf_integer(unsigned long, pfn,
423 page ? page_to_pfn(page) : -1UL)
424 ctf_integer(unsigned int, order, order)
425 ctf_integer(int, migratetype, migratetype)
426 )
427 )
428 #else
429 LTTNG_TRACEPOINT_EVENT_CLASS(kmem_mm_page,
430
431 TP_PROTO(struct page *page, unsigned int order, int migratetype),
432
433 TP_ARGS(page, order, migratetype),
434
435 TP_FIELDS(
436 ctf_integer_hex(struct page *, page, page)
437 ctf_integer(unsigned long, pfn,
438 page ? page_to_pfn(page) : -1UL)
439 ctf_integer(unsigned int, order, order)
440 ctf_integer(int, migratetype, migratetype)
441 )
442 )
443
444 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_mm_page, mm_page_alloc_zone_locked,
445
446 kmem_mm_page_alloc_zone_locked,
447
448 TP_PROTO(struct page *page, unsigned int order, int migratetype),
449
450 TP_ARGS(page, order, migratetype)
451 )
452
453 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_mm_page, mm_page_pcpu_drain,
454
455 kmem_mm_page_pcpu_drain,
456
457 TP_PROTO(struct page *page, unsigned int order, int migratetype),
458
459 TP_ARGS(page, order, migratetype)
460 )
461 #endif
462
463 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,19,2) \
464 || LTTNG_KERNEL_RANGE(3,14,36, 3,15,0) \
465 || LTTNG_KERNEL_RANGE(3,16,35, 3,17,0) \
466 || LTTNG_KERNEL_RANGE(3,18,10, 3,19,0) \
467 || LTTNG_DEBIAN_KERNEL_RANGE(3,16,7,9,0,0, 3,17,0,0,0,0) \
468 || LTTNG_UBUNTU_KERNEL_RANGE(3,13,11,50, 3,14,0,0) \
469 || LTTNG_UBUNTU_KERNEL_RANGE(3,16,7,34, 3,17,0,0))
470
471 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_alloc_extfrag,
472
473 kmem_mm_page_alloc_extfrag,
474
475 TP_PROTO(struct page *page,
476 int alloc_order, int fallback_order,
477 int alloc_migratetype, int fallback_migratetype),
478
479 TP_ARGS(page,
480 alloc_order, fallback_order,
481 alloc_migratetype, fallback_migratetype),
482
483 TP_FIELDS(
484 ctf_integer_hex(struct page *, page, page)
485 ctf_integer(unsigned long, pfn, page_to_pfn(page))
486 ctf_integer(int, alloc_order, alloc_order)
487 ctf_integer(int, fallback_order, fallback_order)
488 ctf_integer(int, alloc_migratetype, alloc_migratetype)
489 ctf_integer(int, fallback_migratetype, fallback_migratetype)
490 ctf_integer(int, change_ownership,
491 (alloc_migratetype == get_pageblock_migratetype(page)))
492 )
493 )
494
495 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,12,30))
496
497 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_alloc_extfrag,
498
499 kmem_mm_page_alloc_extfrag,
500
501 TP_PROTO(struct page *page,
502 int alloc_order, int fallback_order,
503 int alloc_migratetype, int fallback_migratetype, int new_migratetype),
504
505 TP_ARGS(page,
506 alloc_order, fallback_order,
507 alloc_migratetype, fallback_migratetype, new_migratetype),
508
509 TP_FIELDS(
510 ctf_integer_hex(struct page *, page, page)
511 ctf_integer(unsigned long, pfn, page_to_pfn(page))
512 ctf_integer(int, alloc_order, alloc_order)
513 ctf_integer(int, fallback_order, fallback_order)
514 ctf_integer(int, alloc_migratetype, alloc_migratetype)
515 ctf_integer(int, fallback_migratetype, fallback_migratetype)
516 ctf_integer(int, change_ownership, (new_migratetype == alloc_migratetype))
517 )
518 )
519
520 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,12,0))
521
522 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_alloc_extfrag,
523
524 kmem_mm_page_alloc_extfrag,
525
526 TP_PROTO(struct page *page,
527 int alloc_order, int fallback_order,
528 int alloc_migratetype, int fallback_migratetype,
529 int change_ownership),
530
531 TP_ARGS(page,
532 alloc_order, fallback_order,
533 alloc_migratetype, fallback_migratetype,
534 change_ownership),
535
536 TP_FIELDS(
537 ctf_integer_hex(struct page *, page, page)
538 ctf_integer(unsigned long, pfn, page_to_pfn(page))
539 ctf_integer(int, alloc_order, alloc_order)
540 ctf_integer(int, fallback_order, fallback_order)
541 ctf_integer(int, alloc_migratetype, alloc_migratetype)
542 ctf_integer(int, fallback_migratetype, fallback_migratetype)
543 ctf_integer(int, change_ownership, change_ownership)
544 )
545 )
546
547 #else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,12,0)) */
548
549 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_alloc_extfrag,
550
551 kmem_mm_page_alloc_extfrag,
552
553 TP_PROTO(struct page *page,
554 int alloc_order, int fallback_order,
555 int alloc_migratetype, int fallback_migratetype),
556
557 TP_ARGS(page,
558 alloc_order, fallback_order,
559 alloc_migratetype, fallback_migratetype),
560
561 TP_FIELDS(
562 ctf_integer_hex(struct page *, page, page)
563 ctf_integer(unsigned long, pfn, page_to_pfn(page))
564 ctf_integer(int, alloc_order, alloc_order)
565 ctf_integer(int, fallback_order, fallback_order)
566 ctf_integer(int, alloc_migratetype, alloc_migratetype)
567 ctf_integer(int, fallback_migratetype, fallback_migratetype)
568 )
569 )
570
571 #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,12,0)) */
572
573 #endif /* LTTNG_TRACE_KMEM_H */
574
575 /* This part must be outside protection */
576 #include <lttng/define_trace.h>
This page took 0.042604 seconds and 5 git commands to generate.