libperf: Add own_cpus to struct perf_evsel
authorJiri Olsa <jolsa@kernel.org>
Sun, 21 Jul 2019 11:24:38 +0000 (13:24 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 29 Jul 2019 21:34:45 +0000 (18:34 -0300)
Move own_cpus from tools/perf's evsel to libbpf's perf_evsel.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexey Budankov <alexey.budankov@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20190721112506.12306-52-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/lib/include/internal/evsel.h
tools/perf/tests/event_update.c
tools/perf/util/evlist.c
tools/perf/util/evsel.c
tools/perf/util/evsel.h
tools/perf/util/header.c
tools/perf/util/parse-events.c

index b2c76e1a62449454a789b55cc9cdfd4ebcba501d..d15d8ccfa3dc2007a84e993eebd7c187fb059d8f 100644 (file)
@@ -11,6 +11,7 @@ struct perf_evsel {
        struct list_head         node;
        struct perf_event_attr   attr;
        struct perf_cpu_map     *cpus;
+       struct perf_cpu_map     *own_cpus;
 };
 
 #endif /* __LIBPERF_INTERNAL_EVSEL_H */
index 2bc5145284c0f44cf7581576036e7748affc7605..c37ff49c07c70e3a0f2042ccd61b1ee5749ac159 100644 (file)
@@ -109,11 +109,11 @@ int test__event_update(struct test *test __maybe_unused, int subtest __maybe_unu
        TEST_ASSERT_VAL("failed to synthesize attr update name",
                        !perf_event__synthesize_event_update_name(&tmp.tool, evsel, process_event_name));
 
-       evsel->own_cpus = perf_cpu_map__new("1,2,3");
+       evsel->core.own_cpus = perf_cpu_map__new("1,2,3");
 
        TEST_ASSERT_VAL("failed to synthesize attr update cpus",
                        !perf_event__synthesize_event_update_cpus(&tmp.tool, evsel, process_event_cpus));
 
-       perf_cpu_map__put(evsel->own_cpus);
+       perf_cpu_map__put(evsel->core.own_cpus);
        return 0;
 }
index 713968130d1d2eed72772b7f9e7efaef9ae912a4..d203305ac187827218d1cbb3199e8ae0cac43262 100644 (file)
@@ -159,12 +159,12 @@ static void __perf_evlist__propagate_maps(struct evlist *evlist,
         * We already have cpus for evsel (via PMU sysfs) so
         * keep it, if there's no target cpu list defined.
         */
-       if (!evsel->own_cpus || evlist->has_user_cpus) {
+       if (!evsel->core.own_cpus || evlist->has_user_cpus) {
                perf_cpu_map__put(evsel->core.cpus);
                evsel->core.cpus = perf_cpu_map__get(evlist->cpus);
-       } else if (evsel->core.cpus != evsel->own_cpus) {
+       } else if (evsel->core.cpus != evsel->core.own_cpus) {
                perf_cpu_map__put(evsel->core.cpus);
-               evsel->core.cpus = perf_cpu_map__get(evsel->own_cpus);
+               evsel->core.cpus = perf_cpu_map__get(evsel->core.own_cpus);
        }
 
        perf_thread_map__put(evsel->threads);
index 651f66ee902ef9539f90ca089264c3a12f6ac1c1..c5f6ee6d5f3b25be07135991177bbe70add6e03c 100644 (file)
@@ -1125,7 +1125,7 @@ void perf_evsel__config(struct evsel *evsel, struct record_opts *opts,
                attr->exclude_user   = 1;
        }
 
-       if (evsel->own_cpus || evsel->unit)
+       if (evsel->core.own_cpus || evsel->unit)
                evsel->core.attr.read_format |= PERF_FORMAT_ID;
 
        /*
@@ -1326,7 +1326,7 @@ void perf_evsel__exit(struct evsel *evsel)
        perf_evsel__free_config_terms(evsel);
        cgroup__put(evsel->cgrp);
        perf_cpu_map__put(evsel->core.cpus);
-       perf_cpu_map__put(evsel->own_cpus);
+       perf_cpu_map__put(evsel->core.own_cpus);
        perf_thread_map__put(evsel->threads);
        zfree(&evsel->group_name);
        zfree(&evsel->name);
index 8ece5edf65acce6854d2daadb48c783844c3fd33..2eff837f10bdba3e46cffa9236a1249e7255ddbf 100644 (file)
@@ -123,7 +123,6 @@ struct evsel {
        u64                     db_id;
        struct cgroup           *cgrp;
        void                    *handler;
-       struct perf_cpu_map     *own_cpus;
        struct perf_thread_map *threads;
        unsigned int            sample_size;
        int                     id_pos;
index fa914ba8cd56aabcf0a1898e8921bdd1c3dbf4ac..f97df418d661a9b85ad49fb4d29eadefd16c5d0c 100644 (file)
@@ -3861,10 +3861,10 @@ perf_event__synthesize_event_update_cpus(struct perf_tool *tool,
        int max, err;
        u16 type;
 
-       if (!evsel->own_cpus)
+       if (!evsel->core.own_cpus)
                return 0;
 
-       ev = cpu_map_data__alloc(evsel->own_cpus, &size, &type, &max);
+       ev = cpu_map_data__alloc(evsel->core.own_cpus, &size, &type, &max);
        if (!ev)
                return -ENOMEM;
 
@@ -3874,7 +3874,7 @@ perf_event__synthesize_event_update_cpus(struct perf_tool *tool,
        ev->id   = evsel->id[0];
 
        cpu_map_data__synthesize((struct cpu_map_data *) ev->data,
-                                evsel->own_cpus,
+                                evsel->core.own_cpus,
                                 type, max);
 
        err = process(tool, (union perf_event*) ev, NULL, NULL);
@@ -3985,7 +3985,7 @@ int perf_event__synthesize_extra_attr(struct perf_tool *tool,
                        }
                }
 
-               if (counter->own_cpus) {
+               if (counter->core.own_cpus) {
                        err = perf_event__synthesize_event_update_cpus(tool, counter, process);
                        if (err < 0) {
                                pr_err("Couldn't synthesize evsel cpus.\n");
@@ -4082,7 +4082,7 @@ int perf_event__process_event_update(struct perf_tool *tool __maybe_unused,
 
                map = cpu_map__new_data(&ev_cpus->cpus);
                if (map)
-                       evsel->own_cpus = map;
+                       evsel->core.own_cpus = map;
                else
                        pr_err("failed to get event_update cpus\n");
        default:
index a27771eca9c2adc123c882dabc65b7d1ab551486..8182b1e66ec6cf9c0ac778fc7629ab4779b9eee9 100644 (file)
@@ -334,7 +334,7 @@ __add_event(struct list_head *list, int *idx,
 
        (*idx)++;
        evsel->core.cpus   = perf_cpu_map__get(cpus);
-       evsel->own_cpus    = perf_cpu_map__get(cpus);
+       evsel->core.own_cpus = perf_cpu_map__get(cpus);
        evsel->system_wide = pmu ? pmu->is_uncore : false;
        evsel->auto_merge_stats = auto_merge_stats;