From: Tom Zanussi <zanussi@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: rostedt@goodmis.org, tglx@linutronix.de, mhiramat@kernel.org,
vedang.patel@intel.com, bigeasy@linutronix.de,
joel@joelfernandes.org, mathieu.desnoyers@efficios.com,
julia@ni.com, linux-kernel@vger.kernel.org,
linux-rt-users@vger.kernel.org, kernel-team@lge.com
Subject: Re: [PATCH v11 10/15] tracing: Add alternative synthetic event trace action syntax
Date: Fri, 11 Jan 2019 10:25:40 -0600 [thread overview]
Message-ID: <1547223940.7869.8.camel@kernel.org> (raw)
In-Reply-To: <20190111060752.GC625@sejong>
Hi Namhyung,
On Fri, 2019-01-11 at 15:07 +0900, Namhyung Kim wrote:
> On Wed, Jan 09, 2019 at 01:49:17PM -0600, Tom Zanussi wrote:
> > From: Tom Zanussi <tom.zanussi@linux.intel.com>
> >
> > Add a 'trace(synthetic_event_name, params)' alternative to
> > synthetic_event_name(params).
> >
> > Currently, the syntax used for generating synthetic events is to
> > invoke synthetic_event_name(params) i.e. use the synthetic event
> > name
> > as a function call.
> >
> > Users requested a new form that more explicitly shows that the
> > synthetic event is in effect being traced. In this version, a new
> > 'trace()' keyword is used, and the synthetic event name is passed
> > in
> > as the first argument.
> >
> > Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
> > ---
> > Documentation/trace/histogram.rst | 21 ++++++++++++++++++++
> > kernel/trace/trace.c | 1 +
> > kernel/trace/trace_events_hist.c | 42
> > +++++++++++++++++++++++++++++++++++----
> > 3 files changed, 60 insertions(+), 4 deletions(-)
> >
> > diff --git a/Documentation/trace/histogram.rst
> > b/Documentation/trace/histogram.rst
> > index 79476c906b1a..4939bad1c1cd 100644
> > --- a/Documentation/trace/histogram.rst
> > +++ b/Documentation/trace/histogram.rst
> > @@ -1874,6 +1874,7 @@ The available handlers are:
> > The available actions are:
> >
> > - <synthetic_event_name>(param list) - generate
> > synthetic event
> > + - trace(<synthetic_event_name>,(param list)) - generate
> > synthetic event
>
> Shouldn't it be
>
> "trace(<synthetic_event_name>,param list)"
>
> ? Otherwise it looks like we need two parentheses.
Good point, I'll remove the params.
>
> IMHO, it seems better for consistency using this new syntax only.
> Of course it should support the old syntax as well for compatibility
> (and maybe make it undocumented?). But I won't insist strongly..
>
OK, yeah, I really hate when things are undocumented, so I think
removing the documentation would be a step backward, but maybe changing
the emphasis to the trace() form would suffice. How about the below?:
diff --git a/Documentation/trace/histogram.rst b/Documentation/trace/histogram.rst
index e5bcef360997..0ea59d45aef1 100644
--- a/Documentation/trace/histogram.rst
+++ b/Documentation/trace/histogram.rst
@@ -1873,46 +1873,45 @@ The available handlers are:
The available actions are:
- - <synthetic_event_name>(param list) - generate synthetic event
- trace(<synthetic_event_name>,param list) - generate synthetic event
- save(field,...) - save current event fields
- snapshot() - snapshot the trace buffer
The following commonly-used handler.action pairs are available:
- - onmatch(matching.event).<synthetic_event_name>(param list)
-
- or
-
- onmatch(matching.event).trace(<synthetic_event_name>,param list)
- The 'onmatch(matching.event).<synthetic_event_name>(params)' hist
- trigger action is invoked whenever an event matches and the
- histogram entry would be added or updated. It causes the named
- synthetic event to be generated with the values given in the
+ The 'onmatch(matching.event).trace(<synthetic_event_name>,param
+ list)' hist trigger action is invoked whenever an event matches
+ and the histogram entry would be added or updated. It causes the
+ named synthetic event to be generated with the values given in the
'param list'. The result is the generation of a synthetic event
that consists of the values contained in those variables at the
- time the invoking event was hit.
-
- There are two equivalent forms available for generating synthetic
- events. In the first form, the synthetic event name is used as if
- it were a function name. For example, if the synthetic event name
- is 'wakeup_latency', the wakeup_latency event would be generated
- by invoking it as if it were a function call, with the event field
- values passed in as arguments: wakeup_latency(arg1,arg2). The
- second form simply uses the 'trace' keyword as the function name
- and passes in the synthetic event name as the first argument,
- followed by the field values: trace(wakeup_latency,arg1,arg2).
-
- The 'param list' consists of one or more parameters which may be
- either variables or fields defined on either the 'matching.event'
- or the target event. The variables or fields specified in the
- param list may be either fully-qualified or unqualified. If a
- variable is specified as unqualified, it must be unique between
- the two events. A field name used as a param can be unqualified
- if it refers to the target event, but must be fully qualified if
- it refers to the matching event. A fully-qualified name is of the
- form 'system.event_name.$var_name' or 'system.event_name.field'.
+ time the invoking event was hit. For example, if the synthetic
+ event name is 'wakeup_latency', a wakeup_latency event is
+ generated using onmatch(event).trace(wakeup_latency,arg1,arg2).
+
+ There is also an equivalent alternative form available for
+ generating synthetic events. In this form, the synthetic event
+ name is used as if it were a function name. For example, using
+ the 'wakeup_latency' synthetic event name again, the
+ wakeup_latency event would be generated by invoking it as if it
+ were a function call, with the event field values passed in as
+ arguments: onmatch(event).wakeup_latency(arg1,arg2). The syntax
+ for this form is:
+
+ onmatch(matching.event).<synthetic_event_name>(param list)
+
+ In either case, the 'param list' consists of one or more
+ parameters which may be either variables or fields defined on
+ either the 'matching.event' or the target event. The variables or
+ fields specified in the param list may be either fully-qualified
+ or unqualified. If a variable is specified as unqualified, it
+ must be unique between the two events. A field name used as a
+ param can be unqualified if it refers to the target event, but
+ must be fully qualified if it refers to the matching event. A
+ fully-qualified name is of the form 'system.event_name.$var_name'
+ or 'system.event_name.field'.
The 'matching.event' specification is simply the fully qualified
event name of the event that matches the target event for the
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 84981b61d45f..8c220d97c214 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -4899,7 +4899,6 @@ static const char readme_msg[] =
"\t onmax(var) - invoke if var exceeds current max\n"
"\t onchange(var) - invoke action if var changes\n\n"
"\t The available actions are:\n\n"
- "\t <synthetic_event>(param list) - generate synthetic event\n"
"\t trace(<synthetic_event>,param list) - generate synthetic event\n"
"\t save(field,...) - save current event fields\n"
"\t snapshot() - snapshot the trace buffer\n"
next prev parent reply other threads:[~2019-01-11 16:25 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-09 19:49 [PATCH v11 00/15] tracing: Hist trigger snapshot and onchange additions Tom Zanussi
2019-01-09 19:49 ` [PATCH v11 01/15] tracing: Refactor hist trigger action code Tom Zanussi
2019-01-09 19:49 ` [PATCH v11 02/15] tracing: Make hist trigger Documentation better reflect actions/handlers Tom Zanussi
2019-01-09 19:49 ` [PATCH v11 03/15] tracing: Split up onmatch action data Tom Zanussi
2019-01-11 4:32 ` Namhyung Kim
2019-01-09 19:49 ` [PATCH v11 04/15] tracing: Generalize hist trigger onmax and save action Tom Zanussi
2019-01-09 19:49 ` [PATCH v11 05/15] tracing: Add conditional snapshot Tom Zanussi
2019-01-09 19:49 ` [PATCH v11 06/15] tracing: Add hist trigger snapshot() action Tom Zanussi
2019-01-09 19:49 ` [PATCH v11 07/15] tracing: Add hist trigger snapshot() action Documentation Tom Zanussi
2019-01-09 19:49 ` [PATCH v11 08/15] tracing: Add hist trigger onchange() handler Tom Zanussi
2019-01-09 19:49 ` [PATCH v11 09/15] tracing: Add hist trigger onchange() handler Documentation Tom Zanussi
2019-01-09 19:49 ` [PATCH v11 10/15] tracing: Add alternative synthetic event trace action syntax Tom Zanussi
2019-01-11 6:07 ` Namhyung Kim
2019-01-11 16:25 ` Tom Zanussi [this message]
2019-01-14 4:59 ` Namhyung Kim
2019-01-09 19:49 ` [PATCH v11 11/15] tracing: Add SPDX license GPL-2.0 license identifier to inter-event testcases Tom Zanussi
2019-01-09 19:49 ` [PATCH v11 12/15] tracing: Add hist trigger snapshot() action test case Tom Zanussi
2019-01-09 19:49 ` [PATCH v11 13/15] tracing: Add hist trigger onchange() handler " Tom Zanussi
2019-01-09 19:49 ` [PATCH v11 14/15] tracing: Add alternative synthetic event trace action " Tom Zanussi
2019-01-09 19:49 ` [PATCH v11 15/15] tracing: Add hist trigger action 'expected fail' " Tom Zanussi
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=1547223940.7869.8.camel@kernel.org \
--to=zanussi@kernel.org \
--cc=bigeasy@linutronix.de \
--cc=joel@joelfernandes.org \
--cc=julia@ni.com \
--cc=kernel-team@lge.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=namhyung@kernel.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=vedang.patel@intel.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 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.