All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Rogers <irogers@google.com>
To: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	 Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	 Mark Rutland <mark.rutland@arm.com>,
	 Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@kernel.org>,  Ian Rogers <irogers@google.com>,
	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>,
	Athira Rajeev <atrajeev@linux.vnet.ibm.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: [PATCH v4 00/28] Constify tool pointers
Date: Thu, 11 Jul 2024 10:59:40 -0700	[thread overview]
Message-ID: <20240711180008.188906-1-irogers@google.com> (raw)

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.

v4: Simplify perf_session__deliver_synth_attr_event following Adrian's
    suggestions.
v3: Just remove auxtrace dummy tools [Adrian] and make s390-cpumsf
    struct removal its own patch [Adrian].
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 (28):
  perf auxtrace: Remove dummy tools
  perf s390-cpumsf: Remove unused struct
  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           |  55 +----
 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            |  49 +---
 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         |  37 +--
 tools/perf/util/intel-pt.c          |  30 +--
 tools/perf/util/jitdump.c           |   4 +-
 tools/perf/util/s390-cpumsf.c       |  11 +-
 tools/perf/util/session.c           | 366 +++-------------------------
 tools/perf/util/session.h           |   9 +-
 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, 992 insertions(+), 1107 deletions(-)
 create mode 100644 tools/perf/util/tool.c

-- 
2.45.2.993.g49e7a77208-goog


             reply	other threads:[~2024-07-11 18:00 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-11 17:59 Ian Rogers [this message]
2024-07-11 17:59 ` [PATCH v4 01/28] perf auxtrace: Remove dummy tools Ian Rogers
2024-07-11 17:59 ` [PATCH v4 02/28] perf s390-cpumsf: Remove unused struct Ian Rogers
2024-07-11 17:59 ` [PATCH v4 03/28] perf cs-etm: Fix address sanitizer dso build failure Ian Rogers
2024-07-11 17:59 ` [PATCH v4 04/28] perf tool: Constify tool pointers Ian Rogers
2024-07-11 17:59 ` [PATCH v4 05/28] perf tool: Move fill defaults into tool.c Ian Rogers
2024-07-11 17:59 ` [PATCH v4 06/28] perf tool: Add perf_tool__init Ian Rogers
2024-07-11 17:59 ` [PATCH v4 07/28] perf kmem: Use perf_tool__init Ian Rogers
2024-07-11 17:59 ` [PATCH v4 08/28] perf buildid-list: " Ian Rogers
2024-07-11 17:59 ` [PATCH v4 09/28] perf kvm: " Ian Rogers
2024-07-11 17:59 ` [PATCH v4 10/28] perf lock: " Ian Rogers
2024-07-11 17:59 ` [PATCH v4 11/28] perf evlist: " Ian Rogers
2024-07-11 17:59 ` [PATCH v4 12/28] perf record: " Ian Rogers
2024-07-11 17:59 ` [PATCH v4 13/28] perf c2c: " Ian Rogers
2024-07-11 17:59 ` [PATCH v4 14/28] perf script: " Ian Rogers
2024-07-11 17:59 ` [PATCH v4 15/28] perf inject: " Ian Rogers
2024-07-11 17:59 ` [PATCH v4 16/28] perf report: " Ian Rogers
2024-07-11 17:59 ` [PATCH v4 17/28] perf stat: " Ian Rogers
2024-07-11 17:59 ` [PATCH v4 18/28] perf annotate: " Ian Rogers
2024-07-11 17:59 ` [PATCH v4 19/28] perf sched: " Ian Rogers
2024-07-11 18:00 ` [PATCH v4 20/28] perf mem: " Ian Rogers
2024-07-11 18:00 ` [PATCH v4 21/28] perf timechart: " Ian Rogers
2024-07-11 18:00 ` [PATCH v4 22/28] perf diff: " Ian Rogers
2024-07-11 18:00 ` [PATCH v4 23/28] perf data convert json: " Ian Rogers
2024-07-11 18:00 ` [PATCH v4 24/28] perf data convert ctf: " Ian Rogers
2024-07-11 18:00 ` [PATCH v4 25/28] perf test event_update: Ensure tools is initialized Ian Rogers
2024-07-11 18:00 ` [PATCH v4 26/28] perf kwork: Use perf_tool__init Ian Rogers
2024-07-11 18:00 ` [PATCH v4 27/28] perf tool: Remove perf_tool__fill_defaults Ian Rogers
2024-07-11 18:00 ` [PATCH v4 28/28] perf session: Constify tool Ian Rogers

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=20240711180008.188906-1-irogers@google.com \
    --to=irogers@google.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=anshuman.khandual@arm.com \
    --cc=atrajeev@linux.vnet.ibm.com \
    --cc=chenhuacai@kernel.org \
    --cc=ilkka@os.amperecomputing.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=namhyung@kernel.org \
    --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 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.