Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62ba180e authored by Steven Rostedt's avatar Steven Rostedt Committed by Frederic Weisbecker
Browse files

tracing: add flag output for kmem events



This patch changes the output for gfp_flags from being a simple hex value
to the actual names.

  gfp_flags=GFP_ATOMIC  instead of gfp_flags=00000020

And even

  gfp_flags=GFP_KERNEL instead of gfp_flags=000000d0

(Thanks to Frederic Weisbecker for pointing out that the first version
 had a bad order of GFP masks)

[ Impact: more human readable output from tracer ]

Acked-by: default avatarEduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
parent 937cdb9d
Loading
Loading
Loading
Loading
+45 −8
Original line number Original line Diff line number Diff line
@@ -7,6 +7,43 @@
#undef TRACE_SYSTEM
#undef TRACE_SYSTEM
#define TRACE_SYSTEM kmem
#define TRACE_SYSTEM kmem


/*
 * The order of these masks is important. Matching masks will be seen
 * first and the left over flags will end up showing by themselves.
 *
 * For example, if we have GFP_KERNEL before GFP_USER we wil get:
 *
 *  GFP_KERNEL|GFP_HARDWALL
 *
 * Thus most bits set go first.
 */
#define show_gfp_flags(flags)						\
	(flags) ? __print_flags(flags, "|",				\
	{(unsigned long)GFP_HIGHUSER_MOVABLE,	"GFP_HIGHUSER_MOVABLE"}, \
	{(unsigned long)GFP_HIGHUSER,		"GFP_HIGHUSER"},	\
	{(unsigned long)GFP_USER,		"GFP_USER"},		\
	{(unsigned long)GFP_TEMPORARY,		"GFP_TEMPORARY"},	\
	{(unsigned long)GFP_KERNEL,		"GFP_KERNEL"},		\
	{(unsigned long)GFP_NOFS,		"GFP_NOFS"},		\
	{(unsigned long)GFP_ATOMIC,		"GFP_ATOMIC"},		\
	{(unsigned long)GFP_NOIO,		"GFP_NOIO"},		\
	{(unsigned long)__GFP_HIGH,		"GFP_HIGH"},		\
	{(unsigned long)__GFP_WAIT,		"GFP_WAIT"},		\
	{(unsigned long)__GFP_IO,		"GFP_IO"},		\
	{(unsigned long)__GFP_COLD,		"GFP_COLD"},		\
	{(unsigned long)__GFP_NOWARN,		"GFP_NOWARN"},		\
	{(unsigned long)__GFP_REPEAT,		"GFP_REPEAT"},		\
	{(unsigned long)__GFP_NOFAIL,		"GFP_NOFAIL"},		\
	{(unsigned long)__GFP_NORETRY,		"GFP_NORETRY"},		\
	{(unsigned long)__GFP_COMP,		"GFP_COMP"},		\
	{(unsigned long)__GFP_ZERO,		"GFP_ZERO"},		\
	{(unsigned long)__GFP_NOMEMALLOC,	"GFP_NOMEMALLOC"},	\
	{(unsigned long)__GFP_HARDWALL,		"GFP_HARDWALL"},	\
	{(unsigned long)__GFP_THISNODE,		"GFP_THISNODE"},	\
	{(unsigned long)__GFP_RECLAIMABLE,	"GFP_RECLAIMABLE"},	\
	{(unsigned long)__GFP_MOVABLE,		"GFP_MOVABLE"}		\
	) : "GFP_NOWAIT"

TRACE_EVENT(kmalloc,
TRACE_EVENT(kmalloc,


	TP_PROTO(unsigned long call_site,
	TP_PROTO(unsigned long call_site,
@@ -33,12 +70,12 @@ TRACE_EVENT(kmalloc,
		__entry->gfp_flags	= gfp_flags;
		__entry->gfp_flags	= gfp_flags;
	),
	),


	TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%08x",
	TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s",
		__entry->call_site,
		__entry->call_site,
		__entry->ptr,
		__entry->ptr,
		__entry->bytes_req,
		__entry->bytes_req,
		__entry->bytes_alloc,
		__entry->bytes_alloc,
		__entry->gfp_flags)
		show_gfp_flags(__entry->gfp_flags))
);
);


TRACE_EVENT(kmem_cache_alloc,
TRACE_EVENT(kmem_cache_alloc,
@@ -67,12 +104,12 @@ TRACE_EVENT(kmem_cache_alloc,
		__entry->gfp_flags	= gfp_flags;
		__entry->gfp_flags	= gfp_flags;
	),
	),


	TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%08x",
	TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s",
		__entry->call_site,
		__entry->call_site,
		__entry->ptr,
		__entry->ptr,
		__entry->bytes_req,
		__entry->bytes_req,
		__entry->bytes_alloc,
		__entry->bytes_alloc,
		__entry->gfp_flags)
		show_gfp_flags(__entry->gfp_flags))
);
);


TRACE_EVENT(kmalloc_node,
TRACE_EVENT(kmalloc_node,
@@ -104,12 +141,12 @@ TRACE_EVENT(kmalloc_node,
		__entry->node		= node;
		__entry->node		= node;
	),
	),


	TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%08x node=%d",
	TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s node=%d",
		__entry->call_site,
		__entry->call_site,
		__entry->ptr,
		__entry->ptr,
		__entry->bytes_req,
		__entry->bytes_req,
		__entry->bytes_alloc,
		__entry->bytes_alloc,
		__entry->gfp_flags,
		show_gfp_flags(__entry->gfp_flags),
		__entry->node)
		__entry->node)
);
);


@@ -142,12 +179,12 @@ TRACE_EVENT(kmem_cache_alloc_node,
		__entry->node		= node;
		__entry->node		= node;
	),
	),


	TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%08x node=%d",
	TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s node=%d",
		__entry->call_site,
		__entry->call_site,
		__entry->ptr,
		__entry->ptr,
		__entry->bytes_req,
		__entry->bytes_req,
		__entry->bytes_alloc,
		__entry->bytes_alloc,
		__entry->gfp_flags,
		show_gfp_flags(__entry->gfp_flags),
		__entry->node)
		__entry->node)
);
);