From: Namhyung Kim <namhyung@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Kan Liang <kan.liang@linux.intel.com>,
John Garry <john.g.garry@oracle.com>,
Will Deacon <will@kernel.org>, James Clark <james.clark@arm.com>,
Mike Leach <mike.leach@linaro.org>, Leo Yan <leo.yan@linux.dev>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Yicong Yang <yangyicong@hisilicon.com>,
Jonathan Cameron <jonathan.cameron@huawei.com>,
Nick Terrell <terrelln@fb.com>,
Nick Desaulniers <ndesaulniers@google.com>,
Oliver Upton <oliver.upton@linux.dev>,
Anshuman Khandual <anshuman.khandual@arm.com>,
Song Liu <song@kernel.org>,
Ilkka Koskinen <ilkka@os.amperecomputing.com>,
Huacai Chen <chenhuacai@kernel.org>,
Yanteng Si <siyanteng@loongson.cn>,
Sun Haiyong <sunhaiyong@loongson.cn>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 00/27] Constify tool pointers
Date: Fri, 28 Jun 2024 10:24:58 -0700 [thread overview]
Message-ID: <Zn7x6u7cedoFIHSi@google.com> (raw)
In-Reply-To: <20240626203630.1194748-1-irogers@google.com>
On Wed, Jun 26, 2024 at 01:36:02PM -0700, Ian Rogers wrote:
> struct perf_tool provides a set of function pointers that are called
> through when processing perf data. To make filling the pointers less
> cumbersome, if they are NULL perf_tools__fill_defaults will add
> default do nothing implementations.
>
> This change refactors struct perf_tool to have an init function that
> provides the default implementation. The special use of NULL and
> perf_tools__fill_defaults are removed. As a consequence the tool
> pointers can then all be made const, which better reflects the
> behavior a particular perf command would expect of the tool and to
> some extent can reduce the cognitive load on someone working on a
> command.
I thought you actually wanted to make the tool const (rodata) but it
seems you leave it as is but treat it as const.
I'm curious if we can change the event delivery code something like:
if (tool->func)
tool->func(...);
else
stub_func(...);
Then probably we don't need to touch the tool and make it const.
Thoughts?
Thanks,
Namhyung
>
> v2: Remove dummy tool initialization [Adrian] and make zero sized. Add
> cs-etm fix for address sanitizer build, found necessary when
> testing dummy tool change.
>
> Ian Rogers (27):
> perf auxevent: Zero size dummy tool
> perf cs-etm: Fix address sanitizer dso build failure
> perf tool: Constify tool pointers
> perf tool: Move fill defaults into tool.c
> perf tool: Add perf_tool__init
> perf kmem: Use perf_tool__init
> perf buildid-list: Use perf_tool__init
> perf kvm: Use perf_tool__init
> perf lock: Use perf_tool__init
> perf evlist: Use perf_tool__init
> perf record: Use perf_tool__init
> perf c2c: Use perf_tool__init
> perf script: Use perf_tool__init
> perf inject: Use perf_tool__init
> perf report: Use perf_tool__init
> perf stat: Use perf_tool__init
> perf annotate: Use perf_tool__init
> perf sched: Use perf_tool__init
> perf mem: Use perf_tool__init
> perf timechart: Use perf_tool__init
> perf diff: Use perf_tool__init
> perf data convert json: Use perf_tool__init
> perf data convert ctf: Use perf_tool__init
> perf test event_update: Ensure tools is initialized
> perf kwork: Use perf_tool__init
> perf tool: Remove perf_tool__fill_defaults
> perf session: Constify tool
>
> tools/perf/arch/x86/util/event.c | 4 +-
> tools/perf/bench/synthesize.c | 2 +-
> tools/perf/builtin-annotate.c | 44 ++--
> tools/perf/builtin-buildid-list.c | 10 +
> tools/perf/builtin-c2c.c | 33 ++-
> tools/perf/builtin-diff.c | 30 ++-
> tools/perf/builtin-evlist.c | 10 +-
> tools/perf/builtin-inject.c | 159 +++++++------
> tools/perf/builtin-kmem.c | 20 +-
> tools/perf/builtin-kvm.c | 19 +-
> tools/perf/builtin-kwork.c | 33 ++-
> tools/perf/builtin-lock.c | 41 ++--
> tools/perf/builtin-mem.c | 37 +--
> tools/perf/builtin-record.c | 47 ++--
> tools/perf/builtin-report.c | 67 +++---
> tools/perf/builtin-sched.c | 50 ++--
> tools/perf/builtin-script.c | 106 ++++-----
> tools/perf/builtin-stat.c | 26 +--
> tools/perf/builtin-timechart.c | 25 +-
> tools/perf/builtin-top.c | 2 +-
> tools/perf/builtin-trace.c | 4 +-
> tools/perf/tests/cpumap.c | 6 +-
> tools/perf/tests/dlfilter-test.c | 2 +-
> tools/perf/tests/dwarf-unwind.c | 2 +-
> tools/perf/tests/event_update.c | 9 +-
> tools/perf/tests/stat.c | 6 +-
> tools/perf/tests/thread-map.c | 2 +-
> tools/perf/util/Build | 1 +
> tools/perf/util/arm-spe.c | 14 +-
> tools/perf/util/auxtrace.c | 12 +-
> tools/perf/util/auxtrace.h | 20 +-
> tools/perf/util/bpf-event.c | 4 +-
> tools/perf/util/build-id.c | 34 +--
> tools/perf/util/build-id.h | 8 +-
> tools/perf/util/cs-etm.c | 24 +-
> tools/perf/util/data-convert-bt.c | 34 ++-
> tools/perf/util/data-convert-json.c | 47 ++--
> tools/perf/util/dso.h | 10 +
> tools/perf/util/event.c | 54 +++--
> tools/perf/util/event.h | 38 ++--
> tools/perf/util/header.c | 6 +-
> tools/perf/util/header.h | 4 +-
> tools/perf/util/hisi-ptt.c | 6 +-
> tools/perf/util/intel-bts.c | 14 +-
> tools/perf/util/intel-pt.c | 15 +-
> tools/perf/util/jitdump.c | 4 +-
> tools/perf/util/s390-cpumsf.c | 11 +-
> tools/perf/util/session.c | 342 ++--------------------------
> tools/perf/util/session.h | 6 +-
> tools/perf/util/synthetic-events.c | 80 +++----
> tools/perf/util/synthetic-events.h | 70 +++---
> tools/perf/util/tool.c | 294 ++++++++++++++++++++++++
> tools/perf/util/tool.h | 18 +-
> tools/perf/util/tsc.c | 2 +-
> 54 files changed, 967 insertions(+), 1001 deletions(-)
> create mode 100644 tools/perf/util/tool.c
>
> --
> 2.45.2.741.gdbec12cfda-goog
>
next prev parent reply other threads:[~2024-06-28 17:25 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-26 20:36 [PATCH v2 00/27] Constify tool pointers Ian Rogers
2024-06-26 20:36 ` [PATCH v2 01/27] perf auxevent: Zero size dummy tool Ian Rogers
2024-06-28 17:44 ` Adrian Hunter
2024-06-28 18:34 ` Ian Rogers
2024-06-26 20:36 ` [PATCH v2 02/27] perf cs-etm: Fix address sanitizer dso build failure Ian Rogers
2024-06-26 20:36 ` [PATCH v2 03/27] perf tool: Constify tool pointers Ian Rogers
2024-06-26 20:36 ` [PATCH v2 04/27] perf tool: Move fill defaults into tool.c Ian Rogers
2024-06-26 20:36 ` [PATCH v2 05/27] perf tool: Add perf_tool__init Ian Rogers
2024-06-26 20:36 ` [PATCH v2 06/27] perf kmem: Use perf_tool__init Ian Rogers
2024-06-26 20:36 ` [PATCH v2 07/27] perf buildid-list: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 08/27] perf kvm: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 09/27] perf lock: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 10/27] perf evlist: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 11/27] perf record: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 12/27] perf c2c: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 13/27] perf script: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 14/27] perf inject: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 15/27] perf report: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 16/27] perf stat: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 17/27] perf annotate: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 18/27] perf sched: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 19/27] perf mem: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 20/27] perf timechart: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 21/27] perf diff: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 22/27] perf data convert json: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 23/27] perf data convert ctf: " Ian Rogers
2024-06-26 20:36 ` [PATCH v2 24/27] perf test event_update: Ensure tools is initialized Ian Rogers
2024-06-26 20:36 ` [PATCH v2 25/27] perf kwork: Use perf_tool__init Ian Rogers
2024-06-26 20:36 ` [PATCH v2 26/27] perf tool: Remove perf_tool__fill_defaults Ian Rogers
2024-06-26 20:36 ` [PATCH v2 27/27] perf session: Constify tool Ian Rogers
2024-06-28 17:24 ` Namhyung Kim [this message]
2024-06-28 17:52 ` [PATCH v2 00/27] Constify tool pointers Ian Rogers
2024-06-28 22:07 ` 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=Zn7x6u7cedoFIHSi@google.com \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=anshuman.khandual@arm.com \
--cc=chenhuacai@kernel.org \
--cc=ilkka@os.amperecomputing.com \
--cc=irogers@google.com \
--cc=james.clark@arm.com \
--cc=john.g.garry@oracle.com \
--cc=jolsa@kernel.org \
--cc=jonathan.cameron@huawei.com \
--cc=kan.liang@linux.intel.com \
--cc=leo.yan@linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mike.leach@linaro.org \
--cc=mingo@redhat.com \
--cc=ndesaulniers@google.com \
--cc=oliver.upton@linux.dev \
--cc=peterz@infradead.org \
--cc=siyanteng@loongson.cn \
--cc=song@kernel.org \
--cc=sunhaiyong@loongson.cn \
--cc=suzuki.poulose@arm.com \
--cc=terrelln@fb.com \
--cc=will@kernel.org \
--cc=yangyicong@hisilicon.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;
as well as URLs for NNTP newsgroup(s).