irq/tracing: Export enums in tracepoints to user space
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>
Fri, 27 Mar 2015 20:31:44 +0000 (16:31 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Wed, 8 Apr 2015 13:40:00 +0000 (09:40 -0400)
The enums used by the softirq mapping is what is shown in the output
of the __print_symbolic() and not their values, that are needed
to map them to their strings. Export them to userspace with the
TRACE_DEFINE_ENUM() macro so that user space tools can map the enums
with their values.

Link: http://lkml.kernel.org/r/20150403013802.220157513@goodmis.org
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Tested-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
include/trace/events/irq.h

index 3608bebd3d9c5e58a0349c6240a8670bd3d8bbfb..ff8f6c091a1504e3d18937244a07b6432c880fb2 100644 (file)
@@ -9,19 +9,34 @@
 struct irqaction;
 struct softirq_action;
 
-#define softirq_name(sirq) { sirq##_SOFTIRQ, #sirq }
+#define SOFTIRQ_NAME_LIST                              \
+                        softirq_name(HI)               \
+                        softirq_name(TIMER)            \
+                        softirq_name(NET_TX)           \
+                        softirq_name(NET_RX)           \
+                        softirq_name(BLOCK)            \
+                        softirq_name(BLOCK_IOPOLL)     \
+                        softirq_name(TASKLET)          \
+                        softirq_name(SCHED)            \
+                        softirq_name(HRTIMER)          \
+                        softirq_name_end(RCU)
+
+#undef softirq_name
+#undef softirq_name_end
+
+#define softirq_name(sirq) TRACE_DEFINE_ENUM(sirq##_SOFTIRQ);
+#define softirq_name_end(sirq)  TRACE_DEFINE_ENUM(sirq##_SOFTIRQ);
+
+SOFTIRQ_NAME_LIST
+
+#undef softirq_name
+#undef softirq_name_end
+
+#define softirq_name(sirq) { sirq##_SOFTIRQ, #sirq },
+#define softirq_name_end(sirq) { sirq##_SOFTIRQ, #sirq }
+
 #define show_softirq_name(val)                         \
-       __print_symbolic(val,                           \
-                        softirq_name(HI),              \
-                        softirq_name(TIMER),           \
-                        softirq_name(NET_TX),          \
-                        softirq_name(NET_RX),          \
-                        softirq_name(BLOCK),           \
-                        softirq_name(BLOCK_IOPOLL),    \
-                        softirq_name(TASKLET),         \
-                        softirq_name(SCHED),           \
-                        softirq_name(HRTIMER),         \
-                        softirq_name(RCU))
+       __print_symbolic(val, SOFTIRQ_NAME_LIST)
 
 /**
  * irq_handler_entry - called immediately before the irq action handler