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 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free, kmem_mm_page_free,
310
311 TP_PROTO(struct page *page, unsigned int order),
312
313 TP_ARGS(page, order),
314
315 TP_FIELDS(
316 ctf_integer_hex(struct page *, page, page)
317 ctf_integer(unsigned long, pfn, page_to_pfn(page))
318 ctf_integer(unsigned int, order, order)
319 )
320 )
321
322 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0))
323 LTTNG_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 )
334 #else
335 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free_batched, kmem_mm_page_free_batched,
336
337 TP_PROTO(struct page *page, int cold),
338
339 TP_ARGS(page, cold),
340
341 TP_FIELDS(
342 ctf_integer_hex(struct page *, page, page)
343 ctf_integer(unsigned long, pfn, page_to_pfn(page))
344 ctf_integer(int, cold, cold)
345 )
346 )
347 #endif
348
349 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_alloc, kmem_mm_page_alloc,
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
356 TP_FIELDS(
357 ctf_integer_hex(struct page *, page, page)
358 ctf_integer(unsigned long, pfn,
359 page ? page_to_pfn(page) : -1UL)
360 ctf_integer(unsigned int, order, order)
361 ctf_integer(gfp_t, gfp_flags, gfp_flags)
362 ctf_integer(int, migratetype, migratetype)
363 )
364 )
365
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
369 LTTNG_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
386 LTTNG_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
396 LTTNG_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
412 LTTNG_TRACEPOINT_EVENT_CLASS(kmem_mm_page,
413
414 TP_PROTO(struct page *page, unsigned int order, int migratetype),
415
416 TP_ARGS(page, order, migratetype),
417
418 TP_FIELDS(
419 ctf_integer_hex(struct page *, page, page)
420 ctf_integer(unsigned long, pfn,
421 page ? page_to_pfn(page) : -1UL)
422 ctf_integer(unsigned int, order, order)
423 ctf_integer(int, migratetype, migratetype)
424 )
425 )
426
427 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_mm_page, mm_page_alloc_zone_locked,
428
429 kmem_mm_page_alloc_zone_locked,
430
431 TP_PROTO(struct page *page, unsigned int order, int migratetype),
432
433 TP_ARGS(page, order, migratetype)
434 )
435
436 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_mm_page, mm_page_pcpu_drain,
437
438 kmem_mm_page_pcpu_drain,
439
440 TP_PROTO(struct page *page, unsigned int order, int migratetype),
441
442 TP_ARGS(page, order, migratetype)
443 )
444 #endif
445
446 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_alloc_extfrag,
447
448 kmem_mm_page_alloc_extfrag,
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
458 TP_FIELDS(
459 ctf_integer_hex(struct page *, page, page)
460 ctf_integer(unsigned long, pfn, page_to_pfn(page))
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,
466 (alloc_migratetype == get_pageblock_migratetype(page)))
467 )
468 )
469
470 #endif /* LTTNG_TRACE_KMEM_H */
471
472 /* This part must be outside protection */
473 #include <lttng/define_trace.h>
This page took 0.038417 seconds and 4 git commands to generate.