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

perf cpu_map: Add data arg to cpu_map__build_map callback

Adding data arg to cpu_map__build_map callback, so we could pass data
along to the callback. It'll be needed in following patches to retrieve
topology info from perf.data.
Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
Tested-by: default avatarKan Liang <kan.liang@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1444992092-17897-41-git-send-email-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent f1cbb8f3
...@@ -944,6 +944,16 @@ static int stat__set_big_num(const struct option *opt __maybe_unused, ...@@ -944,6 +944,16 @@ static int stat__set_big_num(const struct option *opt __maybe_unused,
return 0; return 0;
} }
static int perf_stat__get_socket(struct cpu_map *map, int cpu)
{
return cpu_map__get_socket(map, cpu, NULL);
}
static int perf_stat__get_core(struct cpu_map *map, int cpu)
{
return cpu_map__get_core(map, cpu, NULL);
}
static int perf_stat_init_aggr_mode(void) static int perf_stat_init_aggr_mode(void)
{ {
switch (stat_config.aggr_mode) { switch (stat_config.aggr_mode) {
...@@ -952,14 +962,14 @@ static int perf_stat_init_aggr_mode(void) ...@@ -952,14 +962,14 @@ static int perf_stat_init_aggr_mode(void)
perror("cannot build socket map"); perror("cannot build socket map");
return -1; return -1;
} }
aggr_get_id = cpu_map__get_socket; aggr_get_id = perf_stat__get_socket;
break; break;
case AGGR_CORE: case AGGR_CORE:
if (cpu_map__build_core_map(evsel_list->cpus, &aggr_map)) { if (cpu_map__build_core_map(evsel_list->cpus, &aggr_map)) {
perror("cannot build core map"); perror("cannot build core map");
return -1; return -1;
} }
aggr_get_id = cpu_map__get_core; aggr_get_id = perf_stat__get_core;
break; break;
case AGGR_NONE: case AGGR_NONE:
case AGGR_GLOBAL: case AGGR_GLOBAL:
......
...@@ -73,10 +73,10 @@ static int check_cpu_topology(char *path, struct cpu_map *map) ...@@ -73,10 +73,10 @@ static int check_cpu_topology(char *path, struct cpu_map *map)
for (i = 0; i < map->nr; i++) { for (i = 0; i < map->nr; i++) {
TEST_ASSERT_VAL("Core ID doesn't match", TEST_ASSERT_VAL("Core ID doesn't match",
(session->header.env.cpu[map->map[i]].core_id == (cpu_map__get_core(map, i) & 0xffff))); (session->header.env.cpu[map->map[i]].core_id == (cpu_map__get_core(map, i, NULL) & 0xffff)));
TEST_ASSERT_VAL("Socket ID doesn't match", TEST_ASSERT_VAL("Socket ID doesn't match",
(session->header.env.cpu[map->map[i]].socket_id == cpu_map__get_socket(map, i))); (session->header.env.cpu[map->map[i]].socket_id == cpu_map__get_socket(map, i, NULL)));
} }
perf_session__delete(session); perf_session__delete(session);
......
...@@ -241,7 +241,7 @@ int cpu_map__get_socket_id(int cpu) ...@@ -241,7 +241,7 @@ int cpu_map__get_socket_id(int cpu)
return ret ?: value; return ret ?: value;
} }
int cpu_map__get_socket(struct cpu_map *map, int idx) int cpu_map__get_socket(struct cpu_map *map, int idx, void *data __maybe_unused)
{ {
int cpu; int cpu;
...@@ -259,7 +259,8 @@ static int cmp_ids(const void *a, const void *b) ...@@ -259,7 +259,8 @@ static int cmp_ids(const void *a, const void *b)
} }
int cpu_map__build_map(struct cpu_map *cpus, struct cpu_map **res, int cpu_map__build_map(struct cpu_map *cpus, struct cpu_map **res,
int (*f)(struct cpu_map *map, int cpu)) int (*f)(struct cpu_map *map, int cpu, void *data),
void *data)
{ {
struct cpu_map *c; struct cpu_map *c;
int nr = cpus->nr; int nr = cpus->nr;
...@@ -271,7 +272,7 @@ int cpu_map__build_map(struct cpu_map *cpus, struct cpu_map **res, ...@@ -271,7 +272,7 @@ int cpu_map__build_map(struct cpu_map *cpus, struct cpu_map **res,
return -1; return -1;
for (cpu = 0; cpu < nr; cpu++) { for (cpu = 0; cpu < nr; cpu++) {
s1 = f(cpus, cpu); s1 = f(cpus, cpu, data);
for (s2 = 0; s2 < c->nr; s2++) { for (s2 = 0; s2 < c->nr; s2++) {
if (s1 == c->map[s2]) if (s1 == c->map[s2])
break; break;
...@@ -295,7 +296,7 @@ int cpu_map__get_core_id(int cpu) ...@@ -295,7 +296,7 @@ int cpu_map__get_core_id(int cpu)
return ret ?: value; return ret ?: value;
} }
int cpu_map__get_core(struct cpu_map *map, int idx) int cpu_map__get_core(struct cpu_map *map, int idx, void *data)
{ {
int cpu, s; int cpu, s;
...@@ -306,7 +307,7 @@ int cpu_map__get_core(struct cpu_map *map, int idx) ...@@ -306,7 +307,7 @@ int cpu_map__get_core(struct cpu_map *map, int idx)
cpu = cpu_map__get_core_id(cpu); cpu = cpu_map__get_core_id(cpu);
s = cpu_map__get_socket(map, idx); s = cpu_map__get_socket(map, idx, data);
if (s == -1) if (s == -1)
return -1; return -1;
...@@ -321,12 +322,12 @@ int cpu_map__get_core(struct cpu_map *map, int idx) ...@@ -321,12 +322,12 @@ int cpu_map__get_core(struct cpu_map *map, int idx)
int cpu_map__build_socket_map(struct cpu_map *cpus, struct cpu_map **sockp) int cpu_map__build_socket_map(struct cpu_map *cpus, struct cpu_map **sockp)
{ {
return cpu_map__build_map(cpus, sockp, cpu_map__get_socket); return cpu_map__build_map(cpus, sockp, cpu_map__get_socket, NULL);
} }
int cpu_map__build_core_map(struct cpu_map *cpus, struct cpu_map **corep) int cpu_map__build_core_map(struct cpu_map *cpus, struct cpu_map **corep)
{ {
return cpu_map__build_map(cpus, corep, cpu_map__get_core); return cpu_map__build_map(cpus, corep, cpu_map__get_core, NULL);
} }
/* setup simple routines to easily access node numbers given a cpu number */ /* setup simple routines to easily access node numbers given a cpu number */
......
...@@ -19,9 +19,9 @@ struct cpu_map *cpu_map__dummy_new(void); ...@@ -19,9 +19,9 @@ struct cpu_map *cpu_map__dummy_new(void);
struct cpu_map *cpu_map__read(FILE *file); struct cpu_map *cpu_map__read(FILE *file);
size_t cpu_map__fprintf(struct cpu_map *map, FILE *fp); size_t cpu_map__fprintf(struct cpu_map *map, FILE *fp);
int cpu_map__get_socket_id(int cpu); int cpu_map__get_socket_id(int cpu);
int cpu_map__get_socket(struct cpu_map *map, int idx); int cpu_map__get_socket(struct cpu_map *map, int idx, void *data);
int cpu_map__get_core_id(int cpu); int cpu_map__get_core_id(int cpu);
int cpu_map__get_core(struct cpu_map *map, int idx); int cpu_map__get_core(struct cpu_map *map, int idx, void *data);
int cpu_map__build_socket_map(struct cpu_map *cpus, struct cpu_map **sockp); int cpu_map__build_socket_map(struct cpu_map *cpus, struct cpu_map **sockp);
int cpu_map__build_core_map(struct cpu_map *cpus, struct cpu_map **corep); int cpu_map__build_core_map(struct cpu_map *cpus, struct cpu_map **corep);
...@@ -88,5 +88,6 @@ static inline int cpu__get_node(int cpu) ...@@ -88,5 +88,6 @@ static inline int cpu__get_node(int cpu)
} }
int cpu_map__build_map(struct cpu_map *cpus, struct cpu_map **res, int cpu_map__build_map(struct cpu_map *cpus, struct cpu_map **res,
int (*f)(struct cpu_map *map, int cpu)); int (*f)(struct cpu_map *map, int cpu, void *data),
void *data);
#endif /* __PERF_CPUMAP_H */ #endif /* __PERF_CPUMAP_H */
...@@ -230,7 +230,7 @@ static int check_per_pkg(struct perf_evsel *counter, ...@@ -230,7 +230,7 @@ static int check_per_pkg(struct perf_evsel *counter,
if (!(vals->run && vals->ena)) if (!(vals->run && vals->ena))
return 0; return 0;
s = cpu_map__get_socket(cpus, cpu); s = cpu_map__get_socket(cpus, cpu, NULL);
if (s < 0) if (s < 0)
return -1; return -1;
......
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