diff options
| -rw-r--r-- | tools/perf/builtin-annotate.c | 14 | ||||
| -rw-r--r-- | tools/perf/builtin-buildid-list.c | 5 | ||||
| -rw-r--r-- | tools/perf/builtin-diff.c | 8 | ||||
| -rw-r--r-- | tools/perf/builtin-kmem.c | 5 | ||||
| -rw-r--r-- | tools/perf/builtin-probe.c | 14 | ||||
| -rw-r--r-- | tools/perf/builtin-record.c | 4 | ||||
| -rw-r--r-- | tools/perf/builtin-report.c | 7 | ||||
| -rw-r--r-- | tools/perf/builtin-sched.c | 5 | ||||
| -rw-r--r-- | tools/perf/builtin-timechart.c | 5 | ||||
| -rw-r--r-- | tools/perf/builtin-top.c | 6 | ||||
| -rw-r--r-- | tools/perf/builtin-trace.c | 4 | ||||
| -rw-r--r-- | tools/perf/util/session.c | 5 | ||||
| -rw-r--r-- | tools/perf/util/session.h | 5 | ||||
| -rw-r--r-- | tools/perf/util/symbol.c | 38 | ||||
| -rw-r--r-- | tools/perf/util/symbol.h | 9 |
15 files changed, 54 insertions, 80 deletions
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index 2e2855a685c6..e656e25f1c14 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c | |||
| @@ -51,11 +51,6 @@ struct sym_priv { | |||
| 51 | struct sym_ext *ext; | 51 | struct sym_ext *ext; |
| 52 | }; | 52 | }; |
| 53 | 53 | ||
| 54 | static struct symbol_conf symbol_conf = { | ||
| 55 | .priv_size = sizeof(struct sym_priv), | ||
| 56 | .try_vmlinux_path = true, | ||
| 57 | }; | ||
| 58 | |||
| 59 | static const char *sym_hist_filter; | 54 | static const char *sym_hist_filter; |
| 60 | 55 | ||
| 61 | static int symbol_filter(struct map *map __used, struct symbol *sym) | 56 | static int symbol_filter(struct map *map __used, struct symbol *sym) |
| @@ -464,10 +459,10 @@ static struct perf_event_ops event_ops = { | |||
| 464 | 459 | ||
| 465 | static int __cmd_annotate(void) | 460 | static int __cmd_annotate(void) |
| 466 | { | 461 | { |
| 467 | struct perf_session *session = perf_session__new(input_name, O_RDONLY, | ||
| 468 | force, &symbol_conf); | ||
| 469 | int ret; | 462 | int ret; |
| 463 | struct perf_session *session; | ||
| 470 | 464 | ||
| 465 | session = perf_session__new(input_name, O_RDONLY, force); | ||
| 471 | if (session == NULL) | 466 | if (session == NULL) |
| 472 | return -ENOMEM; | 467 | return -ENOMEM; |
| 473 | 468 | ||
| @@ -523,7 +518,10 @@ static const struct option options[] = { | |||
| 523 | 518 | ||
| 524 | int cmd_annotate(int argc, const char **argv, const char *prefix __used) | 519 | int cmd_annotate(int argc, const char **argv, const char *prefix __used) |
| 525 | { | 520 | { |
| 526 | if (symbol__init(&symbol_conf) < 0) | 521 | symbol_conf.priv_size = sizeof(struct sym_priv); |
| 522 | symbol_conf.try_vmlinux_path = true; | ||
| 523 | |||
| 524 | if (symbol__init() < 0) | ||
| 527 | return -1; | 525 | return -1; |
| 528 | 526 | ||
| 529 | argc = parse_options(argc, argv, options, annotate_usage, 0); | 527 | argc = parse_options(argc, argv, options, annotate_usage, 0); |
diff --git a/tools/perf/builtin-buildid-list.c b/tools/perf/builtin-buildid-list.c index 7c36e4b2eccf..e693e6777af5 100644 --- a/tools/perf/builtin-buildid-list.c +++ b/tools/perf/builtin-buildid-list.c | |||
| @@ -54,8 +54,9 @@ static int perf_file_section__process_buildids(struct perf_file_section *self, | |||
| 54 | static int __cmd_buildid_list(void) | 54 | static int __cmd_buildid_list(void) |
| 55 | { | 55 | { |
| 56 | int err = -1; | 56 | int err = -1; |
| 57 | struct perf_session *session = perf_session__new(input_name, O_RDONLY, | 57 | struct perf_session *session; |
| 58 | force, NULL); | 58 | |
| 59 | session = perf_session__new(input_name, O_RDONLY, force); | ||
| 59 | if (session == NULL) | 60 | if (session == NULL) |
| 60 | return -1; | 61 | return -1; |
| 61 | 62 | ||
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c index 0d528018ffb8..67328d106994 100644 --- a/tools/perf/builtin-diff.c +++ b/tools/perf/builtin-diff.c | |||
| @@ -21,8 +21,6 @@ static char const *input_old = "perf.data.old", | |||
| 21 | static int force; | 21 | static int force; |
| 22 | static bool show_percent; | 22 | static bool show_percent; |
| 23 | 23 | ||
| 24 | struct symbol_conf symbol_conf; | ||
| 25 | |||
| 26 | static int perf_session__add_hist_entry(struct perf_session *self, | 24 | static int perf_session__add_hist_entry(struct perf_session *self, |
| 27 | struct addr_location *al, u64 count) | 25 | struct addr_location *al, u64 count) |
| 28 | { | 26 | { |
| @@ -226,8 +224,8 @@ static int __cmd_diff(void) | |||
| 226 | int ret, i; | 224 | int ret, i; |
| 227 | struct perf_session *session[2]; | 225 | struct perf_session *session[2]; |
| 228 | 226 | ||
| 229 | session[0] = perf_session__new(input_old, O_RDONLY, force, &symbol_conf); | 227 | session[0] = perf_session__new(input_old, O_RDONLY, force); |
| 230 | session[1] = perf_session__new(input_new, O_RDONLY, force, &symbol_conf); | 228 | session[1] = perf_session__new(input_new, O_RDONLY, force); |
| 231 | if (session[0] == NULL || session[1] == NULL) | 229 | if (session[0] == NULL || session[1] == NULL) |
| 232 | return -ENOMEM; | 230 | return -ENOMEM; |
| 233 | 231 | ||
| @@ -267,7 +265,7 @@ static const struct option options[] = { | |||
| 267 | 265 | ||
| 268 | int cmd_diff(int argc, const char **argv, const char *prefix __used) | 266 | int cmd_diff(int argc, const char **argv, const char *prefix __used) |
| 269 | { | 267 | { |
| 270 | if (symbol__init(&symbol_conf) < 0) | 268 | if (symbol__init() < 0) |
| 271 | return -1; | 269 | return -1; |
| 272 | 270 | ||
| 273 | setup_sorting(diff_usage, options); | 271 | setup_sorting(diff_usage, options); |
diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c index dda60869faad..e078797ab1f1 100644 --- a/tools/perf/builtin-kmem.c +++ b/tools/perf/builtin-kmem.c | |||
| @@ -505,8 +505,7 @@ static void sort_result(void) | |||
| 505 | static int __cmd_kmem(void) | 505 | static int __cmd_kmem(void) |
| 506 | { | 506 | { |
| 507 | int err; | 507 | int err; |
| 508 | struct perf_session *session = perf_session__new(input_name, O_RDONLY, | 508 | struct perf_session *session = perf_session__new(input_name, O_RDONLY, 0); |
| 509 | 0, NULL); | ||
| 510 | if (session == NULL) | 509 | if (session == NULL) |
| 511 | return -ENOMEM; | 510 | return -ENOMEM; |
| 512 | 511 | ||
| @@ -767,7 +766,7 @@ static int __cmd_record(int argc, const char **argv) | |||
| 767 | 766 | ||
| 768 | int cmd_kmem(int argc, const char **argv, const char *prefix __used) | 767 | int cmd_kmem(int argc, const char **argv, const char *prefix __used) |
| 769 | { | 768 | { |
| 770 | symbol__init(0); | 769 | symbol__init(); |
| 771 | 770 | ||
| 772 | argc = parse_options(argc, argv, kmem_options, kmem_usage, 0); | 771 | argc = parse_options(argc, argv, kmem_options, kmem_usage, 0); |
| 773 | 772 | ||
diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c index 520b064b46d8..7e741f54d798 100644 --- a/tools/perf/builtin-probe.c +++ b/tools/perf/builtin-probe.c | |||
| @@ -57,7 +57,6 @@ static struct { | |||
| 57 | int nr_probe; | 57 | int nr_probe; |
| 58 | struct probe_point probes[MAX_PROBES]; | 58 | struct probe_point probes[MAX_PROBES]; |
| 59 | struct strlist *dellist; | 59 | struct strlist *dellist; |
| 60 | struct symbol_conf conf; | ||
| 61 | struct perf_session *psession; | 60 | struct perf_session *psession; |
| 62 | struct map *kmap; | 61 | struct map *kmap; |
| 63 | } session; | 62 | } session; |
| @@ -151,7 +150,7 @@ static const struct option options[] = { | |||
| 151 | OPT_BOOLEAN('v', "verbose", &verbose, | 150 | OPT_BOOLEAN('v', "verbose", &verbose, |
| 152 | "be more verbose (show parsed arguments, etc)"), | 151 | "be more verbose (show parsed arguments, etc)"), |
| 153 | #ifndef NO_LIBDWARF | 152 | #ifndef NO_LIBDWARF |
| 154 | OPT_STRING('k', "vmlinux", &session.conf.vmlinux_name, | 153 | OPT_STRING('k', "vmlinux", &symbol_conf.vmlinux_name, |
| 155 | "file", "vmlinux pathname"), | 154 | "file", "vmlinux pathname"), |
| 156 | #endif | 155 | #endif |
| 157 | OPT_BOOLEAN('l', "list", &session.list_events, | 156 | OPT_BOOLEAN('l', "list", &session.list_events, |
| @@ -224,13 +223,12 @@ int cmd_probe(int argc, const char **argv, const char *prefix __used) | |||
| 224 | } | 223 | } |
| 225 | 224 | ||
| 226 | /* Initialize symbol maps for vmlinux */ | 225 | /* Initialize symbol maps for vmlinux */ |
| 227 | session.conf.sort_by_name = true; | 226 | symbol_conf.sort_by_name = true; |
| 228 | if (session.conf.vmlinux_name == NULL) | 227 | if (symbol_conf.vmlinux_name == NULL) |
| 229 | session.conf.try_vmlinux_path = true; | 228 | symbol_conf.try_vmlinux_path = true; |
| 230 | if (symbol__init(&session.conf) < 0) | 229 | if (symbol__init() < 0) |
| 231 | die("Failed to init symbol map."); | 230 | die("Failed to init symbol map."); |
| 232 | session.psession = perf_session__new(NULL, O_WRONLY, false, | 231 | session.psession = perf_session__new(NULL, O_WRONLY, false); |
| 233 | &session.conf); | ||
| 234 | if (session.psession == NULL) | 232 | if (session.psession == NULL) |
| 235 | die("Failed to init perf_session."); | 233 | die("Failed to init perf_session."); |
| 236 | session.kmap = map_groups__find_by_name(&session.psession->kmaps, | 234 | session.kmap = map_groups__find_by_name(&session.psession->kmaps, |
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 66979a5553b8..1da48a8fe9cc 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c | |||
| @@ -451,7 +451,7 @@ static int __cmd_record(int argc, const char **argv) | |||
| 451 | exit(-1); | 451 | exit(-1); |
| 452 | } | 452 | } |
| 453 | 453 | ||
| 454 | session = perf_session__new(output_name, O_WRONLY, force, NULL); | 454 | session = perf_session__new(output_name, O_WRONLY, force); |
| 455 | if (session == NULL) { | 455 | if (session == NULL) { |
| 456 | pr_err("Not enough memory for reading perf file header\n"); | 456 | pr_err("Not enough memory for reading perf file header\n"); |
| 457 | return -1; | 457 | return -1; |
| @@ -632,7 +632,7 @@ int cmd_record(int argc, const char **argv, const char *prefix __used) | |||
| 632 | { | 632 | { |
| 633 | int counter; | 633 | int counter; |
| 634 | 634 | ||
| 635 | symbol__init(0); | 635 | symbol__init(); |
| 636 | 636 | ||
| 637 | argc = parse_options(argc, argv, options, record_usage, | 637 | argc = parse_options(argc, argv, options, record_usage, |
| 638 | PARSE_OPT_STOP_AT_NON_OPTION); | 638 | PARSE_OPT_STOP_AT_NON_OPTION); |
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 40389c0e38c6..c349bdbb9474 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c | |||
| @@ -52,9 +52,6 @@ static int exclude_other = 1; | |||
| 52 | 52 | ||
| 53 | static char callchain_default_opt[] = "fractal,0.5"; | 53 | static char callchain_default_opt[] = "fractal,0.5"; |
| 54 | 54 | ||
| 55 | static struct symbol_conf symbol_conf; | ||
| 56 | |||
| 57 | |||
| 58 | static size_t | 55 | static size_t |
| 59 | callchain__fprintf_left_margin(FILE *fp, int left_margin) | 56 | callchain__fprintf_left_margin(FILE *fp, int left_margin) |
| 60 | { | 57 | { |
| @@ -705,7 +702,7 @@ static int __cmd_report(void) | |||
| 705 | int ret; | 702 | int ret; |
| 706 | struct perf_session *session; | 703 | struct perf_session *session; |
| 707 | 704 | ||
| 708 | session = perf_session__new(input_name, O_RDONLY, force, &symbol_conf); | 705 | session = perf_session__new(input_name, O_RDONLY, force); |
| 709 | if (session == NULL) | 706 | if (session == NULL) |
| 710 | return -ENOMEM; | 707 | return -ENOMEM; |
| 711 | 708 | ||
| @@ -864,7 +861,7 @@ static void setup_list(struct strlist **list, const char *list_str, | |||
| 864 | 861 | ||
| 865 | int cmd_report(int argc, const char **argv, const char *prefix __used) | 862 | int cmd_report(int argc, const char **argv, const char *prefix __used) |
| 866 | { | 863 | { |
| 867 | if (symbol__init(&symbol_conf) < 0) | 864 | if (symbol__init() < 0) |
| 868 | return -1; | 865 | return -1; |
| 869 | 866 | ||
| 870 | argc = parse_options(argc, argv, options, report_usage, 0); | 867 | argc = parse_options(argc, argv, options, report_usage, 0); |
diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c index d67f274adba0..80209df6cfe8 100644 --- a/tools/perf/builtin-sched.c +++ b/tools/perf/builtin-sched.c | |||
| @@ -1675,8 +1675,7 @@ static struct perf_event_ops event_ops = { | |||
| 1675 | static int read_events(void) | 1675 | static int read_events(void) |
| 1676 | { | 1676 | { |
| 1677 | int err; | 1677 | int err; |
| 1678 | struct perf_session *session = perf_session__new(input_name, O_RDONLY, | 1678 | struct perf_session *session = perf_session__new(input_name, O_RDONLY, 0); |
| 1679 | 0, NULL); | ||
| 1680 | if (session == NULL) | 1679 | if (session == NULL) |
| 1681 | return -ENOMEM; | 1680 | return -ENOMEM; |
| 1682 | 1681 | ||
| @@ -1912,7 +1911,7 @@ int cmd_sched(int argc, const char **argv, const char *prefix __used) | |||
| 1912 | if (!strcmp(argv[0], "trace")) | 1911 | if (!strcmp(argv[0], "trace")) |
| 1913 | return cmd_trace(argc, argv, prefix); | 1912 | return cmd_trace(argc, argv, prefix); |
| 1914 | 1913 | ||
| 1915 | symbol__init(0); | 1914 | symbol__init(); |
| 1916 | if (!strncmp(argv[0], "rec", 3)) { | 1915 | if (!strncmp(argv[0], "rec", 3)) { |
| 1917 | return __cmd_record(argc, argv); | 1916 | return __cmd_record(argc, argv); |
| 1918 | } else if (!strncmp(argv[0], "lat", 3)) { | 1917 | } else if (!strncmp(argv[0], "lat", 3)) { |
diff --git a/tools/perf/builtin-timechart.c b/tools/perf/builtin-timechart.c index ffd81e87ce69..9c98b7a2b19a 100644 --- a/tools/perf/builtin-timechart.c +++ b/tools/perf/builtin-timechart.c | |||
| @@ -1050,8 +1050,7 @@ static struct perf_event_ops event_ops = { | |||
| 1050 | 1050 | ||
| 1051 | static int __cmd_timechart(void) | 1051 | static int __cmd_timechart(void) |
| 1052 | { | 1052 | { |
| 1053 | struct perf_session *session = perf_session__new(input_name, O_RDONLY, | 1053 | struct perf_session *session = perf_session__new(input_name, O_RDONLY, 0); |
| 1054 | 0, NULL); | ||
| 1055 | int ret; | 1054 | int ret; |
| 1056 | 1055 | ||
| 1057 | if (session == NULL) | 1056 | if (session == NULL) |
| @@ -1138,7 +1137,7 @@ static const struct option options[] = { | |||
| 1138 | 1137 | ||
| 1139 | int cmd_timechart(int argc, const char **argv, const char *prefix __used) | 1138 | int cmd_timechart(int argc, const char **argv, const char *prefix __used) |
| 1140 | { | 1139 | { |
| 1141 | symbol__init(0); | 1140 | symbol__init(); |
| 1142 | 1141 | ||
| 1143 | argc = parse_options(argc, argv, options, timechart_usage, | 1142 | argc = parse_options(argc, argv, options, timechart_usage, |
| 1144 | PARSE_OPT_STOP_AT_NON_OPTION); | 1143 | PARSE_OPT_STOP_AT_NON_OPTION); |
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index 296e809c2538..cd89b6d036b7 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c | |||
| @@ -80,7 +80,6 @@ static int dump_symtab = 0; | |||
| 80 | static bool hide_kernel_symbols = false; | 80 | static bool hide_kernel_symbols = false; |
| 81 | static bool hide_user_symbols = false; | 81 | static bool hide_user_symbols = false; |
| 82 | static struct winsize winsize; | 82 | static struct winsize winsize; |
| 83 | static struct symbol_conf symbol_conf; | ||
| 84 | 83 | ||
| 85 | /* | 84 | /* |
| 86 | * Source | 85 | * Source |
| @@ -1162,8 +1161,7 @@ static int __cmd_top(void) | |||
| 1162 | * FIXME: perf_session__new should allow passing a O_MMAP, so that all this | 1161 | * FIXME: perf_session__new should allow passing a O_MMAP, so that all this |
| 1163 | * mmap reading, etc is encapsulated in it. Use O_WRONLY for now. | 1162 | * mmap reading, etc is encapsulated in it. Use O_WRONLY for now. |
| 1164 | */ | 1163 | */ |
| 1165 | struct perf_session *session = perf_session__new(NULL, O_WRONLY, false, | 1164 | struct perf_session *session = perf_session__new(NULL, O_WRONLY, false); |
| 1166 | &symbol_conf); | ||
| 1167 | if (session == NULL) | 1165 | if (session == NULL) |
| 1168 | return -ENOMEM; | 1166 | return -ENOMEM; |
| 1169 | 1167 | ||
| @@ -1284,7 +1282,7 @@ int cmd_top(int argc, const char **argv, const char *prefix __used) | |||
| 1284 | (nr_counters + 1) * sizeof(unsigned long)); | 1282 | (nr_counters + 1) * sizeof(unsigned long)); |
| 1285 | if (symbol_conf.vmlinux_name == NULL) | 1283 | if (symbol_conf.vmlinux_name == NULL) |
| 1286 | symbol_conf.try_vmlinux_path = true; | 1284 | symbol_conf.try_vmlinux_path = true; |
| 1287 | if (symbol__init(&symbol_conf) < 0) | 1285 | if (symbol__init() < 0) |
| 1288 | return -1; | 1286 | return -1; |
| 1289 | 1287 | ||
| 1290 | if (delay_secs < 1) | 1288 | if (delay_secs < 1) |
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 7e744f774047..07ad25ca654f 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c | |||
| @@ -579,7 +579,7 @@ int cmd_trace(int argc, const char **argv, const char *prefix __used) | |||
| 579 | exit(-1); | 579 | exit(-1); |
| 580 | } | 580 | } |
| 581 | 581 | ||
| 582 | symbol__init(0); | 582 | symbol__init(); |
| 583 | 583 | ||
| 584 | setup_scripting(); | 584 | setup_scripting(); |
| 585 | 585 | ||
| @@ -588,7 +588,7 @@ int cmd_trace(int argc, const char **argv, const char *prefix __used) | |||
| 588 | 588 | ||
| 589 | setup_pager(); | 589 | setup_pager(); |
| 590 | 590 | ||
| 591 | session = perf_session__new(input_name, O_RDONLY, 0, NULL); | 591 | session = perf_session__new(input_name, O_RDONLY, 0); |
| 592 | if (session == NULL) | 592 | if (session == NULL) |
| 593 | return -ENOMEM; | 593 | return -ENOMEM; |
| 594 | 594 | ||
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index ecd54bedfb1c..bceaa09f55a1 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c | |||
| @@ -49,8 +49,7 @@ out_close: | |||
| 49 | return -1; | 49 | return -1; |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | struct perf_session *perf_session__new(const char *filename, int mode, | 52 | struct perf_session *perf_session__new(const char *filename, int mode, bool force) |
| 53 | bool force, struct symbol_conf *conf) | ||
| 54 | { | 53 | { |
| 55 | size_t len = filename ? strlen(filename) + 1 : 0; | 54 | size_t len = filename ? strlen(filename) + 1 : 0; |
| 56 | struct perf_session *self = zalloc(sizeof(*self) + len); | 55 | struct perf_session *self = zalloc(sizeof(*self) + len); |
| @@ -69,7 +68,7 @@ struct perf_session *perf_session__new(const char *filename, int mode, | |||
| 69 | self->cwdlen = 0; | 68 | self->cwdlen = 0; |
| 70 | map_groups__init(&self->kmaps); | 69 | map_groups__init(&self->kmaps); |
| 71 | 70 | ||
| 72 | if (perf_session__create_kernel_maps(self, conf) < 0) | 71 | if (perf_session__create_kernel_maps(self) < 0) |
| 73 | goto out_delete; | 72 | goto out_delete; |
| 74 | 73 | ||
| 75 | if (mode == O_RDONLY && perf_session__open(self, force) < 0) | 74 | if (mode == O_RDONLY && perf_session__open(self, force) < 0) |
diff --git a/tools/perf/util/session.h b/tools/perf/util/session.h index bdfc4b8eee7a..faf18a8e0311 100644 --- a/tools/perf/util/session.h +++ b/tools/perf/util/session.h | |||
| @@ -10,7 +10,6 @@ | |||
| 10 | struct ip_callchain; | 10 | struct ip_callchain; |
| 11 | struct thread; | 11 | struct thread; |
| 12 | struct symbol; | 12 | struct symbol; |
| 13 | struct symbol_conf; | ||
| 14 | 13 | ||
| 15 | struct perf_session { | 14 | struct perf_session { |
| 16 | struct perf_header header; | 15 | struct perf_header header; |
| @@ -26,7 +25,6 @@ struct perf_session { | |||
| 26 | int fd; | 25 | int fd; |
| 27 | int cwdlen; | 26 | int cwdlen; |
| 28 | char *cwd; | 27 | char *cwd; |
| 29 | bool use_modules; | ||
| 30 | bool use_callchain; | 28 | bool use_callchain; |
| 31 | char filename[0]; | 29 | char filename[0]; |
| 32 | }; | 30 | }; |
| @@ -48,8 +46,7 @@ struct perf_event_ops { | |||
| 48 | bool full_paths; | 46 | bool full_paths; |
| 49 | }; | 47 | }; |
| 50 | 48 | ||
| 51 | struct perf_session *perf_session__new(const char *filename, int mode, | 49 | struct perf_session *perf_session__new(const char *filename, int mode, bool force); |
| 52 | bool force, struct symbol_conf *conf); | ||
| 53 | void perf_session__delete(struct perf_session *self); | 50 | void perf_session__delete(struct perf_session *self); |
| 54 | 51 | ||
| 55 | int perf_session__process_events(struct perf_session *self, | 52 | int perf_session__process_events(struct perf_session *self, |
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index 185b9eec192b..17ce01269a91 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c | |||
| @@ -33,11 +33,10 @@ static void dsos__add(struct list_head *head, struct dso *dso); | |||
| 33 | static struct map *map__new2(u64 start, struct dso *dso, enum map_type type); | 33 | static struct map *map__new2(u64 start, struct dso *dso, enum map_type type); |
| 34 | static int dso__load_kernel_sym(struct dso *self, struct map *map, | 34 | static int dso__load_kernel_sym(struct dso *self, struct map *map, |
| 35 | struct perf_session *session, symbol_filter_t filter); | 35 | struct perf_session *session, symbol_filter_t filter); |
| 36 | unsigned int symbol__priv_size; | ||
| 37 | static int vmlinux_path__nr_entries; | 36 | static int vmlinux_path__nr_entries; |
| 38 | static char **vmlinux_path; | 37 | static char **vmlinux_path; |
| 39 | 38 | ||
| 40 | static struct symbol_conf symbol_conf__defaults = { | 39 | struct symbol_conf symbol_conf = { |
| 41 | .use_modules = true, | 40 | .use_modules = true, |
| 42 | .try_vmlinux_path = true, | 41 | .try_vmlinux_path = true, |
| 43 | }; | 42 | }; |
| @@ -130,13 +129,13 @@ static void map_groups__fixup_end(struct map_groups *self) | |||
| 130 | static struct symbol *symbol__new(u64 start, u64 len, const char *name) | 129 | static struct symbol *symbol__new(u64 start, u64 len, const char *name) |
| 131 | { | 130 | { |
| 132 | size_t namelen = strlen(name) + 1; | 131 | size_t namelen = strlen(name) + 1; |
| 133 | struct symbol *self = zalloc(symbol__priv_size + | 132 | struct symbol *self = zalloc(symbol_conf.priv_size + |
| 134 | sizeof(*self) + namelen); | 133 | sizeof(*self) + namelen); |
| 135 | if (self == NULL) | 134 | if (self == NULL) |
| 136 | return NULL; | 135 | return NULL; |
| 137 | 136 | ||
| 138 | if (symbol__priv_size) | 137 | if (symbol_conf.priv_size) |
| 139 | self = ((void *)self) + symbol__priv_size; | 138 | self = ((void *)self) + symbol_conf.priv_size; |
| 140 | 139 | ||
| 141 | self->start = start; | 140 | self->start = start; |
| 142 | self->end = len ? start + len - 1 : start; | 141 | self->end = len ? start + len - 1 : start; |
| @@ -150,7 +149,7 @@ static struct symbol *symbol__new(u64 start, u64 len, const char *name) | |||
| 150 | 149 | ||
| 151 | static void symbol__delete(struct symbol *self) | 150 | static void symbol__delete(struct symbol *self) |
| 152 | { | 151 | { |
| 153 | free(((void *)self) - symbol__priv_size); | 152 | free(((void *)self) - symbol_conf.priv_size); |
| 154 | } | 153 | } |
| 155 | 154 | ||
| 156 | static size_t symbol__fprintf(struct symbol *self, FILE *fp) | 155 | static size_t symbol__fprintf(struct symbol *self, FILE *fp) |
| @@ -471,7 +470,7 @@ static int dso__split_kallsyms(struct dso *self, struct map *map, | |||
| 471 | 470 | ||
| 472 | module = strchr(pos->name, '\t'); | 471 | module = strchr(pos->name, '\t'); |
| 473 | if (module) { | 472 | if (module) { |
| 474 | if (!session->use_modules) | 473 | if (!symbol_conf.use_modules) |
| 475 | goto discard_symbol; | 474 | goto discard_symbol; |
| 476 | 475 | ||
| 477 | *module++ = '\0'; | 476 | *module++ = '\0'; |
| @@ -1740,34 +1739,27 @@ out_fail: | |||
| 1740 | return -1; | 1739 | return -1; |
| 1741 | } | 1740 | } |
| 1742 | 1741 | ||
| 1743 | int symbol__init(struct symbol_conf *conf) | 1742 | int symbol__init(void) |
| 1744 | { | 1743 | { |
| 1745 | const struct symbol_conf *pconf = conf ?: &symbol_conf__defaults; | ||
| 1746 | |||
| 1747 | elf_version(EV_CURRENT); | 1744 | elf_version(EV_CURRENT); |
| 1748 | symbol__priv_size = pconf->priv_size; | 1745 | if (symbol_conf.sort_by_name) |
| 1749 | if (pconf->sort_by_name) | 1746 | symbol_conf.priv_size += (sizeof(struct symbol_name_rb_node) - |
| 1750 | symbol__priv_size += (sizeof(struct symbol_name_rb_node) - | 1747 | sizeof(struct symbol)); |
| 1751 | sizeof(struct symbol)); | ||
| 1752 | 1748 | ||
| 1753 | if (pconf->try_vmlinux_path && vmlinux_path__init() < 0) | 1749 | if (symbol_conf.try_vmlinux_path && vmlinux_path__init() < 0) |
| 1754 | return -1; | 1750 | return -1; |
| 1755 | 1751 | ||
| 1756 | return 0; | 1752 | return 0; |
| 1757 | } | 1753 | } |
| 1758 | 1754 | ||
| 1759 | int perf_session__create_kernel_maps(struct perf_session *self, | 1755 | int perf_session__create_kernel_maps(struct perf_session *self) |
| 1760 | struct symbol_conf *conf) | ||
| 1761 | { | 1756 | { |
| 1762 | const struct symbol_conf *pconf = conf ?: &symbol_conf__defaults; | ||
| 1763 | |||
| 1764 | if (map_groups__create_kernel_maps(&self->kmaps, | 1757 | if (map_groups__create_kernel_maps(&self->kmaps, |
| 1765 | pconf->vmlinux_name) < 0) | 1758 | symbol_conf.vmlinux_name) < 0) |
| 1766 | return -1; | 1759 | return -1; |
| 1767 | 1760 | ||
| 1768 | self->use_modules = pconf->use_modules; | 1761 | if (symbol_conf.use_modules && |
| 1769 | 1762 | perf_session__create_module_maps(self) < 0) | |
| 1770 | if (pconf->use_modules && perf_session__create_module_maps(self) < 0) | ||
| 1771 | pr_debug("Failed to load list of modules for session %s, " | 1763 | pr_debug("Failed to load list of modules for session %s, " |
| 1772 | "continuing...\n", self->filename); | 1764 | "continuing...\n", self->filename); |
| 1773 | /* | 1765 | /* |
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h index 941ef331790e..766294735f93 100644 --- a/tools/perf/util/symbol.h +++ b/tools/perf/util/symbol.h | |||
| @@ -57,11 +57,11 @@ struct symbol_conf { | |||
| 57 | const char *vmlinux_name; | 57 | const char *vmlinux_name; |
| 58 | }; | 58 | }; |
| 59 | 59 | ||
| 60 | extern unsigned int symbol__priv_size; | 60 | extern struct symbol_conf symbol_conf; |
| 61 | 61 | ||
| 62 | static inline void *symbol__priv(struct symbol *self) | 62 | static inline void *symbol__priv(struct symbol *self) |
| 63 | { | 63 | { |
| 64 | return ((void *)self) - symbol__priv_size; | 64 | return ((void *)self) - symbol_conf.priv_size; |
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | struct addr_location { | 67 | struct addr_location { |
| @@ -119,9 +119,8 @@ int sysfs__read_build_id(const char *filename, void *bf, size_t size); | |||
| 119 | bool dsos__read_build_ids(void); | 119 | bool dsos__read_build_ids(void); |
| 120 | int build_id__sprintf(u8 *self, int len, char *bf); | 120 | int build_id__sprintf(u8 *self, int len, char *bf); |
| 121 | 121 | ||
| 122 | int symbol__init(struct symbol_conf *conf); | 122 | int symbol__init(void); |
| 123 | int perf_session__create_kernel_maps(struct perf_session *self, | 123 | int perf_session__create_kernel_maps(struct perf_session *self); |
| 124 | struct symbol_conf *conf); | ||
| 125 | 124 | ||
| 126 | extern struct list_head dsos__user, dsos__kernel; | 125 | extern struct list_head dsos__user, dsos__kernel; |
| 127 | extern struct dso *vdso; | 126 | extern struct dso *vdso; |
