From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Namhyung Kim <namhyung@kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Subject: Re: [RFC][PATCH 00/17 v2] tracing: Use TRACE_DEFINE_ENUM() to show enum values
Date: Tue, 07 Apr 2015 09:44:58 +0900 [thread overview]
Message-ID: <5523288A.4030505@hitachi.com> (raw)
In-Reply-To: <20150402015648.249824760@goodmis.org>
(2015/04/02 10:56), Steven Rostedt wrote:
> As there are many tracepoints that use __print_symbolic() to translate
> numbers into ASCII strings, and several of these translate enums as
> well, it causes a problem for user space tools that read the tracepoint
> format files and have to translate the binary data to their associated
> strings.
>
> For example, with the tlb_flush tracepoint, we have this in the format
> file:
>
> print fmt: "pages:%ld reason:%s (%d)", REC->pages,
> __print_symbolic(REC->reason,
> { TLB_FLUSH_ON_TASK_SWITCH, "flush on task switch" },
> { TLB_REMOTE_SHOOTDOWN, "remote shootdown" },
> { TLB_LOCAL_SHOOTDOWN, "local shootdown" },
> { TLB_LOCAL_MM_SHOOTDOWN, "local mm shootdown" }), REC->reason
>
> Now, userspace does not know what the value of TLB_REMOTE_SHOOTDOWN is.
> To solve this, a new macro is created as a helper to allow tracepoints
> to export enums they use to userspace. This macro is called,
> TRACE_DEFINE_ENUM(), such that
>
> TRACE_DEFINE_ENUM(TLB_REMOTE_SHOOTDOWN);
>
> will convert the "print fmt"s in the format files to its actual value
> and no longer display the enum name.
>
> On boot up (or module load), the enums saved via TRACE_DEFINE_ENUM()
> will be searched for in the TP_printk()s of the tracepoints. Logic
> knows enough to ignore quoted text.
>
> For debugging, a new file is still added in the tracing directory
> to show what enums were added, their values and the TRACE_SYSTEM that
> added them:
>
> # cat /sys/kernel/debug/tracing/enum_map
> TLB_LOCAL_MM_SHOOTDOWN 3 (tlb)
> TLB_LOCAL_SHOOTDOWN 2 (tlb)
> TLB_REMOTE_SHOOTDOWN 1 (tlb)
> TLB_FLUSH_ON_TASK_SWITCH 0 (tlb)
>
> And the output of the tlb_flush format is now:
>
> print fmt: "pages:%ld reason:%s (%d)", REC->pages,
> __print_symbolic(REC->reason,
> { 0, "flush on task switch" },
> { 1, "remote shootdown" },
> { 2, "local shootdown" },
> { 3, "local mm shootdown" }), REC->reason
>
> And userspace tools can easily parse that without special handling.
Great! :)
Thank you for updating the series :D
Now I'm OK for this series.
>
> Local SHA1: a6862181206543b6493c73690f322868c86de0ea
>
>
> Steven Rostedt (Red Hat) (17):
> tracing: Add TRACE_SYSTEM_VAR to intel-sst
> tracing: Add TRACE_SYSTEM_VAR to kvm-s390
> tracing: Add TRACE_SYSTEM_VAR to xhci-hcd
> tracing: Give system name a pointer
> tracing: Update trace-event-sample with TRACE_SYSTEM_VAR documentation
> tracing: Add TRACE_DEFINE_ENUM() macro to map enums to their values
> tracing: Allow for modules to export their trace enums as well
> tracing/samples: Update the trace-event-sample.h with TRACE_DEFINE_ENUM()
> tracing: Show the mapped enums in enum_map file
> x86/tlb/trace: Export enums in used by tlb_flush tracepoint
> net/9p/tracing: Export enums in tracepoints to userspace
> f2fs: Export the enums in the tracepoints to userspace
> irq/tracing: Export enums in tracepoints to user space
> mm: tracing: Export enums in tracepoints to user space
> SUNRPC: Export enums in tracepoints to user space
> v4l: Export enums used by tracepoints to user space
> writeback: Export enums used by tracepoint to user space
>
> ----
> arch/s390/kvm/trace-s390.h | 7 +
> drivers/usb/host/xhci-trace.h | 7 +
> include/asm-generic/vmlinux.lds.h | 5 +-
> include/linux/ftrace_event.h | 4 +-
> include/linux/module.h | 2 +
> include/linux/tracepoint.h | 8 +
> include/trace/events/9p.h | 157 ++++++++--------
> include/trace/events/f2fs.h | 30 ++++
> include/trace/events/intel-sst.h | 7 +
> include/trace/events/irq.h | 39 ++--
> include/trace/events/migrate.h | 42 +++--
> include/trace/events/sunrpc.h | 62 +++++--
> include/trace/events/tlb.h | 30 +++-
> include/trace/events/v4l2.h | 75 +++++---
> include/trace/events/writeback.h | 33 +++-
> include/trace/ftrace.h | 41 ++++-
> kernel/module.c | 3 +
> kernel/trace/trace.c | 276 ++++++++++++++++++++++++++++-
> kernel/trace/trace.h | 2 +
> kernel/trace/trace_events.c | 98 +++++++++-
> samples/trace_events/trace-events-sample.h | 84 ++++++++-
> 21 files changed, 853 insertions(+), 159 deletions(-)
>
>
--
Masami HIRAMATSU
Linux Technology Research Center, System Productivity Research Dept.
Center for Technology Innovation - Systems Engineering
Hitachi, Ltd., Research & Development Group
E-mail: masami.hiramatsu.pt@hitachi.com
prev parent reply other threads:[~2015-04-07 0:45 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 ` [RFC][PATCH 08/17 v2] tracing/samples: Update the trace-event-sample.h with TRACE_DEFINE_ENUM() Steven Rostedt
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 ` Masami Hiramatsu [this message]
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=5523288A.4030505@hitachi.com \
--to=masami.hiramatsu.pt@hitachi.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=rostedt@goodmis.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.