perf thread_map: Reduce exposure of libperf internal API
authorIan Rogers <irogers@google.com>
Wed, 9 Nov 2022 18:49:12 +0000 (10:49 -0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 16 Nov 2022 15:17:15 +0000 (12:17 -0300)
Remove unnecessary include of internal threadmap.h and refcount.h in
thread_map.h. Switch to using public APIs when possible or including
the internal header file in the C file. Fix a transitive dependency in
openat-syscall.c broken by the clean up.

Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Nicolas Schier <nicolas@fjasle.eu>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: bpf@vger.kernel.org
Link: http://lore.kernel.org/lkml/20221109184914.1357295-13-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-stat.c
tools/perf/builtin-trace.c
tools/perf/tests/openat-syscall.c
tools/perf/tests/thread-map.c
tools/perf/util/bpf_counter.c
tools/perf/util/evsel.c
tools/perf/util/python.c
tools/perf/util/scripting-engines/trace-event-python.c
tools/perf/util/thread_map.c
tools/perf/util/thread_map.h

index 1d79801f4e844b23c1c96c4d5df6225067eee49b..d040fbcdcc5a76acada00a32a592e21baf547054 100644 (file)
@@ -93,6 +93,7 @@
 
 #include <linux/ctype.h>
 #include <perf/evlist.h>
+#include <internal/threadmap.h>
 
 #define DEFAULT_SEPARATOR      " "
 #define FREEZE_ON_SMI_PATH     "devices/cpu/freeze_on_smi"
index c93b359abc312ac82688dbed69cd2c51c50a40db..3257da5cad2312a1d43c39abd53cf8b45eb4b993 100644 (file)
@@ -4095,8 +4095,8 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
        }
 
        trace->multiple_threads = perf_thread_map__pid(evlist->core.threads, 0) == -1 ||
-                                 evlist->core.threads->nr > 1 ||
-                                 evlist__first(evlist)->core.attr.inherit;
+               perf_thread_map__nr(evlist->core.threads) > 1 ||
+               evlist__first(evlist)->core.attr.inherit;
 
        /*
         * Now that we already used evsel->core.attr to ask the kernel to setup the
index 7e05b8b5cc95ff1322b298e3e9e23cac2a1a10e6..131b62271bfa270bdc1ad44fd58783bc2d0d20d0 100644 (file)
@@ -7,6 +7,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
+#include <unistd.h>
 #include "thread_map.h"
 #include "evsel.h"
 #include "debug.h"
index e413c1387fcba35ef3f0ffd713663bc8757c7846..74308c1368fe1208dc11c3b8aa63a1271fc4e30f 100644 (file)
@@ -11,6 +11,7 @@
 #include "util/synthetic-events.h"
 #include <linux/zalloc.h>
 #include <perf/event.h>
+#include <internal/threadmap.h>
 
 struct perf_sample;
 struct perf_tool;
index ef1c15e4aeba5ed4ed6835b76df868b707b70ee5..eeee899fcf34f6e15d465179daf01050ebff53cb 100644 (file)
@@ -561,7 +561,7 @@ static int bperf__load(struct evsel *evsel, struct target *target)
 
                if (filter_type == BPERF_FILTER_PID ||
                    filter_type == BPERF_FILTER_TGID)
-                       key = evsel->core.threads->map[i].pid;
+                       key = perf_thread_map__pid(evsel->core.threads, i);
                else if (filter_type == BPERF_FILTER_CPU)
                        key = evsel->core.cpus->map[i].cpu;
                else
index ca554f8202f949eb03b41dcf651d096109a51a1e..45f4f08399ae1bd50e5415115f67bf1b6de81786 100644 (file)
@@ -53,6 +53,7 @@
 #include "util/parse-branch-options.h"
 #include <internal/xyarray.h>
 #include <internal/lib.h>
+#include <internal/threadmap.h>
 
 #include <linux/ctype.h>
 
index 5be5fa2391de2891a1e1166d633a2c19dfd4f7b4..b5941c74a0d64e100973603f0d92921947fbe984 100644 (file)
@@ -718,17 +718,17 @@ static Py_ssize_t pyrf_thread_map__length(PyObject *obj)
 {
        struct pyrf_thread_map *pthreads = (void *)obj;
 
-       return pthreads->threads->nr;
+       return perf_thread_map__nr(pthreads->threads);
 }
 
 static PyObject *pyrf_thread_map__item(PyObject *obj, Py_ssize_t i)
 {
        struct pyrf_thread_map *pthreads = (void *)obj;
 
-       if (i >= pthreads->threads->nr)
+       if (i >= perf_thread_map__nr(pthreads->threads))
                return NULL;
 
-       return Py_BuildValue("i", pthreads->threads->map[i]);
+       return Py_BuildValue("i", perf_thread_map__pid(pthreads->threads, i));
 }
 
 static PySequenceMethods pyrf_thread_map__sequence_methods = {
index 1985d1a42a224b90cd31884ed5e7072a41429dad..1cf65db8f861db44641b5c7fb6e6c20377e1e0f9 100644 (file)
@@ -1654,7 +1654,7 @@ static void python_process_stat(struct perf_stat_config *config,
        struct perf_cpu_map *cpus = counter->core.cpus;
        int cpu, thread;
 
-       for (thread = 0; thread < threads->nr; thread++) {
+       for (thread = 0; thread < perf_thread_map__nr(threads); thread++) {
                for (cpu = 0; cpu < perf_cpu_map__nr(cpus); cpu++) {
                        process_stat(counter, perf_cpu_map__cpu(cpus, cpu),
                                     perf_thread_map__pid(threads, thread), tstamp,
index c9bfe4696943b10e4c8a04abd5ed1a55d6207545..e848579e61a86330856a8cb2ae8f7c8564bfd5c5 100644 (file)
@@ -18,6 +18,7 @@
 #include "thread_map.h"
 #include "debug.h"
 #include "event.h"
+#include <internal/threadmap.h>
 
 /* Skip "." and ".." directories */
 static int filter(const struct dirent *dir)
index 3bb860a32b8e9253a7bb29ea9b58fb6eacabefd8..00ec05fc1656dbe6559450b1d1521e2a9e6c0f76 100644 (file)
@@ -4,8 +4,6 @@
 
 #include <sys/types.h>
 #include <stdio.h>
-#include <linux/refcount.h>
-#include <internal/threadmap.h>
 #include <perf/threadmap.h>
 
 struct perf_record_thread_map;