linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC][PATCH 00/10] tracing: Use TRACE_DEFINE_ENUM() to show enum values
@ 2015-03-27 21:37 Steven Rostedt
  2015-03-27 21:37 ` [RFC][PATCH 01/10] tracing: Add TRACE_DEFINE_ENUM() macro to map enums to their values Steven Rostedt
                   ` (11 more replies)
  0 siblings, 12 replies; 27+ messages in thread
From: Steven Rostedt @ 2015-03-27 21:37 UTC (permalink / raw)
  To: linux-kernel
  Cc: Ingo Molnar, Andrew Morton, Namhyung Kim, Masami Hiramatsu,
	Mathieu Desnoyers


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 export the TLB_REMOTE_SHOOTDOWN enum to use space.

How that is done is with a new file in the debugfs tracing directory.

 # cat /sys/kernel/debug/tracing/enum_map
TLB_LOCAL_MM_SHOOTDOWN 3
TLB_LOCAL_SHOOTDOWN 2
TLB_REMOTE_SHOOTDOWN 1
TLB_FLUSH_ON_TASK_SWITCH 0

Now userspace, when seeing TLB_REMOTE_SHOOTDOWN in the format, knows
that represents "1", and can do the conversions properly.


Local SHA1: 6115e48a506e738f0f24771b4c87e4ba90d3d1c2


Steven Rostedt (Red Hat) (10):
      tracing: Add TRACE_DEFINE_ENUM() macro to map enums to their values
      tracing: Allow for modules to export their trace enums as well
      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

----
 include/asm-generic/vmlinux.lds.h |   5 +-
 include/linux/module.h            |   2 +
 include/linux/tracepoint.h        |   7 +
 include/trace/events/9p.h         | 157 +++++++++++++----------
 include/trace/events/f2fs.h       |  21 +++
 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            |  11 ++
 kernel/module.c                   |   3 +
 kernel/trace/trace.c              | 260 +++++++++++++++++++++++++++++++++++++-
 14 files changed, 598 insertions(+), 149 deletions(-)

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2015-04-01  7:26 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-27 21:37 [RFC][PATCH 00/10] tracing: Use TRACE_DEFINE_ENUM() to show enum values Steven Rostedt
2015-03-27 21:37 ` [RFC][PATCH 01/10] tracing: Add TRACE_DEFINE_ENUM() macro to map enums to their values Steven Rostedt
2015-03-30  2:27   ` Namhyung Kim
2015-03-27 21:37 ` [RFC][PATCH 02/10] tracing: Allow for modules to export their trace enums as well Steven Rostedt
2015-03-30  2:10   ` Rusty Russell
2015-03-30  2:41   ` Namhyung Kim
2015-03-30 13:48     ` Steven Rostedt
2015-03-27 21:37 ` [RFC][PATCH 03/10] x86/tlb/trace: Export enums in used by tlb_flush tracepoint Steven Rostedt
2015-03-27 21:37 ` [RFC][PATCH 04/10] net/9p/tracing: Export enums in tracepoints to userspace Steven Rostedt
2015-03-27 21:37 ` [RFC][PATCH 05/10] f2fs: Export the enums in the " Steven Rostedt
2015-03-30  2:47   ` Namhyung Kim
2015-03-30 13:49     ` Steven Rostedt
2015-03-27 21:37 ` [RFC][PATCH 06/10] irq/tracing: Export enums in tracepoints to user space Steven Rostedt
2015-03-27 21:46   ` Steven Rostedt
2015-03-27 21:37 ` [RFC][PATCH 07/10] mm: tracing: " Steven Rostedt
2015-03-27 21:37 ` [RFC][PATCH 08/10] SUNRPC: " Steven Rostedt
2015-03-27 21:37 ` [RFC][PATCH 09/10] v4l: Export enums used by " Steven Rostedt
2015-03-28 13:00   ` Xie XiuQi
2015-03-28 16:20     ` Steven Rostedt
2015-03-27 21:37 ` [RFC][PATCH 10/10] writeback: Export enums used by tracepoint " Steven Rostedt
2015-03-30  3:38 ` [RFC][PATCH 00/10] tracing: Use TRACE_DEFINE_ENUM() to show enum values Masami Hiramatsu
2015-03-30 14:07   ` Steven Rostedt
2015-03-31  7:36     ` Masami Hiramatsu
2015-03-31 13:26       ` Steven Rostedt
2015-04-01  7:23         ` Masami Hiramatsu
2015-03-31 21:30 ` Dave Chinner
2015-03-31 22:56   ` Steven Rostedt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).