Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf annotate: Use perf_env when obtaining the arch name

Paving the way to reuse these routines in other areas, like when
generating errno tables.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Thomas Richter <tmricht@linux.vnet.ibm.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: https://lkml.kernel.org/n/tip-rh1qv051vb8gfdcswskrn53h@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

+8 -17
+8 -9
tools/perf/util/annotate.c
··· 1420 1420 return 0; 1421 1421 } 1422 1422 1423 - static const char *annotate__norm_arch(const char *arch_name) 1423 + static const char *perf_env__arch(struct perf_env *env) 1424 1424 { 1425 1425 struct utsname uts; 1426 + char *arch_name; 1426 1427 1427 - if (!arch_name) { /* Assume we are annotating locally. */ 1428 + if (!env) { /* Assume local operation */ 1428 1429 if (uname(&uts) < 0) 1429 1430 return NULL; 1430 1431 arch_name = uts.machine; 1431 - } 1432 - return normalize_arch((char *)arch_name); 1432 + } else 1433 + arch_name = env->arch; 1434 + 1435 + return normalize_arch(arch_name); 1433 1436 } 1434 1437 1435 1438 static int symbol__disassemble(struct symbol *sym, struct annotate_args *args) ··· 1633 1630 .evsel = evsel, 1634 1631 }; 1635 1632 struct perf_env *env = perf_evsel__env(evsel); 1636 - const char *arch_name = NULL; 1633 + const char *arch_name = perf_env__arch(env); 1637 1634 struct arch *arch; 1638 1635 int err; 1639 1636 1640 - if (evsel) 1641 - arch_name = perf_evsel__env_arch(evsel); 1642 - 1643 - arch_name = annotate__norm_arch(arch_name); 1644 1637 if (!arch_name) 1645 1638 return -1; 1646 1639
-7
tools/perf/util/evsel.c
··· 2835 2835 perf_evsel__name(evsel)); 2836 2836 } 2837 2837 2838 - char *perf_evsel__env_arch(struct perf_evsel *evsel) 2839 - { 2840 - if (evsel && evsel->evlist && evsel->evlist->env) 2841 - return evsel->evlist->env->arch; 2842 - return NULL; 2843 - } 2844 - 2845 2838 struct perf_env *perf_evsel__env(struct perf_evsel *evsel) 2846 2839 { 2847 2840 if (evsel && evsel->evlist)
-1
tools/perf/util/evsel.h
··· 446 446 int perf_event_attr__fprintf(FILE *fp, struct perf_event_attr *attr, 447 447 attr__fprintf_f attr__fprintf, void *priv); 448 448 449 - char *perf_evsel__env_arch(struct perf_evsel *evsel); 450 449 struct perf_env *perf_evsel__env(struct perf_evsel *evsel); 451 450 452 451 #endif /* __PERF_EVSEL_H */