From: Kan Liang <[email protected]> In perf report, read cpu max freq and msr type from header.
Signed-off-by: Kan Liang <[email protected]> --- tools/perf/builtin-report.c | 3 +++ tools/perf/util/cpumap.h | 1 + tools/perf/util/header.c | 21 +++++++++++++++++++++ tools/perf/util/header.h | 2 ++ tools/perf/util/session.h | 1 + 5 files changed, 28 insertions(+) diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 95a4771..2a32e9a 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -818,6 +818,9 @@ repeat: symbol_conf.cumulate_callchain = false; } + cpu_max_freq = session->header.env.cpu_max_freq; + msr_pmu_type = perf_header_find_pmu_type(session, "msr"); + if (setup_sorting() < 0) { if (sort_order) parse_options_usage(report_usage, options, "s", 1); diff --git a/tools/perf/util/cpumap.h b/tools/perf/util/cpumap.h index 6784677..70ac686 100644 --- a/tools/perf/util/cpumap.h +++ b/tools/perf/util/cpumap.h @@ -56,6 +56,7 @@ static inline bool cpu_map__empty(const struct cpu_map *map) int max_cpu_num; int max_node_num; int *cpunode_map; +unsigned int cpu_max_freq; int cpu__setup_cpunode_map(void); unsigned int get_cpu_max_freq(void); diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index 287a488..e83681b 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c @@ -2847,3 +2847,24 @@ int perf_event__process_build_id(struct perf_tool *tool __maybe_unused, session); return 0; } + +int perf_header_find_pmu_type(struct perf_session *session, const char *name) +{ + u32 pmu_num = session->header.env.nr_pmu_mappings; + u32 type; + char *str, *tmp; + + str = session->header.env.pmu_mappings; + while (pmu_num--) { + type = strtoul(str, &tmp, 0); + if (*tmp != ':') { + pr_err("unable to read pmu mappings from head\n"); + return -1; + } + str = tmp + 1; + if (!strcmp(str, name)) + return type; + str += strlen(str) + 1; + } + return -1; +} diff --git a/tools/perf/util/header.h b/tools/perf/util/header.h index a646025..233644b 100644 --- a/tools/perf/util/header.h +++ b/tools/perf/util/header.h @@ -150,6 +150,8 @@ int perf_event__process_build_id(struct perf_tool *tool, struct perf_session *session); bool is_perf_magic(u64 magic); +int perf_header_find_pmu_type(struct perf_session *s, const char *name); + #define NAME_ALIGN 64 int write_padded(int fd, const void *bf, size_t count, size_t count_aligned); diff --git a/tools/perf/util/session.h b/tools/perf/util/session.h index b44afc7..a339338 100644 --- a/tools/perf/util/session.h +++ b/tools/perf/util/session.h @@ -17,6 +17,7 @@ struct thread; struct auxtrace; struct itrace_synth_opts; +unsigned int msr_pmu_type; struct perf_session { struct perf_header header; -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

