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>,
James Clark <james.clark@linaro.org>,
Howard Chu <howardchu95@gmail.com>,
Athira Jajeev <atrajeev@linux.vnet.ibm.com>,
Michael Petlan <mpetlan@redhat.com>,
Veronika Molnarova <vmolnaro@redhat.com>,
Dapeng Mi <dapeng1.mi@linux.intel.com>,
Thomas Richter <tmricht@linux.ibm.com>,
Ilya Leoshkevich <iii@linux.ibm.com>,
Colin Ian King <colin.i.king@gmail.com>,
Weilin Wang <weilin.wang@intel.com>,
Andi Kleen <ak@linux.intel.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org
Subject: [PATCH v2 14/16] perf kwork: Make perf_kwork_add_work a callback
Date: Tue, 15 Oct 2024 21:24:13 -0700 [thread overview]
Message-ID: <20241016042415.7552-15-irogers@google.com> (raw)
In-Reply-To: <20241016042415.7552-1-irogers@google.com>
perf_kwork_add_work is declared in builtin-kwork, whereas much kwork
code is in util. To avoid needing to stub perf_kwork_add_work in
python.c, add a callback to struct perf_kwork and initialize it in
builtin-kwork to perf_kwork_add_work - this is the only struct
perf_kwork. This removes the need for the stub in python.c.
Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/builtin-kwork.c | 3 ++-
tools/perf/util/bpf_kwork.c | 2 +-
tools/perf/util/bpf_kwork_top.c | 2 +-
tools/perf/util/kwork.h | 6 ++++--
tools/perf/util/python.c | 12 ------------
5 files changed, 8 insertions(+), 17 deletions(-)
diff --git a/tools/perf/builtin-kwork.c b/tools/perf/builtin-kwork.c
index c1daf82c9b92..fabfcb74800b 100644
--- a/tools/perf/builtin-kwork.c
+++ b/tools/perf/builtin-kwork.c
@@ -1846,7 +1846,7 @@ static void process_skipped_events(struct perf_kwork *kwork,
}
}
-struct kwork_work *perf_kwork_add_work(struct perf_kwork *kwork,
+static struct kwork_work *perf_kwork_add_work(struct perf_kwork *kwork,
struct kwork_class *class,
struct kwork_work *key)
{
@@ -2344,6 +2344,7 @@ int cmd_kwork(int argc, const char **argv)
.all_runtime = 0,
.all_count = 0,
.nr_skipped_events = { 0 },
+ .add_work = perf_kwork_add_work,
};
static const char default_report_sort_order[] = "runtime, max, count";
static const char default_latency_sort_order[] = "avg, max, count";
diff --git a/tools/perf/util/bpf_kwork.c b/tools/perf/util/bpf_kwork.c
index 6c7126b7670d..5cff755c71fa 100644
--- a/tools/perf/util/bpf_kwork.c
+++ b/tools/perf/util/bpf_kwork.c
@@ -285,7 +285,7 @@ static int add_work(struct perf_kwork *kwork,
(bpf_trace->get_work_name(key, &tmp.name)))
return -1;
- work = perf_kwork_add_work(kwork, tmp.class, &tmp);
+ work = kwork->add_work(kwork, tmp.class, &tmp);
if (work == NULL)
return -1;
diff --git a/tools/perf/util/bpf_kwork_top.c b/tools/perf/util/bpf_kwork_top.c
index 7261cad43468..b6f187dd9136 100644
--- a/tools/perf/util/bpf_kwork_top.c
+++ b/tools/perf/util/bpf_kwork_top.c
@@ -255,7 +255,7 @@ static int add_work(struct perf_kwork *kwork, struct work_key *key,
bpf_trace = kwork_class_bpf_supported_list[type];
tmp.class = bpf_trace->class;
- work = perf_kwork_add_work(kwork, tmp.class, &tmp);
+ work = kwork->add_work(kwork, tmp.class, &tmp);
if (!work)
return -1;
diff --git a/tools/perf/util/kwork.h b/tools/perf/util/kwork.h
index 76fe2a821bcf..29352ca1d497 100644
--- a/tools/perf/util/kwork.h
+++ b/tools/perf/util/kwork.h
@@ -251,12 +251,14 @@ struct perf_kwork {
* perf kwork top data
*/
struct kwork_top_stat top_stat;
-};
-struct kwork_work *perf_kwork_add_work(struct perf_kwork *kwork,
+ /* Add work callback. */
+ struct kwork_work *(*add_work)(struct perf_kwork *kwork,
struct kwork_class *class,
struct kwork_work *key);
+};
+
#ifdef HAVE_BPF_SKEL
int perf_kwork__trace_prepare_bpf(struct perf_kwork *kwork);
diff --git a/tools/perf/util/python.c b/tools/perf/util/python.c
index c52da509ae58..6e2ff0076daa 100644
--- a/tools/perf/util/python.c
+++ b/tools/perf/util/python.c
@@ -16,7 +16,6 @@
#include "thread_map.h"
#include "trace-event.h"
#include "mmap.h"
-#include "util/kwork.h"
#include "util/sample.h"
#include <internal/lib.h>
@@ -1297,14 +1296,3 @@ PyMODINIT_FUNC PyInit_perf(void)
PyErr_SetString(PyExc_ImportError, "perf: Init failed!");
return module;
}
-
-
-/* The following are stubs to avoid dragging in builtin-* objects. */
-/* TODO: move the code out of the builtin-* file into util. */
-
-struct kwork_work *perf_kwork_add_work(struct perf_kwork *kwork __maybe_unused,
- struct kwork_class *class __maybe_unused,
- struct kwork_work *key __maybe_unused)
-{
- return NULL;
-}
--
2.47.0.rc1.288.g06298d1525-goog
next prev parent reply other threads:[~2024-10-16 4:25 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-16 4:23 [PATCH v2 00/16] Python module cleanup Ian Rogers
2024-10-16 4:24 ` [PATCH v2 01/16] perf python: Remove python 2 scripting support Ian Rogers
2024-10-16 4:24 ` [PATCH v2 02/16] perf python: Constify variables and parameters Ian Rogers
2024-10-16 4:24 ` [PATCH v2 03/16] perf python: Remove unused #include Ian Rogers
2024-10-16 4:24 ` [PATCH v2 04/16] perf script: Move scripting_max_stack out of builtin Ian Rogers
2024-10-16 4:24 ` [PATCH v2 05/16] perf kvm: Move functions used in util " Ian Rogers
2024-10-16 4:24 ` [PATCH v2 06/16] perf script: Move find_scripts to browser/scripts.c Ian Rogers
2024-10-16 4:24 ` [PATCH v2 07/16] perf stat: Move stat_config into config.c Ian Rogers
2024-10-22 5:55 ` Namhyung Kim
2024-10-22 17:21 ` Ian Rogers
2024-10-16 4:24 ` [PATCH v2 08/16] perf script: Move script_spec code to trace-event-scripting.c Ian Rogers
2024-10-16 4:24 ` [PATCH v2 09/16] perf script: Move script_fetch_insn " Ian Rogers
2024-10-16 4:24 ` [PATCH v2 10/16] perf script: Move perf_sample__sprintf_flags " Ian Rogers
2024-10-16 4:24 ` [PATCH v2 11/16] perf env: Move arch errno function to only use in env Ian Rogers
2024-10-16 4:24 ` [PATCH v2 12/16] perf lock: Move common lock contention code to new file Ian Rogers
2024-10-22 6:36 ` Namhyung Kim
2024-10-22 16:56 ` Ian Rogers
2024-10-16 4:24 ` [PATCH v2 13/16] perf bench: Remove reference to cmd_inject Ian Rogers
2024-10-22 6:44 ` Namhyung Kim
2024-10-22 17:15 ` Ian Rogers
2024-10-16 4:24 ` Ian Rogers [this message]
2024-10-16 4:24 ` [PATCH v2 15/16] perf build: Remove test library from python shared object Ian Rogers
2024-10-16 4:24 ` [PATCH v2 16/16] perf python: Add parse_events function 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=20241016042415.7552-15-irogers@google.com \
--to=irogers@google.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=atrajeev@linux.vnet.ibm.com \
--cc=colin.i.king@gmail.com \
--cc=dapeng1.mi@linux.intel.com \
--cc=howardchu95@gmail.com \
--cc=iii@linux.ibm.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=mpetlan@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=tmricht@linux.ibm.com \
--cc=vmolnaro@redhat.com \
--cc=weilin.wang@intel.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.