Commit af663bd0 authored by Jiri Olsa's avatar Jiri Olsa Committed by Arnaldo Carvalho de Melo

libperf: Add threads to struct perf_evsel

Move 'threads' from tools/perf's evsel to libperf's perf_evsel struct.
Signed-off-by: default avatarJiri 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-53-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent fe1f61b3
...@@ -739,7 +739,7 @@ static int record__open(struct record *rec) ...@@ -739,7 +739,7 @@ static int record__open(struct record *rec)
evlist__for_each_entry(evlist, pos) { evlist__for_each_entry(evlist, pos) {
try_again: try_again:
if (evsel__open(pos, pos->core.cpus, pos->threads) < 0) { if (evsel__open(pos, pos->core.cpus, pos->core.threads) < 0) {
if (perf_evsel__fallback(pos, errno, msg, sizeof(msg))) { if (perf_evsel__fallback(pos, errno, msg, sizeof(msg))) {
if (verbose > 0) if (verbose > 0)
ui__warning("%s\n", msg); ui__warning("%s\n", msg);
......
...@@ -1899,7 +1899,7 @@ static struct scripting_ops *scripting_ops; ...@@ -1899,7 +1899,7 @@ static struct scripting_ops *scripting_ops;
static void __process_stat(struct evsel *counter, u64 tstamp) static void __process_stat(struct evsel *counter, u64 tstamp)
{ {
int nthreads = thread_map__nr(counter->threads); int nthreads = thread_map__nr(counter->core.threads);
int ncpus = perf_evsel__nr_cpus(counter); int ncpus = perf_evsel__nr_cpus(counter);
int cpu, thread; int cpu, thread;
static int header_printed; static int header_printed;
...@@ -1921,7 +1921,7 @@ static void __process_stat(struct evsel *counter, u64 tstamp) ...@@ -1921,7 +1921,7 @@ static void __process_stat(struct evsel *counter, u64 tstamp)
printf("%3d %8d %15" PRIu64 " %15" PRIu64 " %15" PRIu64 " %15" PRIu64 " %s\n", printf("%3d %8d %15" PRIu64 " %15" PRIu64 " %15" PRIu64 " %15" PRIu64 " %s\n",
counter->core.cpus->map[cpu], counter->core.cpus->map[cpu],
thread_map__pid(counter->threads, thread), thread_map__pid(counter->core.threads, thread),
counts->val, counts->val,
counts->ena, counts->ena,
counts->run, counts->run,
......
...@@ -6,12 +6,14 @@ ...@@ -6,12 +6,14 @@
#include <linux/perf_event.h> #include <linux/perf_event.h>
struct perf_cpu_map; struct perf_cpu_map;
struct perf_thread_map;
struct perf_evsel { struct perf_evsel {
struct list_head node; struct list_head node;
struct perf_event_attr attr; struct perf_event_attr attr;
struct perf_cpu_map *cpus; struct perf_cpu_map *cpus;
struct perf_cpu_map *own_cpus; struct perf_cpu_map *own_cpus;
struct perf_thread_map *threads;
}; };
#endif /* __LIBPERF_INTERNAL_EVSEL_H */ #endif /* __LIBPERF_INTERNAL_EVSEL_H */
...@@ -167,8 +167,8 @@ static void __perf_evlist__propagate_maps(struct evlist *evlist, ...@@ -167,8 +167,8 @@ static void __perf_evlist__propagate_maps(struct evlist *evlist,
evsel->core.cpus = perf_cpu_map__get(evsel->core.own_cpus); evsel->core.cpus = perf_cpu_map__get(evsel->core.own_cpus);
} }
perf_thread_map__put(evsel->threads); perf_thread_map__put(evsel->core.threads);
evsel->threads = perf_thread_map__get(evlist->threads); evsel->core.threads = perf_thread_map__get(evlist->threads);
} }
static void perf_evlist__propagate_maps(struct evlist *evlist) static void perf_evlist__propagate_maps(struct evlist *evlist)
...@@ -1407,7 +1407,7 @@ int evlist__open(struct evlist *evlist) ...@@ -1407,7 +1407,7 @@ int evlist__open(struct evlist *evlist)
perf_evlist__update_id_pos(evlist); perf_evlist__update_id_pos(evlist);
evlist__for_each_entry(evlist, evsel) { evlist__for_each_entry(evlist, evsel) {
err = evsel__open(evsel, evsel->core.cpus, evsel->threads); err = evsel__open(evsel, evsel->core.cpus, evsel->core.threads);
if (err < 0) if (err < 0)
goto out_err; goto out_err;
} }
......
...@@ -1327,7 +1327,7 @@ void perf_evsel__exit(struct evsel *evsel) ...@@ -1327,7 +1327,7 @@ void perf_evsel__exit(struct evsel *evsel)
cgroup__put(evsel->cgrp); cgroup__put(evsel->cgrp);
perf_cpu_map__put(evsel->core.cpus); perf_cpu_map__put(evsel->core.cpus);
perf_cpu_map__put(evsel->core.own_cpus); perf_cpu_map__put(evsel->core.own_cpus);
perf_thread_map__put(evsel->threads); perf_thread_map__put(evsel->core.threads);
zfree(&evsel->group_name); zfree(&evsel->group_name);
zfree(&evsel->name); zfree(&evsel->name);
perf_evsel__object.fini(evsel); perf_evsel__object.fini(evsel);
...@@ -3065,7 +3065,7 @@ static int store_evsel_ids(struct evsel *evsel, struct evlist *evlist) ...@@ -3065,7 +3065,7 @@ static int store_evsel_ids(struct evsel *evsel, struct evlist *evlist)
int perf_evsel__store_ids(struct evsel *evsel, struct evlist *evlist) int perf_evsel__store_ids(struct evsel *evsel, struct evlist *evlist)
{ {
struct perf_cpu_map *cpus = evsel->core.cpus; struct perf_cpu_map *cpus = evsel->core.cpus;
struct perf_thread_map *threads = evsel->threads; struct perf_thread_map *threads = evsel->core.threads;
if (perf_evsel__alloc_id(evsel, cpus->nr, threads->nr)) if (perf_evsel__alloc_id(evsel, cpus->nr, threads->nr))
return -ENOMEM; return -ENOMEM;
......
...@@ -123,7 +123,6 @@ struct evsel { ...@@ -123,7 +123,6 @@ struct evsel {
u64 db_id; u64 db_id;
struct cgroup *cgrp; struct cgroup *cgrp;
void *handler; void *handler;
struct perf_thread_map *threads;
unsigned int sample_size; unsigned int sample_size;
int id_pos; int id_pos;
int is_pos; int is_pos;
......
...@@ -1392,7 +1392,7 @@ process_stat(struct evsel *counter, int cpu, int thread, u64 tstamp, ...@@ -1392,7 +1392,7 @@ process_stat(struct evsel *counter, int cpu, int thread, u64 tstamp,
static void python_process_stat(struct perf_stat_config *config, static void python_process_stat(struct perf_stat_config *config,
struct evsel *counter, u64 tstamp) struct evsel *counter, u64 tstamp)
{ {
struct perf_thread_map *threads = counter->threads; struct perf_thread_map *threads = counter->core.threads;
struct perf_cpu_map *cpus = counter->core.cpus; struct perf_cpu_map *cpus = counter->core.cpus;
int cpu, thread; int cpu, thread;
......
...@@ -116,9 +116,9 @@ static void aggr_printout(struct perf_stat_config *config, ...@@ -116,9 +116,9 @@ static void aggr_printout(struct perf_stat_config *config,
case AGGR_THREAD: case AGGR_THREAD:
fprintf(config->output, "%*s-%*d%s", fprintf(config->output, "%*s-%*d%s",
config->csv_output ? 0 : 16, config->csv_output ? 0 : 16,
perf_thread_map__comm(evsel->threads, id), perf_thread_map__comm(evsel->core.threads, id),
config->csv_output ? 0 : -8, config->csv_output ? 0 : -8,
thread_map__pid(evsel->threads, id), thread_map__pid(evsel->core.threads, id),
config->csv_sep); config->csv_sep);
break; break;
case AGGR_GLOBAL: case AGGR_GLOBAL:
...@@ -744,7 +744,7 @@ static void print_aggr_thread(struct perf_stat_config *config, ...@@ -744,7 +744,7 @@ static void print_aggr_thread(struct perf_stat_config *config,
struct evsel *counter, char *prefix) struct evsel *counter, char *prefix)
{ {
FILE *output = config->output; FILE *output = config->output;
int nthreads = thread_map__nr(counter->threads); int nthreads = thread_map__nr(counter->core.threads);
int ncpus = cpu_map__nr(counter->core.cpus); int ncpus = cpu_map__nr(counter->core.cpus);
int thread, sorted_threads, id; int thread, sorted_threads, id;
struct perf_aggr_thread_value *buf; struct perf_aggr_thread_value *buf;
......
...@@ -158,7 +158,7 @@ static void perf_evsel__free_prev_raw_counts(struct evsel *evsel) ...@@ -158,7 +158,7 @@ static void perf_evsel__free_prev_raw_counts(struct evsel *evsel)
static int perf_evsel__alloc_stats(struct evsel *evsel, bool alloc_raw) static int perf_evsel__alloc_stats(struct evsel *evsel, bool alloc_raw)
{ {
int ncpus = perf_evsel__nr_cpus(evsel); int ncpus = perf_evsel__nr_cpus(evsel);
int nthreads = thread_map__nr(evsel->threads); int nthreads = thread_map__nr(evsel->core.threads);
if (perf_evsel__alloc_stat_priv(evsel) < 0 || if (perf_evsel__alloc_stat_priv(evsel) < 0 ||
perf_evsel__alloc_counts(evsel, ncpus, nthreads) < 0 || perf_evsel__alloc_counts(evsel, ncpus, nthreads) < 0 ||
...@@ -308,7 +308,7 @@ process_counter_values(struct perf_stat_config *config, struct evsel *evsel, ...@@ -308,7 +308,7 @@ process_counter_values(struct perf_stat_config *config, struct evsel *evsel,
static int process_counter_maps(struct perf_stat_config *config, static int process_counter_maps(struct perf_stat_config *config,
struct evsel *counter) struct evsel *counter)
{ {
int nthreads = thread_map__nr(counter->threads); int nthreads = thread_map__nr(counter->core.threads);
int ncpus = perf_evsel__nr_cpus(counter); int ncpus = perf_evsel__nr_cpus(counter);
int cpu, thread; int cpu, thread;
...@@ -485,7 +485,7 @@ int create_perf_stat_counter(struct evsel *evsel, ...@@ -485,7 +485,7 @@ int create_perf_stat_counter(struct evsel *evsel,
if (target__has_cpu(target) && !target__has_per_thread(target)) if (target__has_cpu(target) && !target__has_per_thread(target))
return perf_evsel__open_per_cpu(evsel, evsel__cpus(evsel)); return perf_evsel__open_per_cpu(evsel, evsel__cpus(evsel));
return perf_evsel__open_per_thread(evsel, evsel->threads); return perf_evsel__open_per_thread(evsel, evsel->core.threads);
} }
int perf_stat_synthesize_config(struct perf_stat_config *config, int perf_stat_synthesize_config(struct perf_stat_config *config,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment