fix: mm/tracing: add 'accounted' entry into output of allocation tracepoints (v6.0)
[lttng-modules.git] / include / instrumentation / events / kmem.h
index 8c19e9624a2f13502b08a7142e43e8fbf8c35d61..219533a1ed12e74e9441137044b3dda3a2181239 100644 (file)
@@ -9,6 +9,96 @@
 #include <linux/types.h>
 #include <lttng/kernel-version.h>
 
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,0,0))
+
+#include <../../mm/slab.h>
+
+LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc,
+
+       TP_PROTO(unsigned long call_site,
+                const void *ptr,
+                struct kmem_cache *s,
+                size_t bytes_req,
+                size_t bytes_alloc,
+                gfp_t gfp_flags),
+
+       TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags),
+
+       TP_FIELDS(
+               ctf_integer_hex(unsigned long, call_site, call_site)
+               ctf_integer_hex(const void *, ptr, ptr)
+               ctf_integer(size_t, bytes_req, bytes_req)
+               ctf_integer(size_t, bytes_alloc, bytes_alloc)
+               ctf_integer(gfp_t, gfp_flags, gfp_flags)
+               ctf_integer(bool, accounted, IS_ENABLED(CONFIG_MEMCG_KMEM) ?
+                       ((gfp_flags & __GFP_ACCOUNT) ||
+                       (s && s->flags & SLAB_ACCOUNT)) : false)
+       )
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_alloc, kmalloc,
+
+       kmem_kmalloc,
+
+       TP_PROTO(unsigned long call_site, const void *ptr, struct kmem_cache *s,
+                size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
+
+       TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc, kmem_cache_alloc,
+
+       TP_PROTO(unsigned long call_site, const void *ptr, struct kmem_cache *s,
+                size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
+
+       TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags)
+)
+
+LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc_node,
+
+       TP_PROTO(unsigned long call_site,
+                const void *ptr,
+                struct kmem_cache *s,
+                size_t bytes_req,
+                size_t bytes_alloc,
+                gfp_t gfp_flags,
+                int node),
+
+       TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node),
+
+       TP_FIELDS(
+               ctf_integer_hex(unsigned long, call_site, call_site)
+               ctf_integer_hex(const void *, ptr, ptr)
+               ctf_integer(size_t, bytes_req, bytes_req)
+               ctf_integer(size_t, bytes_alloc, bytes_alloc)
+               ctf_integer(gfp_t, gfp_flags, gfp_flags)
+               ctf_integer(int, node, node)
+               ctf_integer(bool, accounted, IS_ENABLED(CONFIG_MEMCG_KMEM) ?
+                       ((gfp_flags & __GFP_ACCOUNT) ||
+                       (s && s->flags & SLAB_ACCOUNT)) : false)
+       )
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_alloc_node, kmalloc_node,
+
+       kmem_kmalloc_node,
+
+       TP_PROTO(unsigned long call_site, const void *ptr,
+                struct kmem_cache *s, size_t bytes_req, size_t bytes_alloc,
+                gfp_t gfp_flags, int node),
+
+       TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc_node, kmem_cache_alloc_node,
+
+       TP_PROTO(unsigned long call_site, const void *ptr,
+                struct kmem_cache *s, size_t bytes_req, size_t bytes_alloc,
+                gfp_t gfp_flags, int node),
+
+       TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node)
+)
+#else
 LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc,
 
        TP_PROTO(unsigned long call_site,
@@ -86,6 +176,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc_node, kmem_cache_alloc_node,
 
        TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node)
 )
+#endif
 
 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,12,0))
 LTTNG_TRACEPOINT_EVENT_MAP(kfree,
This page took 0.024229 seconds and 4 git commands to generate.