OSDN Git Service

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 1d79801..d040fbc 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 c93b359..3257da5 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 7e05b8b..131b622 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 e413c13..74308c1 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 ef1c15e..eeee899 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 ca554f8..45f4f08 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 5be5fa2..b5941c7 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 1985d1a..1cf65db 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 c9bfe46..e848579 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 3bb860a..00ec05f 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;