From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
To: Jiri Olsa <jolsa@redhat.com>
Cc: peterz@infradead.org, linux-kernel@vger.kernel.org,
Arnaldo Carvalho de Melo <acme@kernel.org>,
dev@codyps.com, Paul Mackerras <paulus@samba.org>,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v6 1/4] tools/perf: support parsing parameterized events
Date: Mon, 22 Dec 2014 11:30:45 -0800 [thread overview]
Message-ID: <20141222193045.GA19784@us.ibm.com> (raw)
In-Reply-To: <20141222143710.GA29096@krava.brq.redhat.com>
Jiri Olsa [jolsa@redhat.com] wrote:
| On Sun, Dec 21, 2014 at 11:49:24PM -0800, Sukadev Bhattiprolu wrote:
|
| SNIP
|
| > + }
| >
| > switch (format->value) {
| > case PERF_PMU_FORMAT_VALUE_CONFIG:
| > @@ -592,11 +629,16 @@ static int pmu_config_term(struct list_head *formats,
| > }
| >
| > /*
| > - * XXX If we ever decide to go with string values for
| > - * non-hardcoded terms, here's the place to translate
| > - * them into value.
| > + * Either directly use a numeric term, or try to translate string terms
| > + * using event parameters.
| > */
| > - pmu_format_value(format->bits, term->val.num, vp, zero);
| > + if (term->type_val == PARSE_EVENTS__TERM_TYPE_NUM)
| > + val = term->val.num;
| > + else
| > + if (pmu_resolve_param_term(term, head_terms, &val))
| > + return -EINVAL;
| > +
|
| I'm ok with the change logic, but I'm missing here check for the 'term'
| string value to be '?', so we force subst terms to have '?' as value..
| I believe thats what we decided in the previous set discussion, right?
The =? is not a user input, so I did not think of validating that.
perf tool expects kernel/sysfs to show entries like 'core=?'. Are you
saying that we should error out if kernel mistakenly displays 'core=$val'
or 'core=?val' ?
If a required parameter is missing, we catch that in pmu_resolve_param_term().
If a bogus parameter is specified we catch that above in pmu_config_term().
|
| I guess the it'd be nice to parse it directly in the bison code like
| below (could be done later), but I'd be ok with simple check on this
| place for now.
|
| thanks,
| jirka
|
|
| ---
| diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
| index 93c4c9fbc922..7e021c64d5cc 100644
| --- a/tools/perf/util/parse-events.y
| +++ b/tools/perf/util/parse-events.y
| @@ -484,6 +484,14 @@ PE_TERM '=' PE_VALUE
| $$ = term;
| }
| |
| +PE_TERM '=' PE_SUBST
| +{
| + struct parse_events_term *term;
| +
| + ABORT_ON(parse_events_term__subst(&term, (int)$1, NULL, NULL));
| + $$ = term;
| +}
| +|
| PE_TERM
| {
| struct parse_events_term *term;
WARNING: multiple messages have this Message-ID (diff)
From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
To: Jiri Olsa <jolsa@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
Michael Ellerman <mpe@ellerman.id.au>,
Paul Mackerras <paulus@samba.org>,
dev@codyps.com, peterz@infradead.org, hbabu@us.ibm.com,
linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v6 1/4] tools/perf: support parsing parameterized events
Date: Mon, 22 Dec 2014 11:30:45 -0800 [thread overview]
Message-ID: <20141222193045.GA19784@us.ibm.com> (raw)
In-Reply-To: <20141222143710.GA29096@krava.brq.redhat.com>
Jiri Olsa [jolsa@redhat.com] wrote:
| On Sun, Dec 21, 2014 at 11:49:24PM -0800, Sukadev Bhattiprolu wrote:
|
| SNIP
|
| > + }
| >
| > switch (format->value) {
| > case PERF_PMU_FORMAT_VALUE_CONFIG:
| > @@ -592,11 +629,16 @@ static int pmu_config_term(struct list_head *formats,
| > }
| >
| > /*
| > - * XXX If we ever decide to go with string values for
| > - * non-hardcoded terms, here's the place to translate
| > - * them into value.
| > + * Either directly use a numeric term, or try to translate string terms
| > + * using event parameters.
| > */
| > - pmu_format_value(format->bits, term->val.num, vp, zero);
| > + if (term->type_val == PARSE_EVENTS__TERM_TYPE_NUM)
| > + val = term->val.num;
| > + else
| > + if (pmu_resolve_param_term(term, head_terms, &val))
| > + return -EINVAL;
| > +
|
| I'm ok with the change logic, but I'm missing here check for the 'term'
| string value to be '?', so we force subst terms to have '?' as value..
| I believe thats what we decided in the previous set discussion, right?
The =? is not a user input, so I did not think of validating that.
perf tool expects kernel/sysfs to show entries like 'core=?'. Are you
saying that we should error out if kernel mistakenly displays 'core=$val'
or 'core=?val' ?
If a required parameter is missing, we catch that in pmu_resolve_param_term().
If a bogus parameter is specified we catch that above in pmu_config_term().
|
| I guess the it'd be nice to parse it directly in the bison code like
| below (could be done later), but I'd be ok with simple check on this
| place for now.
|
| thanks,
| jirka
|
|
| ---
| diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
| index 93c4c9fbc922..7e021c64d5cc 100644
| --- a/tools/perf/util/parse-events.y
| +++ b/tools/perf/util/parse-events.y
| @@ -484,6 +484,14 @@ PE_TERM '=' PE_VALUE
| $$ = term;
| }
| |
| +PE_TERM '=' PE_SUBST
| +{
| + struct parse_events_term *term;
| +
| + ABORT_ON(parse_events_term__subst(&term, (int)$1, NULL, NULL));
| + $$ = term;
| +}
| +|
| PE_TERM
| {
| struct parse_events_term *term;
next prev parent reply other threads:[~2014-12-22 19:31 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-22 7:49 [PATCH v6 0/4] Add support for parametrized events Sukadev Bhattiprolu
2014-12-22 7:49 ` Sukadev Bhattiprolu
2014-12-22 7:49 ` [PATCH v6 1/4] tools/perf: support parsing parameterized events Sukadev Bhattiprolu
2014-12-22 7:49 ` Sukadev Bhattiprolu
2014-12-22 14:37 ` Jiri Olsa
2014-12-22 14:37 ` Jiri Olsa
2014-12-22 19:30 ` Sukadev Bhattiprolu [this message]
2014-12-22 19:30 ` Sukadev Bhattiprolu
2014-12-23 9:55 ` Jiri Olsa
2014-12-23 9:55 ` Jiri Olsa
2014-12-23 19:58 ` Sukadev Bhattiprolu
2014-12-23 19:58 ` Sukadev Bhattiprolu
2015-01-06 9:42 ` Jiri Olsa
2015-01-06 9:42 ` Jiri Olsa
2015-01-06 13:26 ` Arnaldo Carvalho de Melo
2015-01-06 13:26 ` Arnaldo Carvalho de Melo
2014-12-22 7:49 ` [PATCH v6 2/4] tools/perf: extend format_alias() to include event parameters Sukadev Bhattiprolu
2014-12-22 7:49 ` Sukadev Bhattiprolu
2015-01-06 9:39 ` Jiri Olsa
2015-01-06 9:39 ` Jiri Olsa
2015-01-07 23:41 ` Sukadev Bhattiprolu
2015-01-07 23:41 ` Sukadev Bhattiprolu
2015-01-06 9:40 ` Jiri Olsa
2015-01-06 9:40 ` Jiri Olsa
2014-12-22 7:49 ` [PATCH v6 3/4] perf Documentation: add " Sukadev Bhattiprolu
2014-12-22 7:49 ` Sukadev Bhattiprolu
2014-12-22 14:39 ` Jiri Olsa
2014-12-22 14:39 ` Jiri Olsa
2014-12-22 19:34 ` Sukadev Bhattiprolu
2014-12-22 19:34 ` Sukadev Bhattiprolu
2014-12-23 9:51 ` Jiri Olsa
2014-12-23 9:51 ` Jiri Olsa
2014-12-23 19:59 ` Sukadev Bhattiprolu
2014-12-23 19:59 ` Sukadev Bhattiprolu
2014-12-22 7:49 ` [PATCH v6 4/4] tools/perf: Document parameterized and symbolic events Sukadev Bhattiprolu
2014-12-22 7:49 ` Sukadev Bhattiprolu
2014-12-22 14:43 ` Jiri Olsa
2014-12-22 14:43 ` Jiri Olsa
2014-12-22 19:45 ` Sukadev Bhattiprolu
2014-12-22 19:45 ` Sukadev Bhattiprolu
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=20141222193045.GA19784@us.ibm.com \
--to=sukadev@linux.vnet.ibm.com \
--cc=acme@kernel.org \
--cc=dev@codyps.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=paulus@samba.org \
--cc=peterz@infradead.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.