OSDN Git Service

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 b2c76e1..d15d8cc 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 2bc5145..c37ff49 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 7139681..d203305 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 651f66e..c5f6ee6 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 8ece5ed..2eff837 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 fa914ba..f97df41 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 a27771e..8182b1e 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;