X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Finstrumentation%2Fevents%2Fkmem.h;h=aa9c98d1e9759e4414187a2685ac94aa3878c1c9;hb=b5211887dc5baf316322b67c3c433f2d77cd352a;hp=8c19e9624a2f13502b08a7142e43e8fbf8c35d61;hpb=6229bbaa423832f6b7c7a658ad11e1d4242752ff;p=lttng-modules.git diff --git a/include/instrumentation/events/kmem.h b/include/instrumentation/events/kmem.h index 8c19e962..aa9c98d1 100644 --- a/include/instrumentation/events/kmem.h +++ b/include/instrumentation/events/kmem.h @@ -9,6 +9,100 @@ #include #include +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,0,0)) +#include <../../mm/slab.h> +#endif + +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,1,0)) +LTTNG_TRACEPOINT_EVENT_MAP(kmalloc, + + kmem_kmalloc, + + TP_PROTO(unsigned long call_site, + const void *ptr, + size_t bytes_req, + size_t bytes_alloc, + gfp_t gfp_flags, + int node), + + TP_ARGS(call_site, ptr, 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) ? true : false)) + ) +) + +LTTNG_TRACEPOINT_EVENT(kmem_cache_alloc, + + TP_PROTO(unsigned long call_site, + const void *ptr, + struct kmem_cache *s, + gfp_t gfp_flags, + int node), + + TP_ARGS(call_site, ptr, s, 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, s->object_size) + ctf_integer(size_t, bytes_alloc, s->size) + 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->flags & SLAB_ACCOUNT)) : false) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,0,0)) +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) +) +#else LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc, TP_PROTO(unsigned long call_site, @@ -45,7 +139,54 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc, kmem_cache_alloc, TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags) ) +#endif + +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,0,0)) +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_node, TP_PROTO(unsigned long call_site, @@ -86,8 +227,10 @@ 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)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,12,0) || \ + LTTNG_RHEL_KERNEL_RANGE(4,18,0,372,0,0, 4,19,0,0,0,0)) LTTNG_TRACEPOINT_EVENT_MAP(kfree, kmem_kfree, @@ -101,19 +244,6 @@ LTTNG_TRACEPOINT_EVENT_MAP(kfree, ctf_integer_hex(const void *, ptr, ptr) ) ) - -LTTNG_TRACEPOINT_EVENT(kmem_cache_free, - - TP_PROTO(unsigned long call_site, const void *ptr, const char *name), - - TP_ARGS(call_site, ptr, name), - - TP_FIELDS( - ctf_integer_hex(unsigned long, call_site, call_site) - ctf_integer_hex(const void *, ptr, ptr) - ctf_string(name, name) - ) -) #else LTTNG_TRACEPOINT_EVENT_CLASS(kmem_free, @@ -144,6 +274,34 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_free, kmem_cache_free, ) #endif +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,1,0)) +LTTNG_TRACEPOINT_EVENT(kmem_cache_free, + + TP_PROTO(unsigned long call_site, const void *ptr, const struct kmem_cache *s), + + TP_ARGS(call_site, ptr, s), + + TP_FIELDS( + ctf_integer_hex(unsigned long, call_site, call_site) + ctf_integer_hex(const void *, ptr, ptr) + ctf_string(name, s->name) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,12,0)) +LTTNG_TRACEPOINT_EVENT(kmem_cache_free, + + TP_PROTO(unsigned long call_site, const void *ptr, const char *name), + + TP_ARGS(call_site, ptr, name), + + TP_FIELDS( + ctf_integer_hex(unsigned long, call_site, call_site) + ctf_integer_hex(const void *, ptr, ptr) + ctf_string(name, name) + ) +) +#endif + #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,3,0)) LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free, kmem_mm_page_free, #else