From: Ingo Molnar <mingo@elte.hu>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-kernel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
Minchan Kim <minchan.kim@gmail.com>, Mel Gorman <mel@csn.ul.ie>,
Christoph Hellwig <hch@infradead.org>,
Rik van Riel <riel@redhat.com>,
Pekka Enberg <penberg@cs.helsinki.fi>,
Peter Zijlstra <peterz@infradead.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Theodore Tso <tytso@mit.edu>,
Mathieu Desnoyers <compudj@krystal.dyndns.org>,
Lai Jiangshan <laijs@cn.fujitsu.com>,
Zhaolei <zhaolei@cn.fujitsu.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Jason Baron <jbaron@redhat.com>,
Jiaying Zhang <jiayingz@google.com>
Subject: Re: [RFC PATCH 0/5] simplify the print fmt in the event format files
Date: Tue, 9 Jun 2009 14:07:29 +0200 [thread overview]
Message-ID: <20090609120729.GB25586@elte.hu> (raw)
In-Reply-To: <20090609014534.790466803@goodmis.org>
* Steven Rostedt <rostedt@goodmis.org> wrote:
>
> This is a request for comments on the new print format style to show
> in the format file.
>
> As more and more users of ftrace are retrieving their data through
> the binary interface, it has become more important to be able to
> parse the format of these binary records.
>
> Since the output may also be used in dumps of the kernel, it is still
> important that ftrace has a way within the kernel to display the
> data records in a human readable format.
>
> The current method is with TP_printk, in the TRACE_EVENT. This acts
> just like a printk and lets the developer print out their format
> anyway they would like to. But the problem with this is that the
> readers of the binary data would either have to have a C parser to understand
> the output, or would have to have a custom made parser to match the
> contents, and hope that the contents would not change.
>
> This patch series creates a new marco called TP_FORMAT that can be
> used in place of the TP_printk inside the TRACE_EVENT macro.
>
> This format has the current following language:
>
> * FMT := constant string FMT | COMMAND FMT | empty
> * COMMAND := <TYPE:FIELD> | <mask:FIELD:DELIM:MASKS> | <sym:FIELD:SYMBOLS> |
> * <if:FIELD:TRUE:FALSE>
> * TYPE := int | hex | ptr | string | strarray
> * FIELD := defined by the event structure
> * MASKS := MASK=NAME,MASKS | MASK=NAME
> * MASK := the bit mask to match
> * DELIM := delimiter to separate the fields. None and ':' are both allowed
> * SYMBOLS := SYM=NAME,SYMBOLS | SYM=NAME
> * SYM := the symbol value to test against
> * TRUE := print when field is non zero
> * FALSE := print when field is zero or NULL
> * NAME := the name to write when a match is found
> *
> * A '\<' would print '<'
>
> We can extend this langange when we need to. A user app could just
> ignore a type it does not understand.
>
> This is an RFC patch set. I basically just got it working but it lacks
> some clean ups on errors. And I need to investigate the use of the
> fields structures to make sure they are adquately protected. It uses
> the fields that are pased by the filter code.
>
> This makes the output of the format much cleaner.
Agreed, it's clearly cleaner.
>
> We go from this:
>
> print fmt: "irq=%d handler=%s", REC->irq, (char *)((void *)REC + REC->__data_loc_name)
>
> to this:
>
> format: irq=<int:irq> handler=<string:name>
>
> and this:
>
> print fmt: "softirq=%d action=%s", REC->vec, ({ static const struct trace_print_flags symbols[] = { { HI_SOFTIRQ, "HI" }, { TIMER_SOFTIRQ, "TIMER" }, { NET_TX_SOFTIRQ, "NET_TX" }, { NET_RX_SOFTIRQ, "NET_RX" }, { BLOCK_SOFTIRQ, "BLOCK" }, { TASKLET_SOFTIRQ, "TASKLET" }, { SCHED_SOFTIRQ, "SCHED" }, { HRTIMER_SOFTIRQ, "HRTIMER" }, { RCU_SOFTIRQ, "RCU" }, { -1, ((void *)0) }}; ftrace_print_symbols_seq (p, REC->vec, symbols); })
>
> To this:
>
> format: softirq=<int:vec> action=<sym:vec:0=HI,1=TIMER,2=NET_TX,3=NET_RX,4=BLOCK,5=TASKLET,6=SCHED,7=HRTIMER,8=RCU
Introducing new, elaborate description languages is always risky.
Would there be a way to reuse something existing - ideally some nice
sub-set of C structure definitions?
Also, would it be possible to put more newlines into the format, so
that human inspection is more straightforward. It wont matter to the
tools.
Ingo
next prev parent reply other threads:[~2009-06-09 12:08 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-09 1:45 Steven Rostedt
2009-06-09 1:45 ` [RFC PATCH 1/5] tracing: add trace_seq_vprint interface Steven Rostedt
2009-06-09 1:45 ` [RFC PATCH 2/5] tracing/events: nicer print format for parsing Steven Rostedt
2009-06-09 19:22 ` Frederic Weisbecker
2009-06-09 19:45 ` Steven Rostedt
2009-06-09 20:01 ` Mathieu Desnoyers
2009-06-10 1:59 ` Lai Jiangshan
2009-06-10 5:37 ` Steven Rostedt
2009-06-10 9:37 ` Christoph Hellwig
2009-06-10 9:48 ` Christoph Hellwig
2009-06-10 10:11 ` Ingo Molnar
2009-06-10 11:31 ` Frédéric Weisbecker
2009-06-10 11:51 ` Frédéric Weisbecker
2009-06-10 12:18 ` Steven Rostedt
2009-06-10 17:16 ` Ingo Molnar
2009-06-10 17:56 ` Steven Rostedt
2009-06-10 18:39 ` [PATCH][GIT PULL] tracing: do not translate event helper macros in print format Steven Rostedt
2009-06-10 20:48 ` Ingo Molnar
2009-06-11 12:52 ` Christoph Hellwig
2009-06-11 13:04 ` Steven Rostedt
2009-06-10 14:32 ` [RFC PATCH 2/5] tracing/events: nicer print format for parsing Mathieu Desnoyers
2009-06-10 12:47 ` Steven Rostedt
2009-06-09 1:45 ` [RFC PATCH 3/5] tracing/events: modify irq print to new format Steven Rostedt
2009-06-10 9:42 ` Christoph Hellwig
2009-06-10 12:23 ` Steven Rostedt
2009-06-09 1:45 ` [RFC PATCH 4/5] tracing/events: modify sched " Steven Rostedt
2009-06-09 1:45 ` [RFC PATCH 5/5] tracing/events: modify kmem " Steven Rostedt
2009-06-09 7:12 ` Peter Zijlstra
2009-06-09 8:06 ` Mel Gorman
2009-06-09 13:08 ` Steven Rostedt
2009-06-09 12:07 ` Ingo Molnar [this message]
2009-06-09 12:57 ` [RFC PATCH 0/5] simplify the print fmt in the event format files Steven Rostedt
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=20090609120729.GB25586@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@linux-foundation.org \
--cc=compudj@krystal.dyndns.org \
--cc=fweisbec@gmail.com \
--cc=hch@infradead.org \
--cc=jbaron@redhat.com \
--cc=jiayingz@google.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mel@csn.ul.ie \
--cc=minchan.kim@gmail.com \
--cc=penberg@cs.helsinki.fi \
--cc=peterz@infradead.org \
--cc=riel@redhat.com \
--cc=rostedt@goodmis.org \
--cc=tytso@mit.edu \
--cc=zhaolei@cn.fujitsu.com \
/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
all inboxes | Powered by JetHome®