diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-14 13:13:22 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-14 13:13:22 -0500 |
commit | 2205afa7d13ec716935dfd4b8ff71059ee7aeb0c (patch) | |
tree | 19e63ed8040e8a82c3cdd331458d246247466a28 /tools/perf/builtin-report.c | |
parent | 491424c0f46c282a854b88830212bdb0763e93dc (diff) | |
parent | 2cd9046cc53dd2625e2cf5854d6cbb1ba61de914 (diff) |
Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
perf sched: Fix build failure on sparc
perf bench: Add "all" pseudo subsystem and "all" pseudo suite
perf tools: Introduce perf_session class
perf symbols: Ditch dso->find_symbol
perf symbols: Allow lookups by symbol name too
perf symbols: Add missing "Variables" entry to map_type__name
perf symbols: Add support for 'variable' symtabs
perf symbols: Introduce ELF counterparts to symbol_type__is_a
perf symbols: Introduce symbol_type__is_a
perf symbols: Rename kthreads to kmaps, using another abstraction for it
perf tools: Allow building for ARM
hw-breakpoints: Handle bad modify_user_hw_breakpoint off-case return value
perf tools: Allow cross compiling
tracing, slab: Fix no callsite ifndef CONFIG_KMEMTRACE
tracing, slab: Define kmem_cache_alloc_notrace ifdef CONFIG_TRACING
Trivial conflict due to different fixes to modify_user_hw_breakpoint()
in include/linux/hw_breakpoint.h
Diffstat (limited to 'tools/perf/builtin-report.c')
-rw-r--r-- | tools/perf/builtin-report.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 2b9eb3a553ed..e2ec49a9b731 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include "perf.h" | 22 | #include "perf.h" |
23 | #include "util/debug.h" | 23 | #include "util/debug.h" |
24 | #include "util/header.h" | 24 | #include "util/header.h" |
25 | #include "util/session.h" | ||
25 | 26 | ||
26 | #include "util/parse-options.h" | 27 | #include "util/parse-options.h" |
27 | #include "util/parse-events.h" | 28 | #include "util/parse-events.h" |
@@ -52,7 +53,7 @@ static int exclude_other = 1; | |||
52 | 53 | ||
53 | static char callchain_default_opt[] = "fractal,0.5"; | 54 | static char callchain_default_opt[] = "fractal,0.5"; |
54 | 55 | ||
55 | static struct perf_header *header; | 56 | static struct perf_session *session; |
56 | 57 | ||
57 | static u64 sample_type; | 58 | static u64 sample_type; |
58 | 59 | ||
@@ -701,7 +702,7 @@ static int process_read_event(event_t *event) | |||
701 | { | 702 | { |
702 | struct perf_event_attr *attr; | 703 | struct perf_event_attr *attr; |
703 | 704 | ||
704 | attr = perf_header__find_attr(event->read.id, header); | 705 | attr = perf_header__find_attr(event->read.id, &session->header); |
705 | 706 | ||
706 | if (show_threads) { | 707 | if (show_threads) { |
707 | const char *name = attr ? __event_name(attr->type, attr->config) | 708 | const char *name = attr ? __event_name(attr->type, attr->config) |
@@ -766,6 +767,10 @@ static int __cmd_report(void) | |||
766 | struct thread *idle; | 767 | struct thread *idle; |
767 | int ret; | 768 | int ret; |
768 | 769 | ||
770 | session = perf_session__new(input_name, O_RDONLY, force); | ||
771 | if (session == NULL) | ||
772 | return -ENOMEM; | ||
773 | |||
769 | idle = register_idle_thread(); | 774 | idle = register_idle_thread(); |
770 | thread__comm_adjust(idle); | 775 | thread__comm_adjust(idle); |
771 | 776 | ||
@@ -774,14 +779,14 @@ static int __cmd_report(void) | |||
774 | 779 | ||
775 | register_perf_file_handler(&file_handler); | 780 | register_perf_file_handler(&file_handler); |
776 | 781 | ||
777 | ret = mmap_dispatch_perf_file(&header, input_name, force, | 782 | ret = perf_session__process_events(session, full_paths, |
778 | full_paths, &event__cwdlen, &event__cwd); | 783 | &event__cwdlen, &event__cwd); |
779 | if (ret) | 784 | if (ret) |
780 | return ret; | 785 | goto out_delete; |
781 | 786 | ||
782 | if (dump_trace) { | 787 | if (dump_trace) { |
783 | event__print_totals(); | 788 | event__print_totals(); |
784 | return 0; | 789 | goto out_delete; |
785 | } | 790 | } |
786 | 791 | ||
787 | if (verbose > 3) | 792 | if (verbose > 3) |
@@ -796,7 +801,8 @@ static int __cmd_report(void) | |||
796 | 801 | ||
797 | if (show_threads) | 802 | if (show_threads) |
798 | perf_read_values_destroy(&show_threads_values); | 803 | perf_read_values_destroy(&show_threads_values); |
799 | 804 | out_delete: | |
805 | perf_session__delete(session); | ||
800 | return ret; | 806 | return ret; |
801 | } | 807 | } |
802 | 808 | ||