From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Namhyung Kim <namhyung@kernel.org>,
Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Subject: [RFC][PATCH 08/17 v2] tracing/samples: Update the trace-event-sample.h with TRACE_DEFINE_ENUM()
Date: Wed, 01 Apr 2015 21:56:56 -0400 [thread overview]
Message-ID: <20150402020941.270385226@goodmis.org> (raw)
In-Reply-To: 20150402015648.249824760@goodmis.org
[-- Attachment #1: 0008-tracing-samples-Update-the-trace-event-sample.h-with.patch --]
[-- Type: text/plain, Size: 3443 bytes --]
From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org>
Document the use of TRACE_DEFINE_ENUM() by adding enums to the
trace-event-sample.h and using this macro to convert them in the format
files.
Also update the comments and sho the use of __print_symbolic() and
__print_flags() as well as adding comments abount __print_array().
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
samples/trace_events/trace-events-sample.h | 64 +++++++++++++++++++++++++++++-
1 file changed, 63 insertions(+), 1 deletion(-)
diff --git a/samples/trace_events/trace-events-sample.h b/samples/trace_events/trace-events-sample.h
index 19405f18cc8a..8965d1bb8811 100644
--- a/samples/trace_events/trace-events-sample.h
+++ b/samples/trace_events/trace-events-sample.h
@@ -198,8 +198,30 @@ static inline int __length_of(const int *list)
;
return i;
}
+
+enum {
+ TRACE_SAMPLE_FOO = 2,
+ TRACE_SAMPLE_BAR = 4,
+ TRACE_SAMPLE_ZOO = 8,
+};
#endif
+/*
+ * If enums are used in the TP_printk(), their names will be shown in
+ * format files and not their values. This can cause problems with user
+ * space programs that parse the format files to know how to translate
+ * the raw binary trace output into human readable text.
+ *
+ * To help out user space programs, any enum that is used in the TP_printk()
+ * should be defined by TRACE_DEFINE_ENUM() macro. All that is needed to
+ * be done is to add this macro with the enum within it in the trace
+ * header file, and it will be converted in the output.
+ */
+
+TRACE_DEFINE_ENUM(TRACE_SAMPLE_FOO);
+TRACE_DEFINE_ENUM(TRACE_SAMPLE_BAR);
+TRACE_DEFINE_ENUM(TRACE_SAMPLE_ZOO);
+
TRACE_EVENT(foo_bar,
TP_PROTO(const char *foo, int bar, const int *lst,
@@ -224,7 +246,47 @@ TRACE_EVENT(foo_bar,
__assign_bitmask(cpus, cpumask_bits(mask), num_possible_cpus());
),
- TP_printk("foo %s %d %s %s (%s)", __entry->foo, __entry->bar,
+ TP_printk("foo %s %d %s %s %s %s (%s)", __entry->foo, __entry->bar,
+
+/*
+ * Notice here the use of some helper functions. This includes:
+ *
+ * __print_symbolic( variable, { value, "string" }, ... ),
+ *
+ * The variable is tested against each value of the { } pair. If
+ * the variable matches one of the values, then it will print the
+ * string in that pair. If non are matched, it returns a string
+ * version of the number (if __entry->bar == 7 then "7" is returned).
+ */
+ __print_symbolic(__entry->bar,
+ { 0, "zero" },
+ { TRACE_SAMPLE_FOO, "TWO" },
+ { TRACE_SAMPLE_BAR, "FOUR" },
+ { TRACE_SAMPLE_ZOO, "EIGHT" },
+ { 10, "TEN" }
+ ),
+
+/*
+ * __print_flags( variable, "delim", { value, "flag" }, ... ),
+ *
+ * This is similar to __print_symbolic, except that it tests the bits
+ * of the value. If ((FLAG & variable) == FLAG) then the string is
+ * printed. If more than one flag matches, then each one that does is
+ * also printed with delim in between them.
+ * If not all bits are accounted for, then the not found bits will be
+ * added in hex format: 0x506 will show BIT2|BIT4|0x500
+ */
+ __print_flags(__entry->bar, "|",
+ { 1, "BIT1" },
+ { 2, "BIT2" },
+ { 4, "BIT3" },
+ { 8, "BIT4" }
+ ),
+/*
+ * __print_array( array, len, element_size )
+ *
+ * This prints out the array that is defined by __array in a nice format.
+ */
__print_array(__get_dynamic_array(list),
__get_dynamic_array_len(list),
sizeof(int)),
--
2.1.4
next prev parent reply other threads:[~2015-04-02 2:14 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-02 1:56 [RFC][PATCH 00/17 v2] tracing: Use TRACE_DEFINE_ENUM() to show enum values Steven Rostedt
2015-04-02 1:56 ` [RFC][PATCH 01/17 v2] tracing: Add TRACE_SYSTEM_VAR to intel-sst Steven Rostedt
[not found] ` <CADRr18NOdH3rqLeK3aJBaQ5ZfQSPDYiLdkDNshzSvUwctR8EEQ@mail.gmail.com>
2015-04-02 13:32 ` Steven Rostedt
2015-04-02 13:33 ` Steven Rostedt
2015-04-02 13:40 ` Mark Brown
2015-04-02 13:49 ` Steven Rostedt
2015-04-02 13:59 ` Mark Brown
2015-04-02 14:03 ` Steven Rostedt
2015-04-02 14:28 ` Mark Brown
2015-04-02 1:56 ` [RFC][PATCH 02/17 v2] tracing: Add TRACE_SYSTEM_VAR to kvm-s390 Steven Rostedt
2015-04-02 9:15 ` Cornelia Huck
2015-04-02 1:56 ` [RFC][PATCH 03/17 v2] tracing: Add TRACE_SYSTEM_VAR to xhci-hcd Steven Rostedt
2015-04-02 1:56 ` [RFC][PATCH 04/17 v2] tracing: Give system name a pointer Steven Rostedt
2015-04-02 1:56 ` [RFC][PATCH 05/17 v2] tracing: Update trace-event-sample with TRACE_SYSTEM_VAR documentation Steven Rostedt
2015-04-02 1:56 ` [RFC][PATCH 06/17 v2] tracing: Add TRACE_DEFINE_ENUM() macro to map enums to their values Steven Rostedt
2015-04-02 7:47 ` Namhyung Kim
2015-04-02 13:27 ` Steven Rostedt
2015-04-02 13:57 ` [RFC][PATCH 06/17 v3] " Steven Rostedt
2015-04-02 16:25 ` Steven Rostedt
2015-04-02 1:56 ` [RFC][PATCH 07/17 v2] tracing: Allow for modules to export their trace enums as well Steven Rostedt
2015-04-02 1:56 ` Steven Rostedt [this message]
2015-04-02 1:56 ` [RFC][PATCH 09/17 v2] tracing: Show the mapped enums in enum_map file Steven Rostedt
2015-04-02 2:58 ` Steven Rostedt
2015-04-02 1:56 ` [RFC][PATCH 10/17 v2] x86/tlb/trace: Export enums in used by tlb_flush tracepoint Steven Rostedt
2015-04-02 1:56 ` [RFC][PATCH 11/17 v2] net/9p/tracing: Export enums in tracepoints to userspace Steven Rostedt
2015-04-02 1:57 ` [RFC][PATCH 12/17 v2] f2fs: Export the enums in the " Steven Rostedt
2015-04-02 1:57 ` [RFC][PATCH 13/17 v2] irq/tracing: Export enums in tracepoints to user space Steven Rostedt
2015-04-02 1:57 ` [RFC][PATCH 14/17 v2] mm: tracing: " Steven Rostedt
2015-04-02 1:57 ` [RFC][PATCH 15/17 v2] SUNRPC: " Steven Rostedt
2015-04-02 1:57 ` [RFC][PATCH 16/17 v2] v4l: Export enums used by " Steven Rostedt
2015-04-02 1:57 ` [RFC][PATCH 17/17 v2] writeback: Export enums used by tracepoint " Steven Rostedt
2015-04-07 0:44 ` [RFC][PATCH 00/17 v2] tracing: Use TRACE_DEFINE_ENUM() to show enum values Masami Hiramatsu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150402020941.270385226@goodmis.org \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox