diff options
author | Pekka Enberg <penberg@kernel.org> | 2012-03-19 14:13:29 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2012-03-19 14:13:29 -0400 |
commit | c31a94570552dcaa517c4f7a043ffd28835016be (patch) | |
tree | db6b03aaca5ca4a254912ae1a7f3e5e89ee182e4 /tools/perf/builtin-report.c | |
parent | fde0eeaba7fe18dfd2ee6142fb562123e510ef84 (diff) |
perf report: Add a simple GTK2-based 'perf report' browser
This patch adds a simple GTK2-based browser to 'perf report' that's
based on the TTY-based browser in builtin-report.c.
To launch "perf report" using the new GTK interface just type:
$ perf report --gtk
The interface is somewhat limited in features at the moment:
- No callgraph support
- No KVM guest profiling support
- No color coding for percentages
- No sorting from the UI
- ..and many, many more!
That said, I think this patch a reasonable start to build future features on.
Signed-off-by: Pekka Enberg <penberg@kernel.org>
Cc: Colin Walters <walters@verbum.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Ingo Molnar <mingo@kernel.org>
Link: http://lkml.kernel.org/r/alpine.LFD.2.02.1202231952410.6689@tux.localdomain
[ committer note: Added #pragma to make gtk no strict prototype problem go
away as suggested by Colin Walters modulo avoiding push/pop ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-report.c')
-rw-r--r-- | tools/perf/builtin-report.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index c00545806bb7..2e317438980b 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c | |||
@@ -40,7 +40,7 @@ struct perf_report { | |||
40 | struct perf_tool tool; | 40 | struct perf_tool tool; |
41 | struct perf_session *session; | 41 | struct perf_session *session; |
42 | char const *input_name; | 42 | char const *input_name; |
43 | bool force, use_tui, use_stdio; | 43 | bool force, use_tui, use_gtk, use_stdio; |
44 | bool hide_unresolved; | 44 | bool hide_unresolved; |
45 | bool dont_use_callchains; | 45 | bool dont_use_callchains; |
46 | bool show_full_info; | 46 | bool show_full_info; |
@@ -415,8 +415,13 @@ static int __cmd_report(struct perf_report *rep) | |||
415 | } | 415 | } |
416 | 416 | ||
417 | if (use_browser > 0) { | 417 | if (use_browser > 0) { |
418 | perf_evlist__tui_browse_hists(session->evlist, help, | 418 | if (use_browser == 1) { |
419 | NULL, NULL, 0); | 419 | perf_evlist__tui_browse_hists(session->evlist, help, |
420 | NULL, NULL, 0); | ||
421 | } else if (use_browser == 2) { | ||
422 | perf_evlist__gtk_browse_hists(session->evlist, help, | ||
423 | NULL, NULL, 0); | ||
424 | } | ||
420 | } else | 425 | } else |
421 | perf_evlist__tty_browse_hists(session->evlist, rep, help); | 426 | perf_evlist__tty_browse_hists(session->evlist, rep, help); |
422 | 427 | ||
@@ -573,6 +578,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __used) | |||
573 | OPT_STRING(0, "pretty", &report.pretty_printing_style, "key", | 578 | OPT_STRING(0, "pretty", &report.pretty_printing_style, "key", |
574 | "pretty printing style key: normal raw"), | 579 | "pretty printing style key: normal raw"), |
575 | OPT_BOOLEAN(0, "tui", &report.use_tui, "Use the TUI interface"), | 580 | OPT_BOOLEAN(0, "tui", &report.use_tui, "Use the TUI interface"), |
581 | OPT_BOOLEAN(0, "gtk", &report.use_gtk, "Use the GTK2 interface"), | ||
576 | OPT_BOOLEAN(0, "stdio", &report.use_stdio, | 582 | OPT_BOOLEAN(0, "stdio", &report.use_stdio, |
577 | "Use the stdio interface"), | 583 | "Use the stdio interface"), |
578 | OPT_STRING('s', "sort", &sort_order, "key[,key2...]", | 584 | OPT_STRING('s', "sort", &sort_order, "key[,key2...]", |
@@ -630,6 +636,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __used) | |||
630 | use_browser = 0; | 636 | use_browser = 0; |
631 | else if (report.use_tui) | 637 | else if (report.use_tui) |
632 | use_browser = 1; | 638 | use_browser = 1; |
639 | else if (report.use_gtk) | ||
640 | use_browser = 2; | ||
633 | 641 | ||
634 | if (report.inverted_callchain) | 642 | if (report.inverted_callchain) |
635 | callchain_param.order = ORDER_CALLER; | 643 | callchain_param.order = ORDER_CALLER; |
@@ -666,7 +674,10 @@ int cmd_report(int argc, const char **argv, const char *prefix __used) | |||
666 | } | 674 | } |
667 | 675 | ||
668 | if (strcmp(report.input_name, "-") != 0) { | 676 | if (strcmp(report.input_name, "-") != 0) { |
669 | setup_browser(true); | 677 | if (report.use_gtk) |
678 | perf_gtk_setup_browser(argc, argv, true); | ||
679 | else | ||
680 | setup_browser(true); | ||
670 | } else { | 681 | } else { |
671 | use_browser = 0; | 682 | use_browser = 0; |
672 | } | 683 | } |