All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	James Clark <james.clark@linaro.org>,
	Jiri Olsa <jolsa@kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v2 3/3] perf list: Support filtering in JSON output
Date: Thu, 20 Nov 2025 11:11:34 -0800	[thread overview]
Message-ID: <aR9n5qgwryvJaexY@google.com> (raw)
In-Reply-To: <CAP-5=fWHTGSZPDO06FJENFLW0AtS1Fukk1jqFeHqyGFa+HLhMw@mail.gmail.com>

On Wed, Nov 19, 2025 at 09:42:51PM -0800, Ian Rogers wrote:
> On Wed, Nov 19, 2025 at 4:47 PM Namhyung Kim <namhyung@kernel.org> wrote:
> >
> > Like regular output mode, it should honor command line arguments to
> > limit to a certain type of PMUs or events.
> >
> >   $ perf list -j hw
> >   [
> >   {
> >           "Unit": "cpu",
> >           "Topic": "legacy hardware",
> >           "EventName": "branch-instructions",
> >           "EventType": "Kernel PMU event",
> >           "BriefDescription": "Retired branch instructions [This event is an alias of branches]",
> >           "Encoding": "cpu/event=0xc4\n/"
> >   },
> >   {
> >           "Unit": "cpu",
> >           "Topic": "legacy hardware",
> >           "EventName": "branch-misses",
> >           "EventType": "Kernel PMU event",
> >           "BriefDescription": "Mispredicted branch instructions",
> >           "Encoding": "cpu/event=0xc5\n/"
> 
> I think these newlines can be fixed by changing:
> https://web.git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/tools/perf/util/pmu.c?h=perf-tools-next#n643
> ```
> ret = io__getline(&io, &alias->terms, &line_len) < 0 ? -errno : 0;
> if (ret) {
>    ...
> }
> ```
> to something like:
> ```
> ret = io__getline(&io, &alias->terms, &line_len) < 0 ? -errno : 0;
> if (ret) {
>     ...
> }
> if (alias->terms[line_len - 1] == '\n')
>     alias->terms[line_len - 1] = '\0';
> ```

Yep, will do in a separate patch.

> 
> >   },
> >   ...
> >
> > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> 
> Reviewed-by: Ian Rogers <irogers@google.com>

Thanks for your review!
Namhyung
 
> > ---
> >  tools/perf/builtin-list.c | 24 ++++++++++++++++++++++++
> >  1 file changed, 24 insertions(+)
> >
> > diff --git a/tools/perf/builtin-list.c b/tools/perf/builtin-list.c
> > index 6c5913f129f39c94..5cbca0bacd35237e 100644
> > --- a/tools/perf/builtin-list.c
> > +++ b/tools/perf/builtin-list.c
> > @@ -373,6 +373,23 @@ static void json_print_event(void *ps, const char *topic,
> >         FILE *fp = print_state->common.fp;
> >         struct strbuf buf;
> >
> > +       if (deprecated && !print_state->common.deprecated)
> > +               return;
> > +
> > +       if (print_state->common.pmu_glob &&
> > +           (!pmu_name || !strglobmatch(pmu_name, print_state->common.pmu_glob)))
> > +               return;
> > +
> > +       if (print_state->common.exclude_abi && pmu_type < PERF_TYPE_MAX &&
> > +           pmu_type != PERF_TYPE_RAW)
> > +               return;
> > +
> > +       if (print_state->common.event_glob &&
> > +           (!event_name || !strglobmatch(event_name, print_state->common.event_glob)) &&
> > +           (!event_alias || !strglobmatch(event_alias, print_state->common.event_glob)) &&
> > +           (!topic || !strglobmatch_nocase(topic, print_state->common.event_glob)))
> > +               return;
> > +
> >         strbuf_init(&buf, 0);
> >         fprintf(fp, "%s{\n", print_state->need_sep ? ",\n" : "");
> >         print_state->need_sep = true;
> > @@ -449,6 +466,13 @@ static void json_print_metric(void *ps __maybe_unused, const char *group,
> >         FILE *fp = print_state->common.fp;
> >         struct strbuf buf;
> >
> > +       if (print_state->common.event_glob &&
> > +           (!print_state->common.metrics || !name ||
> > +            !strglobmatch(name, print_state->common.event_glob)) &&
> > +           (!print_state->common.metricgroups || !group ||
> > +            !strglobmatch(group, print_state->common.event_glob)))
> > +               return;
> > +
> >         strbuf_init(&buf, 0);
> >         fprintf(fp, "%s{\n", print_state->need_sep ? ",\n" : "");
> >         print_state->need_sep = true;
> > --
> > 2.52.0.rc1.455.g30608eb744-goog
> >

  reply	other threads:[~2025-11-20 19:11 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-20  0:47 [PATCH v2 1/3] perf list: Print matching PMU events for --unit Namhyung Kim
2025-11-20  0:47 ` [PATCH v2 2/3] perf list: Share print state with JSON output Namhyung Kim
2025-11-20  5:30   ` Ian Rogers
2025-11-20  0:47 ` [PATCH v2 3/3] perf list: Support filtering in " Namhyung Kim
2025-11-20  5:42   ` Ian Rogers
2025-11-20 19:11     ` Namhyung Kim [this message]
2025-11-21 20:02 ` [PATCH v2 1/3] perf list: Print matching PMU events for --unit Namhyung Kim

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=aR9n5qgwryvJaexY@google.com \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@kernel.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.