All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Rogers <irogers@google.com>
To: Jiri Olsa <jolsa@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	lkml <linux-kernel@vger.kernel.org>,
	Ingo Molnar <mingo@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Michael Petlan <mpetlan@redhat.com>,
	Stephane Eranian <eranian@google.com>,
	Andi Kleen <ak@linux.intel.com>
Subject: Re: [PATCH 05/14] perf tools: Add parse_events_fake interface
Date: Mon, 1 Jun 2020 00:28:31 -0700	[thread overview]
Message-ID: <CAP-5=fXaRv3rbjUYoTJUgc+GfnLku--O5LiHrM1W3ofaFz28rQ@mail.gmail.com> (raw)
In-Reply-To: <20200524224219.234847-6-jolsa@kernel.org>

On Sun, May 24, 2020 at 3:42 PM Jiri Olsa <jolsa@kernel.org> wrote:
>
> Adding parse_events_fake interface to parse events
> and use fake pmu event in case pmu event is parsed.
>
> This way it's possible to parse events from PMUs
> which are not present in the system. It's available
> only for testing purposes coming in following
> changes.
>
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>

Acked-by: Ian Rogers <irogers@google.com>

Alternatively fake_pmu could be an argument to parse_events.

Thanks,
Ian

> ---
>  tools/perf/util/parse-events.c | 48 +++++++++++++++++++++++++---------
>  tools/perf/util/parse-events.h |  2 ++
>  2 files changed, 37 insertions(+), 13 deletions(-)
>
> diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
> index 8304f9b6e6be..89239695a728 100644
> --- a/tools/perf/util/parse-events.c
> +++ b/tools/perf/util/parse-events.c
> @@ -2082,22 +2082,15 @@ int parse_events_terms(struct list_head *terms, const char *str)
>         return ret;
>  }
>
> -int parse_events(struct evlist *evlist, const char *str,
> -                struct parse_events_error *err)
> +static int parse_events_state(struct parse_events_state *parse_state,
> +                             struct evlist *evlist, const char *str)
>  {
> -       struct parse_events_state parse_state = {
> -               .list   = LIST_HEAD_INIT(parse_state.list),
> -               .idx    = evlist->core.nr_entries,
> -               .error  = err,
> -               .evlist = evlist,
> -               .stoken = PE_START_EVENTS,
> -       };
>         int ret;
>
> -       ret = parse_events__scanner(str, &parse_state);
> +       ret = parse_events__scanner(str, parse_state);
>         perf_pmu__parse_cleanup();
>
> -       if (!ret && list_empty(&parse_state.list)) {
> +       if (!ret && list_empty(&parse_state->list)) {
>                 WARN_ONCE(true, "WARNING: event parser found nothing\n");
>                 return -1;
>         }
> @@ -2105,12 +2098,12 @@ int parse_events(struct evlist *evlist, const char *str,
>         /*
>          * Add list to the evlist even with errors to allow callers to clean up.
>          */
> -       perf_evlist__splice_list_tail(evlist, &parse_state.list);
> +       perf_evlist__splice_list_tail(evlist, &parse_state->list);
>
>         if (!ret) {
>                 struct evsel *last;
>
> -               evlist->nr_groups += parse_state.nr_groups;
> +               evlist->nr_groups += parse_state->nr_groups;
>                 last = evlist__last(evlist);
>                 last->cmdline_group_boundary = true;
>
> @@ -2125,6 +2118,35 @@ int parse_events(struct evlist *evlist, const char *str,
>         return ret;
>  }
>
> +int parse_events(struct evlist *evlist, const char *str,
> +                struct parse_events_error *err)
> +{
> +       struct parse_events_state parse_state = {
> +               .list   = LIST_HEAD_INIT(parse_state.list),
> +               .idx    = evlist->core.nr_entries,
> +               .error  = err,
> +               .evlist = evlist,
> +               .stoken = PE_START_EVENTS,
> +       };
> +
> +       return parse_events_state(&parse_state, evlist, str);
> +}
> +
> +int parse_events_fake(struct evlist *evlist, const char *str,
> +                     struct parse_events_error *err)
> +{
> +       struct parse_events_state parse_state = {
> +               .list     = LIST_HEAD_INIT(parse_state.list),
> +               .idx      = evlist->core.nr_entries,
> +               .error    = err,
> +               .evlist   = evlist,
> +               .stoken   = PE_START_EVENTS,
> +               .fake_pmu = true,
> +       };
> +
> +       return parse_events_state(&parse_state, evlist, str);
> +}
> +
>  #define MAX_WIDTH 1000
>  static int get_term_width(void)
>  {
> diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
> index 963b0ea6c448..4a23b6cd9924 100644
> --- a/tools/perf/util/parse-events.h
> +++ b/tools/perf/util/parse-events.h
> @@ -34,6 +34,8 @@ int parse_events_option(const struct option *opt, const char *str, int unset);
>  int parse_events_option_new_evlist(const struct option *opt, const char *str, int unset);
>  int parse_events(struct evlist *evlist, const char *str,
>                  struct parse_events_error *error);
> +int parse_events_fake(struct evlist *evlist, const char *str,
> +                     struct parse_events_error *error);
>  int parse_events_terms(struct list_head *terms, const char *str);
>  int parse_filter(const struct option *opt, const char *str, int unset);
>  int exclude_perf(const struct option *opt, const char *arg, int unset);
> --
> 2.25.4
>

  reply	other threads:[~2020-06-01  7:28 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-24 22:42 [RFC 00/14] perf tests: Check on subtest for user specified test Jiri Olsa
2020-05-24 22:42 ` [PATCH 01/14] " Jiri Olsa
2020-05-24 22:42 ` [PATCH 02/14] perf tools: Do not pass avg to generic_metric Jiri Olsa
2020-05-24 22:42 ` [PATCH 03/14] perf tools: Add struct parse_events_state pointer to scanner Jiri Olsa
2020-05-24 22:42 ` [PATCH 04/14] perf tools: Add fake pmu support Jiri Olsa
2020-06-01  7:22   ` Ian Rogers
2020-06-01  9:06     ` Jiri Olsa
2020-05-24 22:42 ` [PATCH 05/14] perf tools: Add parse_events_fake interface Jiri Olsa
2020-06-01  7:28   ` Ian Rogers [this message]
2020-06-01  9:08     ` Jiri Olsa
2020-06-01 15:04       ` Arnaldo Carvalho de Melo
2020-06-01 15:49         ` Jiri Olsa
2020-05-24 22:42 ` [PATCH 06/14] perf tests: Add another pmu-events tests Jiri Olsa
2020-06-01  7:44   ` Ian Rogers
2020-06-01 13:21     ` Jiri Olsa
2020-06-01 16:23       ` Ian Rogers
2020-05-24 22:42 ` [PATCH 07/14] perf tools: Factor out parse_groups function Jiri Olsa
2020-05-24 22:42 ` [PATCH 08/14] perf tools: Add metricgroup__parse_groups_test function Jiri Olsa
2020-05-24 22:42 ` [PATCH 09/14] perf tools: Add fake_pmu to parse_events function Jiri Olsa
2020-05-24 22:42 ` [PATCH 10/14] perf tools: Add map " Jiri Olsa
2020-05-24 22:42 ` [PATCH 11/14] perf tools: Factor out prepare_metric function Jiri Olsa
2020-05-24 22:42 ` [PATCH 12/14] perf tools: Add test_generic_metric function Jiri Olsa
2020-05-24 22:42 ` [PATCH 13/14] perf tests: Add parse metric test for ipc metric Jiri Olsa
2020-06-01  7:55   ` Ian Rogers
2020-06-01 13:09     ` Jiri Olsa
2020-06-01 16:12       ` Ian Rogers
2020-06-01 15:08     ` Arnaldo Carvalho de Melo
2020-06-01 15:49       ` Jiri Olsa
2020-05-24 22:42 ` [PATCH 14/14] perf tests: Add parse metric test for frontend metric Jiri Olsa
2020-06-01  8:06   ` Ian Rogers
2020-06-01 15:08     ` Arnaldo Carvalho de Melo
2020-05-25 12:06 ` [RFC 00/14] perf tests: Check on subtest for user specified test Michael Petlan
2020-05-25 12:35   ` Jiri Olsa
2020-05-25 14:23 ` Arnaldo Carvalho de Melo
2020-05-26 11:15   ` Jiri Olsa

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='CAP-5=fXaRv3rbjUYoTJUgc+GfnLku--O5LiHrM1W3ofaFz28rQ@mail.gmail.com' \
    --to=irogers@google.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=eranian@google.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=mpetlan@redhat.com \
    --cc=namhyung@kernel.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.