Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf kwork: Make perf_kwork_add_work a callback

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>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Cc: Colin Ian King <colin.i.king@gmail.com>
Cc: Dapeng Mi <dapeng1.mi@linux.intel.com>
Cc: Howard Chu <howardchu95@gmail.com>
Cc: Ilya Leoshkevich <iii@linux.ibm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Richter <tmricht@linux.ibm.com>
Cc: Veronika Molnarova <vmolnaro@redhat.com>
Cc: Weilin Wang <weilin.wang@intel.com>
Link: https://lore.kernel.org/r/20241119011644.971342-18-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Ian Rogers and committed by
Arnaldo Carvalho de Melo
9cf133c2 df487111

+8 -17
+2 -1
tools/perf/builtin-kwork.c
··· 1848 1848 } 1849 1849 } 1850 1850 1851 - struct kwork_work *perf_kwork_add_work(struct perf_kwork *kwork, 1851 + static struct kwork_work *perf_kwork_add_work(struct perf_kwork *kwork, 1852 1852 struct kwork_class *class, 1853 1853 struct kwork_work *key) 1854 1854 { ··· 2346 2346 .all_runtime = 0, 2347 2347 .all_count = 0, 2348 2348 .nr_skipped_events = { 0 }, 2349 + .add_work = perf_kwork_add_work, 2349 2350 }; 2350 2351 static const char default_report_sort_order[] = "runtime, max, count"; 2351 2352 static const char default_latency_sort_order[] = "avg, max, count";
+1 -1
tools/perf/util/bpf_kwork.c
··· 285 285 (bpf_trace->get_work_name(key, &tmp.name))) 286 286 return -1; 287 287 288 - work = perf_kwork_add_work(kwork, tmp.class, &tmp); 288 + work = kwork->add_work(kwork, tmp.class, &tmp); 289 289 if (work == NULL) 290 290 return -1; 291 291
+1 -1
tools/perf/util/bpf_kwork_top.c
··· 255 255 bpf_trace = kwork_class_bpf_supported_list[type]; 256 256 tmp.class = bpf_trace->class; 257 257 258 - work = perf_kwork_add_work(kwork, tmp.class, &tmp); 258 + work = kwork->add_work(kwork, tmp.class, &tmp); 259 259 if (!work) 260 260 return -1; 261 261
+4 -2
tools/perf/util/kwork.h
··· 252 252 * perf kwork top data 253 253 */ 254 254 struct kwork_top_stat top_stat; 255 - }; 256 255 257 - struct kwork_work *perf_kwork_add_work(struct perf_kwork *kwork, 256 + /* Add work callback. */ 257 + struct kwork_work *(*add_work)(struct perf_kwork *kwork, 258 258 struct kwork_class *class, 259 259 struct kwork_work *key); 260 + 261 + }; 260 262 261 263 #ifdef HAVE_BPF_SKEL 262 264
-12
tools/perf/util/python.c
··· 16 16 #include "thread_map.h" 17 17 #include "trace-event.h" 18 18 #include "mmap.h" 19 - #include "util/kwork.h" 20 19 #include "util/sample.h" 21 20 #include <internal/lib.h> 22 21 ··· 1295 1296 if (PyErr_Occurred()) 1296 1297 PyErr_SetString(PyExc_ImportError, "perf: Init failed!"); 1297 1298 return module; 1298 - } 1299 - 1300 - 1301 - /* The following are stubs to avoid dragging in builtin-* objects. */ 1302 - /* TODO: move the code out of the builtin-* file into util. */ 1303 - 1304 - struct kwork_work *perf_kwork_add_work(struct perf_kwork *kwork __maybe_unused, 1305 - struct kwork_class *class __maybe_unused, 1306 - struct kwork_work *key __maybe_unused) 1307 - { 1308 - return NULL; 1309 1299 }