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