diff options
author | Ingo Molnar <mingo@elte.hu> | 2010-09-15 04:27:31 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-09-15 04:27:31 -0400 |
commit | 3aabae7d9dfaed60effe93662f02c19bafc18537 (patch) | |
tree | af94cdd69add07601d9f3f5988dfc1dc255e3886 /tools | |
parent | 79e406d7b00ab2b261ae32a59f266fd3b7af6f29 (diff) | |
parent | 57c072c7113f54f9512624d6c665db6184448782 (diff) |
Merge branch 'tip/perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into perf/core
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/util/symbol.c | 7 | ||||
-rw-r--r-- | tools/perf/util/symbol.h | 3 |
2 files changed, 9 insertions, 1 deletions
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index a08e1cbcbbbd..b39f499e575a 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c | |||
@@ -2282,6 +2282,9 @@ static int setup_list(struct strlist **list, const char *list_str, | |||
2282 | 2282 | ||
2283 | int symbol__init(void) | 2283 | int symbol__init(void) |
2284 | { | 2284 | { |
2285 | if (symbol_conf.initialized) | ||
2286 | return 0; | ||
2287 | |||
2285 | elf_version(EV_CURRENT); | 2288 | elf_version(EV_CURRENT); |
2286 | if (symbol_conf.sort_by_name) | 2289 | if (symbol_conf.sort_by_name) |
2287 | symbol_conf.priv_size += (sizeof(struct symbol_name_rb_node) - | 2290 | symbol_conf.priv_size += (sizeof(struct symbol_name_rb_node) - |
@@ -2307,6 +2310,7 @@ int symbol__init(void) | |||
2307 | symbol_conf.sym_list_str, "symbol") < 0) | 2310 | symbol_conf.sym_list_str, "symbol") < 0) |
2308 | goto out_free_comm_list; | 2311 | goto out_free_comm_list; |
2309 | 2312 | ||
2313 | symbol_conf.initialized = true; | ||
2310 | return 0; | 2314 | return 0; |
2311 | 2315 | ||
2312 | out_free_dso_list: | 2316 | out_free_dso_list: |
@@ -2318,11 +2322,14 @@ out_free_comm_list: | |||
2318 | 2322 | ||
2319 | void symbol__exit(void) | 2323 | void symbol__exit(void) |
2320 | { | 2324 | { |
2325 | if (!symbol_conf.initialized) | ||
2326 | return; | ||
2321 | strlist__delete(symbol_conf.sym_list); | 2327 | strlist__delete(symbol_conf.sym_list); |
2322 | strlist__delete(symbol_conf.dso_list); | 2328 | strlist__delete(symbol_conf.dso_list); |
2323 | strlist__delete(symbol_conf.comm_list); | 2329 | strlist__delete(symbol_conf.comm_list); |
2324 | vmlinux_path__exit(); | 2330 | vmlinux_path__exit(); |
2325 | symbol_conf.sym_list = symbol_conf.dso_list = symbol_conf.comm_list = NULL; | 2331 | symbol_conf.sym_list = symbol_conf.dso_list = symbol_conf.comm_list = NULL; |
2332 | symbol_conf.initialized = false; | ||
2326 | } | 2333 | } |
2327 | 2334 | ||
2328 | int machines__create_kernel_maps(struct rb_root *self, pid_t pid) | 2335 | int machines__create_kernel_maps(struct rb_root *self, pid_t pid) |
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h index 0a2c460b6d81..038f2201ee09 100644 --- a/tools/perf/util/symbol.h +++ b/tools/perf/util/symbol.h | |||
@@ -69,7 +69,8 @@ struct symbol_conf { | |||
69 | show_nr_samples, | 69 | show_nr_samples, |
70 | use_callchain, | 70 | use_callchain, |
71 | exclude_other, | 71 | exclude_other, |
72 | show_cpu_utilization; | 72 | show_cpu_utilization, |
73 | initialized; | ||
73 | const char *vmlinux_name, | 74 | const char *vmlinux_name, |
74 | *source_prefix, | 75 | *source_prefix, |
75 | *field_sep; | 76 | *field_sep; |