* [GIT PULL 0/3] perf/core fixes and improvements
@ 2012-03-19 19:12 Arnaldo Carvalho de Melo
2012-03-19 19:12 ` [PATCH 1/3] perf ui browser: Clean lines inside of the input window Arnaldo Carvalho de Melo
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-03-19 19:12 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Colin Walters,
Namhyung Kim, Namhyung Kim, Paul Mackerras, Pekka Enberg,
Peter Zijlstra, arnaldo.melo, Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling, now there are two pull request worth of
changesets in my perf/core branch,
- Arnaldo
The following changes since commit 6db6127c4dad634ab98709b81e2f2770890b0d53:
perf report: Treat an argument as a symbol filter (2012-03-16 16:44:36 -0300)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
for you to fetch changes up to c31a94570552dcaa517c4f7a043ffd28835016be:
perf report: Add a simple GTK2-based 'perf report' browser (2012-03-19 15:13:29 -0300)
----------------------------------------------------------------
Fixes for the last batch from Namhyung and the initial GTK report browser
from Pekka.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Namhyung Kim (2):
perf ui browser: Clean lines inside of the input window
perf report: Document --symbol-filter option
Pekka Enberg (1):
perf report: Add a simple GTK2-based 'perf report' browser
tools/perf/Documentation/perf-report.txt | 5 +
tools/perf/Makefile | 14 +++
tools/perf/builtin-report.c | 19 ++-
tools/perf/config/feature-tests.mak | 15 +++
tools/perf/util/cache.h | 12 ++
tools/perf/util/gtk/browser.c | 189 ++++++++++++++++++++++++++++++
tools/perf/util/gtk/gtk.h | 8 ++
tools/perf/util/hist.h | 17 +++
tools/perf/util/ui/util.c | 10 +-
9 files changed, 282 insertions(+), 7 deletions(-)
create mode 100644 tools/perf/util/gtk/browser.c
create mode 100644 tools/perf/util/gtk/gtk.h
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/3] perf ui browser: Clean lines inside of the input window
2012-03-19 19:12 [GIT PULL 0/3] perf/core fixes and improvements Arnaldo Carvalho de Melo
@ 2012-03-19 19:12 ` Arnaldo Carvalho de Melo
2012-03-19 19:12 ` [PATCH 2/3] perf report: Document --symbol-filter option Arnaldo Carvalho de Melo
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-03-19 19:12 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Namhyung Kim, Namhyung Kim, Paul Mackerras,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Namhyung Kim <namhyung.kim@lge.com>
As Arnaldo pointed out, it should be cleared to prevent the window from
displaying overlapped strings on the region.
Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Namhyung Kim <namhyung.kim@lge.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1332125180-23041-1-git-send-email-namhyung.kim@lge.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/ui/util.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/tools/perf/util/ui/util.c b/tools/perf/util/ui/util.c
index 360f43f..ad4374a 100644
--- a/tools/perf/util/ui/util.c
+++ b/tools/perf/util/ui/util.c
@@ -108,9 +108,13 @@ int ui_browser__input_window(const char *title, const char *text, char *input,
max_len -= 2;
SLsmg_write_wrapped_string((unsigned char *)text, y, x,
nr_lines, max_len, 1);
- y += nr_lines + 1;
- SLsmg_set_color(0);
- SLsmg_draw_box(y - 1, x + 1, 3, max_len - 2);
+ y += nr_lines;
+ len = 5;
+ while (len--) {
+ SLsmg_gotorc(y + len - 1, x);
+ SLsmg_write_nstring((char *)" ", max_len);
+ }
+ SLsmg_draw_box(y++, x + 1, 3, max_len - 2);
SLsmg_gotorc(y + 3, x);
SLsmg_write_nstring((char *)exit_msg, max_len);
--
1.7.9.2.358.g22243
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/3] perf report: Document --symbol-filter option
2012-03-19 19:12 [GIT PULL 0/3] perf/core fixes and improvements Arnaldo Carvalho de Melo
2012-03-19 19:12 ` [PATCH 1/3] perf ui browser: Clean lines inside of the input window Arnaldo Carvalho de Melo
@ 2012-03-19 19:12 ` Arnaldo Carvalho de Melo
2012-03-19 19:12 ` [PATCH 3/3] perf report: Add a simple GTK2-based 'perf report' browser Arnaldo Carvalho de Melo
2012-03-19 19:47 ` [GIT PULL 0/3] perf/core fixes and improvements Ingo Molnar
3 siblings, 0 replies; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-03-19 19:12 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Namhyung Kim, Namhyung Kim, Paul Mackerras,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Namhyung Kim <namhyung.kim@lge.com>
Add missing description of --symbol-filter in Documentation/perf-report.txt.
Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Namhyung Kim <namhyung.kim@lge.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1332125628-23088-1-git-send-email-namhyung.kim@lge.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Documentation/perf-report.txt | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt
index 87feeee..68bbf9c 100644
--- a/tools/perf/Documentation/perf-report.txt
+++ b/tools/perf/Documentation/perf-report.txt
@@ -48,6 +48,9 @@ OPTIONS
Only consider these symbols. CSV that understands
file://filename entries.
+--symbol-filter=::
+ Only show symbols that match (partially) with this filter.
+
-U::
--hide-unresolved::
Only display entries resolved to a symbol.
--
1.7.9.2.358.g22243
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/3] perf report: Add a simple GTK2-based 'perf report' browser
2012-03-19 19:12 [GIT PULL 0/3] perf/core fixes and improvements Arnaldo Carvalho de Melo
2012-03-19 19:12 ` [PATCH 1/3] perf ui browser: Clean lines inside of the input window Arnaldo Carvalho de Melo
2012-03-19 19:12 ` [PATCH 2/3] perf report: Document --symbol-filter option Arnaldo Carvalho de Melo
@ 2012-03-19 19:12 ` Arnaldo Carvalho de Melo
2012-03-19 19:47 ` [GIT PULL 0/3] perf/core fixes and improvements Ingo Molnar
3 siblings, 0 replies; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-03-19 19:12 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Pekka Enberg, Colin Walters, Peter Zijlstra,
Paul Mackerras, Arnaldo Carvalho de Melo
From: Pekka Enberg <penberg@kernel.org>
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>
---
tools/perf/Documentation/perf-report.txt | 2 +
tools/perf/Makefile | 14 +++
tools/perf/builtin-report.c | 19 ++-
tools/perf/config/feature-tests.mak | 15 +++
tools/perf/util/cache.h | 12 ++
tools/perf/util/gtk/browser.c | 189 ++++++++++++++++++++++++++++++
tools/perf/util/gtk/gtk.h | 8 ++
tools/perf/util/hist.h | 17 +++
8 files changed, 272 insertions(+), 4 deletions(-)
create mode 100644 tools/perf/util/gtk/browser.c
create mode 100644 tools/perf/util/gtk/gtk.h
diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt
index 68bbf9c..2d89f02 100644
--- a/tools/perf/Documentation/perf-report.txt
+++ b/tools/perf/Documentation/perf-report.txt
@@ -113,6 +113,8 @@ OPTIONS
requires a tty, if one is not present, as when piping to other
commands, the stdio interface is used.
+--gtk:: Use the GTK2 interface.
+
-k::
--vmlinux=<file>::
vmlinux pathname
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index e07fbd8..cc27148 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -507,6 +507,20 @@ else
endif
endif
+ifdef NO_GTK2
+ BASIC_CFLAGS += -DNO_GTK2
+else
+ FLAGS_GTK2=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) $(shell pkg-config --libs --cflags gtk+-2.0)
+ ifneq ($(call try-cc,$(SOURCE_GTK2),$(FLAGS_GTK2)),y)
+ msg := $(warning GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev);
+ BASIC_CFLAGS += -DNO_GTK2_SUPPORT
+ else
+ BASIC_CFLAGS += $(shell pkg-config --cflags gtk+-2.0)
+ EXTLIBS += $(shell pkg-config --libs gtk+-2.0)
+ LIB_OBJS += $(OUTPUT)util/gtk/browser.o
+ endif
+endif
+
ifdef NO_LIBPERL
BASIC_CFLAGS += -DNO_LIBPERL
else
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index c005458..2e31743 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -40,7 +40,7 @@ struct perf_report {
struct perf_tool tool;
struct perf_session *session;
char const *input_name;
- bool force, use_tui, use_stdio;
+ bool force, use_tui, use_gtk, use_stdio;
bool hide_unresolved;
bool dont_use_callchains;
bool show_full_info;
@@ -415,8 +415,13 @@ static int __cmd_report(struct perf_report *rep)
}
if (use_browser > 0) {
- perf_evlist__tui_browse_hists(session->evlist, help,
- NULL, NULL, 0);
+ if (use_browser == 1) {
+ perf_evlist__tui_browse_hists(session->evlist, help,
+ NULL, NULL, 0);
+ } else if (use_browser == 2) {
+ perf_evlist__gtk_browse_hists(session->evlist, help,
+ NULL, NULL, 0);
+ }
} else
perf_evlist__tty_browse_hists(session->evlist, rep, help);
@@ -573,6 +578,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __used)
OPT_STRING(0, "pretty", &report.pretty_printing_style, "key",
"pretty printing style key: normal raw"),
OPT_BOOLEAN(0, "tui", &report.use_tui, "Use the TUI interface"),
+ OPT_BOOLEAN(0, "gtk", &report.use_gtk, "Use the GTK2 interface"),
OPT_BOOLEAN(0, "stdio", &report.use_stdio,
"Use the stdio interface"),
OPT_STRING('s', "sort", &sort_order, "key[,key2...]",
@@ -630,6 +636,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __used)
use_browser = 0;
else if (report.use_tui)
use_browser = 1;
+ else if (report.use_gtk)
+ use_browser = 2;
if (report.inverted_callchain)
callchain_param.order = ORDER_CALLER;
@@ -666,7 +674,10 @@ int cmd_report(int argc, const char **argv, const char *prefix __used)
}
if (strcmp(report.input_name, "-") != 0) {
- setup_browser(true);
+ if (report.use_gtk)
+ perf_gtk_setup_browser(argc, argv, true);
+ else
+ setup_browser(true);
} else {
use_browser = 0;
}
diff --git a/tools/perf/config/feature-tests.mak b/tools/perf/config/feature-tests.mak
index 6170fd2..d9084e0 100644
--- a/tools/perf/config/feature-tests.mak
+++ b/tools/perf/config/feature-tests.mak
@@ -65,6 +65,21 @@ int main(void)
endef
endif
+ifndef NO_GTK2
+define SOURCE_GTK2
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#include <gtk/gtk.h>
+#pragma GCC diagnostic error \"-Wstrict-prototypes\"
+
+int main(int argc, char *argv[])
+{
+ gtk_init(&argc, &argv);
+
+ return 0;
+}
+endef
+endif
+
ifndef NO_LIBPERL
define SOURCE_PERL_EMBED
#include <EXTERN.h>
diff --git a/tools/perf/util/cache.h b/tools/perf/util/cache.h
index fc5e5a0..8dd224d 100644
--- a/tools/perf/util/cache.h
+++ b/tools/perf/util/cache.h
@@ -45,6 +45,18 @@ void setup_browser(bool fallback_to_pager);
void exit_browser(bool wait_for_ok);
#endif
+#ifdef NO_GTK2_SUPPORT
+static inline void perf_gtk_setup_browser(int argc __used, const char *argv[] __used, bool fallback_to_pager)
+{
+ if (fallback_to_pager)
+ setup_pager();
+}
+static inline void perf_gtk_exit_browser(bool wait_for_ok __used) {}
+#else
+void perf_gtk_setup_browser(int argc, const char *argv[], bool fallback_to_pager);
+void perf_gtk_exit_browser(bool wait_for_ok);
+#endif
+
char *alias_lookup(const char *alias);
int split_cmdline(char *cmdline, const char ***argv);
diff --git a/tools/perf/util/gtk/browser.c b/tools/perf/util/gtk/browser.c
new file mode 100644
index 0000000..258352a
--- /dev/null
+++ b/tools/perf/util/gtk/browser.c
@@ -0,0 +1,189 @@
+#include "../evlist.h"
+#include "../cache.h"
+#include "../evsel.h"
+#include "../sort.h"
+#include "../hist.h"
+#include "gtk.h"
+
+#include <signal.h>
+
+#define MAX_COLUMNS 32
+
+void perf_gtk_setup_browser(int argc, const char *argv[],
+ bool fallback_to_pager __used)
+{
+ gtk_init(&argc, (char ***)&argv);
+}
+
+void perf_gtk_exit_browser(bool wait_for_ok __used)
+{
+ gtk_main_quit();
+}
+
+static void perf_gtk_signal(int sig)
+{
+ psignal(sig, "perf");
+ gtk_main_quit();
+}
+
+static void perf_gtk_resize_window(GtkWidget *window)
+{
+ GdkRectangle rect;
+ GdkScreen *screen;
+ int monitor;
+ int height;
+ int width;
+
+ screen = gtk_widget_get_screen(window);
+
+ monitor = gdk_screen_get_monitor_at_window(screen, window->window);
+
+ gdk_screen_get_monitor_geometry(screen, monitor, &rect);
+
+ width = rect.width * 3 / 4;
+ height = rect.height * 3 / 4;
+
+ gtk_window_resize(GTK_WINDOW(window), width, height);
+}
+
+static void perf_gtk_show_hists(GtkWidget *window, struct hists *hists)
+{
+ GType col_types[MAX_COLUMNS];
+ GtkCellRenderer *renderer;
+ struct sort_entry *se;
+ GtkListStore *store;
+ struct rb_node *nd;
+ u64 total_period;
+ GtkWidget *view;
+ int col_idx;
+ int nr_cols;
+
+ nr_cols = 0;
+
+ /* The percentage column */
+ col_types[nr_cols++] = G_TYPE_STRING;
+
+ list_for_each_entry(se, &hist_entry__sort_list, list) {
+ if (se->elide)
+ continue;
+
+ col_types[nr_cols++] = G_TYPE_STRING;
+ }
+
+ store = gtk_list_store_newv(nr_cols, col_types);
+
+ view = gtk_tree_view_new();
+
+ renderer = gtk_cell_renderer_text_new();
+
+ col_idx = 0;
+
+ /* The percentage column */
+ gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),
+ -1, "Overhead (%)",
+ renderer, "text",
+ col_idx++, NULL);
+
+ list_for_each_entry(se, &hist_entry__sort_list, list) {
+ if (se->elide)
+ continue;
+
+ gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),
+ -1, se->se_header,
+ renderer, "text",
+ col_idx++, NULL);
+ }
+
+ gtk_tree_view_set_model(GTK_TREE_VIEW(view), GTK_TREE_MODEL(store));
+
+ g_object_unref(GTK_TREE_MODEL(store));
+
+ total_period = hists->stats.total_period;
+
+ for (nd = rb_first(&hists->entries); nd; nd = rb_next(nd)) {
+ struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node);
+ GtkTreeIter iter;
+ double percent;
+ char s[512];
+
+ if (h->filtered)
+ continue;
+
+ gtk_list_store_append(store, &iter);
+
+ col_idx = 0;
+
+ percent = (h->period * 100.0) / total_period;
+
+ snprintf(s, ARRAY_SIZE(s), "%.2f", percent);
+
+ gtk_list_store_set(store, &iter, col_idx++, s, -1);
+
+ list_for_each_entry(se, &hist_entry__sort_list, list) {
+ if (se->elide)
+ continue;
+
+ se->se_snprintf(h, s, ARRAY_SIZE(s),
+ hists__col_len(hists, se->se_width_idx));
+
+ gtk_list_store_set(store, &iter, col_idx++, s, -1);
+ }
+ }
+
+ gtk_container_add(GTK_CONTAINER(window), view);
+}
+
+int perf_evlist__gtk_browse_hists(struct perf_evlist *evlist,
+ const char *help __used,
+ void (*timer) (void *arg)__used,
+ void *arg __used, int delay_secs __used)
+{
+ struct perf_evsel *pos;
+ GtkWidget *notebook;
+ GtkWidget *window;
+
+ signal(SIGSEGV, perf_gtk_signal);
+ signal(SIGFPE, perf_gtk_signal);
+ signal(SIGINT, perf_gtk_signal);
+ signal(SIGQUIT, perf_gtk_signal);
+ signal(SIGTERM, perf_gtk_signal);
+
+ window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+
+ gtk_window_set_title(GTK_WINDOW(window), "perf report");
+
+ g_signal_connect(window, "delete_event", gtk_main_quit, NULL);
+
+ notebook = gtk_notebook_new();
+
+ list_for_each_entry(pos, &evlist->entries, node) {
+ struct hists *hists = &pos->hists;
+ const char *evname = event_name(pos);
+ GtkWidget *scrolled_window;
+ GtkWidget *tab_label;
+
+ scrolled_window = gtk_scrolled_window_new(NULL, NULL);
+
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+
+ perf_gtk_show_hists(scrolled_window, hists);
+
+ tab_label = gtk_label_new(evname);
+
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), scrolled_window, tab_label);
+ }
+
+ gtk_container_add(GTK_CONTAINER(window), notebook);
+
+ gtk_widget_show_all(window);
+
+ perf_gtk_resize_window(window);
+
+ gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
+
+ gtk_main();
+
+ return 0;
+}
diff --git a/tools/perf/util/gtk/gtk.h b/tools/perf/util/gtk/gtk.h
new file mode 100644
index 0000000..75177ee
--- /dev/null
+++ b/tools/perf/util/gtk/gtk.h
@@ -0,0 +1,8 @@
+#ifndef _PERF_GTK_H_
+#define _PERF_GTK_H_ 1
+
+#pragma GCC diagnostic ignored "-Wstrict-prototypes"
+#include <gtk/gtk.h>
+#pragma GCC diagnostic error "-Wstrict-prototypes"
+
+#endif /* _PERF_GTK_H_ */
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 10343c0..2cae9df 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -147,6 +147,23 @@ int perf_evlist__tui_browse_hists(struct perf_evlist *evlist, const char *help,
int refresh);
#endif
+#ifdef NO_GTK2_SUPPORT
+static inline
+int perf_evlist__gtk_browse_hists(struct perf_evlist *evlist __used,
+ const char *help __used,
+ void(*timer)(void *arg) __used,
+ void *arg __used,
+ int refresh __used)
+{
+ return 0;
+}
+
+#else
+int perf_evlist__gtk_browse_hists(struct perf_evlist *evlist, const char *help,
+ void(*timer)(void *arg), void *arg,
+ int refresh);
+#endif
+
unsigned int hists__sort_list_width(struct hists *self);
#endif /* __PERF_HIST_H */
--
1.7.9.2.358.g22243
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [GIT PULL 0/3] perf/core fixes and improvements
2012-03-19 19:12 [GIT PULL 0/3] perf/core fixes and improvements Arnaldo Carvalho de Melo
` (2 preceding siblings ...)
2012-03-19 19:12 ` [PATCH 3/3] perf report: Add a simple GTK2-based 'perf report' browser Arnaldo Carvalho de Melo
@ 2012-03-19 19:47 ` Ingo Molnar
2012-03-19 19:56 ` Ingo Molnar
` (2 more replies)
3 siblings, 3 replies; 8+ messages in thread
From: Ingo Molnar @ 2012-03-19 19:47 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Colin Walters, Namhyung Kim, Namhyung Kim,
Paul Mackerras, Pekka Enberg, Peter Zijlstra, arnaldo.melo,
Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> Hi Ingo,
>
> Please consider pulling, now there are two pull request worth of
> changesets in my perf/core branch,
>
> - Arnaldo
>
> The following changes since commit 6db6127c4dad634ab98709b81e2f2770890b0d53:
>
> perf report: Treat an argument as a symbol filter (2012-03-16 16:44:36 -0300)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
>
> for you to fetch changes up to c31a94570552dcaa517c4f7a043ffd28835016be:
>
> perf report: Add a simple GTK2-based 'perf report' browser (2012-03-19 15:13:29 -0300)
>
> ----------------------------------------------------------------
> Fixes for the last batch from Namhyung and the initial GTK report browser
> from Pekka.
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Namhyung Kim (2):
> perf ui browser: Clean lines inside of the input window
> perf report: Document --symbol-filter option
>
> Pekka Enberg (1):
> perf report: Add a simple GTK2-based 'perf report' browser
>
> tools/perf/Documentation/perf-report.txt | 5 +
> tools/perf/Makefile | 14 +++
> tools/perf/builtin-report.c | 19 ++-
> tools/perf/config/feature-tests.mak | 15 +++
> tools/perf/util/cache.h | 12 ++
> tools/perf/util/gtk/browser.c | 189 ++++++++++++++++++++++++++++++
> tools/perf/util/gtk/gtk.h | 8 ++
> tools/perf/util/hist.h | 17 +++
> tools/perf/util/ui/util.c | 10 +-
> 9 files changed, 282 insertions(+), 7 deletions(-)
> create mode 100644 tools/perf/util/gtk/browser.c
> create mode 100644 tools/perf/util/gtk/gtk.h
Pulled, thanks Arnaldo!
I noticed that there's no help text for GTK support - how will a
user find that 'perf report --gtk' will do something nice?
Another detail is that if GTK support is not compiled in:
Makefile:515: GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev
then the --gtk output is not very informative:
earth5:~/tip/tools/perf> perf report --gtk
earth5:~/tip/tools/perf>
:-)
A third detail, I do have gtk2-devel installed:
Package gtk2-devel-2.24.10-1.fc17.x86_64 already installed and latest version
yet I got the above message.
It is not easy to figure out *why* a feature test failed,
unfortunately. It would be nice if V=1 or something like that
would output the failure.
I applied the hack below and ran the gtk testcase, which gave:
earth5:~/tip/tools/perf> . ./test.4273.sh
In file included from /usr/lib64/glib-2.0/include/glibconfig.h:9:0,
from /usr/include/glib-2.0/glib/gtypes.h:34,
from /usr/include/glib-2.0/glib/galloca.h:34,
from /usr/include/glib-2.0/glib.h:32,
from /usr/include/glib-2.0/gobject/gbinding.h:30,
from /usr/include/glib-2.0/glib-object.h:25,
from /usr/include/glib-2.0/gio/gioenums.h:30,
from /usr/include/glib-2.0/gio/giotypes.h:30,
from /usr/include/glib-2.0/gio/gio.h:28,
from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
from /usr/include/gtk-2.0/gdk/gdk.h:32,
from /usr/include/gtk-2.0/gtk/gtk.h:32,
from test.4273.c:2:
/usr/include/glib-2.0/glib/gmacros.h:346:7: error: "_MSC_VER" is not defined [-Werror=undef]
cc1: all warnings being treated as errors
Which allowed me to fix the feature test and the gtk.h include
file wrapper via the second patch below.
And then I was greeted by the GTK report window on 'perf report
--gtk' ;-)
Thanks,
Ingo
diff --git a/tools/perf/config/utilities.mak b/tools/perf/config/utilities.mak
index 8046182..68cf795 100644
--- a/tools/perf/config/utilities.mak
+++ b/tools/perf/config/utilities.mak
@@ -183,6 +183,8 @@ _gea_err = $(if $(1),$(error Please set '$(1)' appropriately))
# Usage: option = $(call try-cc, source-to-build, cc-options)
try-cc = $(shell sh -c \
'TMP="$(OUTPUT)$(TMPOUT).$$$$"; \
+ echo "$(1)" > test.$$$$.c; \
+ echo $(CC) -x c test.$$$$.c $(2) -o "$$TMP" > test.$$$$.sh; \
echo "$(1)" | \
$(CC) -x c - $(2) -o "$$TMP" > /dev/null 2>&1 && echo y; \
rm -f "$$TMP"')
Signed-off-by: Ingo Molnar <mingo@elte.hu>
diff --git a/tools/perf/config/feature-tests.mak b/tools/perf/config/feature-tests.mak
index d9084e0..ae8b471 100644
--- a/tools/perf/config/feature-tests.mak
+++ b/tools/perf/config/feature-tests.mak
@@ -68,7 +68,9 @@ endif
ifndef NO_GTK2
define SOURCE_GTK2
#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#pragma GCC diagnostic ignored \"-Wundef\"
#include <gtk/gtk.h>
+#pragma GCC diagnostic error \"-Wundef\"
#pragma GCC diagnostic error \"-Wstrict-prototypes\"
int main(int argc, char *argv[])
diff --git a/tools/perf/util/gtk/gtk.h b/tools/perf/util/gtk/gtk.h
index 75177ee..c7a941f 100644
--- a/tools/perf/util/gtk/gtk.h
+++ b/tools/perf/util/gtk/gtk.h
@@ -2,7 +2,9 @@
#define _PERF_GTK_H_ 1
#pragma GCC diagnostic ignored "-Wstrict-prototypes"
+#pragma GCC diagnostic ignored "-Wundef"
#include <gtk/gtk.h>
+#pragma GCC diagnostic error "-Wundef"
#pragma GCC diagnostic error "-Wstrict-prototypes"
#endif /* _PERF_GTK_H_ */
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [GIT PULL 0/3] perf/core fixes and improvements
2012-03-19 19:47 ` [GIT PULL 0/3] perf/core fixes and improvements Ingo Molnar
@ 2012-03-19 19:56 ` Ingo Molnar
2012-03-19 20:20 ` Ingo Molnar
2012-03-19 21:17 ` Arnaldo Carvalho de Melo
2 siblings, 0 replies; 8+ messages in thread
From: Ingo Molnar @ 2012-03-19 19:56 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Colin Walters, Namhyung Kim, Namhyung Kim,
Paul Mackerras, Pekka Enberg, Peter Zijlstra, arnaldo.melo,
Arnaldo Carvalho de Melo
* Ingo Molnar <mingo@kernel.org> wrote:
> diff --git a/tools/perf/config/utilities.mak b/tools/perf/config/utilities.mak
> index 8046182..68cf795 100644
> --- a/tools/perf/config/utilities.mak
> +++ b/tools/perf/config/utilities.mak
> @@ -183,6 +183,8 @@ _gea_err = $(if $(1),$(error Please set '$(1)' appropriately))
> # Usage: option = $(call try-cc, source-to-build, cc-options)
> try-cc = $(shell sh -c \
> 'TMP="$(OUTPUT)$(TMPOUT).$$$$"; \
> + echo "$(1)" > test.$$$$.c; \
> + echo $(CC) -x c test.$$$$.c $(2) -o "$$TMP" > test.$$$$.sh; \
> echo "$(1)" | \
> $(CC) -x c - $(2) -o "$$TMP" > /dev/null 2>&1 && echo y; \
> rm -f "$$TMP"')
So, instead of this hack we'd like to output the build failure
that gcc gives, when 'make V=1' is specified or so.
Thanks,
Ingo
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [GIT PULL 0/3] perf/core fixes and improvements
2012-03-19 19:47 ` [GIT PULL 0/3] perf/core fixes and improvements Ingo Molnar
2012-03-19 19:56 ` Ingo Molnar
@ 2012-03-19 20:20 ` Ingo Molnar
2012-03-19 21:17 ` Arnaldo Carvalho de Melo
2 siblings, 0 replies; 8+ messages in thread
From: Ingo Molnar @ 2012-03-19 20:20 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Colin Walters, Namhyung Kim, Namhyung Kim,
Paul Mackerras, Pekka Enberg, Peter Zijlstra, arnaldo.melo,
Arnaldo Carvalho de Melo
* Ingo Molnar <mingo@kernel.org> wrote:
> I noticed that there's no help text for GTK support - how will a
> user find that 'perf report --gtk' will do something nice?
Ignore this one - I forgot to do 'make install-doc'.
Thanks,
Ingo
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [GIT PULL 0/3] perf/core fixes and improvements
2012-03-19 19:47 ` [GIT PULL 0/3] perf/core fixes and improvements Ingo Molnar
2012-03-19 19:56 ` Ingo Molnar
2012-03-19 20:20 ` Ingo Molnar
@ 2012-03-19 21:17 ` Arnaldo Carvalho de Melo
2 siblings, 0 replies; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-03-19 21:17 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Colin Walters, Namhyung Kim, Namhyung Kim,
Paul Mackerras, Pekka Enberg, Peter Zijlstra
Em Mon, Mar 19, 2012 at 08:47:25PM +0100, Ingo Molnar escreveu:
> Pulled, thanks Arnaldo!
>
> I noticed that there's no help text for GTK support - how will a
> user find that 'perf report --gtk' will do something nice?
>
> Another detail is that if GTK support is not compiled in:
>
> Makefile:515: GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev
>
> then the --gtk output is not very informative:
>
> earth5:~/tip/tools/perf> perf report --gtk
> earth5:~/tip/tools/perf>
>
> :-)
>
> A third detail, I do have gtk2-devel installed:
>
> Package gtk2-devel-2.24.10-1.fc17.x86_64 already installed and latest version
Yeah, as you said, the ball is rolling! ;-)
> yet I got the above message.
>
> It is not easy to figure out *why* a feature test failed,
> unfortunately. It would be nice if V=1 or something like that
> would output the failure.
Yeah, I also was frustrated by V=1 not affecting the feature tests, and
did what you did, just didn't got around to fix it properly.
> I applied the hack below and ran the gtk testcase, which gave:
>
> earth5:~/tip/tools/perf> . ./test.4273.sh
> In file included from /usr/lib64/glib-2.0/include/glibconfig.h:9:0,
> from /usr/include/glib-2.0/glib/gtypes.h:34,
> from /usr/include/glib-2.0/glib/galloca.h:34,
> from /usr/include/glib-2.0/glib.h:32,
> from /usr/include/glib-2.0/gobject/gbinding.h:30,
> from /usr/include/glib-2.0/glib-object.h:25,
> from /usr/include/glib-2.0/gio/gioenums.h:30,
> from /usr/include/glib-2.0/gio/giotypes.h:30,
> from /usr/include/glib-2.0/gio/gio.h:28,
> from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
> from /usr/include/gtk-2.0/gdk/gdk.h:32,
> from /usr/include/gtk-2.0/gtk/gtk.h:32,
> from test.4273.c:2:
> /usr/include/glib-2.0/glib/gmacros.h:346:7: error: "_MSC_VER" is not defined [-Werror=undef]
> cc1: all warnings being treated as errors
>
> Which allowed me to fix the feature test and the gtk.h include
> file wrapper via the second patch below.
>
> And then I was greeted by the GTK report window on 'perf report
> --gtk' ;-)
>
> Thanks,
>
> Ingo
>
> diff --git a/tools/perf/config/utilities.mak b/tools/perf/config/utilities.mak
> index 8046182..68cf795 100644
> --- a/tools/perf/config/utilities.mak
> +++ b/tools/perf/config/utilities.mak
> @@ -183,6 +183,8 @@ _gea_err = $(if $(1),$(error Please set '$(1)' appropriately))
> # Usage: option = $(call try-cc, source-to-build, cc-options)
> try-cc = $(shell sh -c \
> 'TMP="$(OUTPUT)$(TMPOUT).$$$$"; \
> + echo "$(1)" > test.$$$$.c; \
> + echo $(CC) -x c test.$$$$.c $(2) -o "$$TMP" > test.$$$$.sh; \
> echo "$(1)" | \
> $(CC) -x c - $(2) -o "$$TMP" > /dev/null 2>&1 && echo y; \
> rm -f "$$TMP"')
>
> Signed-off-by: Ingo Molnar <mingo@elte.hu>
>
> diff --git a/tools/perf/config/feature-tests.mak b/tools/perf/config/feature-tests.mak
> index d9084e0..ae8b471 100644
> --- a/tools/perf/config/feature-tests.mak
> +++ b/tools/perf/config/feature-tests.mak
> @@ -68,7 +68,9 @@ endif
> ifndef NO_GTK2
> define SOURCE_GTK2
> #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
> +#pragma GCC diagnostic ignored \"-Wundef\"
> #include <gtk/gtk.h>
> +#pragma GCC diagnostic error \"-Wundef\"
> #pragma GCC diagnostic error \"-Wstrict-prototypes\"
>
> int main(int argc, char *argv[])
> diff --git a/tools/perf/util/gtk/gtk.h b/tools/perf/util/gtk/gtk.h
> index 75177ee..c7a941f 100644
> --- a/tools/perf/util/gtk/gtk.h
> +++ b/tools/perf/util/gtk/gtk.h
> @@ -2,7 +2,9 @@
> #define _PERF_GTK_H_ 1
>
> #pragma GCC diagnostic ignored "-Wstrict-prototypes"
> +#pragma GCC diagnostic ignored "-Wundef"
> #include <gtk/gtk.h>
> +#pragma GCC diagnostic error "-Wundef"
> #pragma GCC diagnostic error "-Wstrict-prototypes"
>
> #endif /* _PERF_GTK_H_ */
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2012-03-19 21:17 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-19 19:12 [GIT PULL 0/3] perf/core fixes and improvements Arnaldo Carvalho de Melo
2012-03-19 19:12 ` [PATCH 1/3] perf ui browser: Clean lines inside of the input window Arnaldo Carvalho de Melo
2012-03-19 19:12 ` [PATCH 2/3] perf report: Document --symbol-filter option Arnaldo Carvalho de Melo
2012-03-19 19:12 ` [PATCH 3/3] perf report: Add a simple GTK2-based 'perf report' browser Arnaldo Carvalho de Melo
2012-03-19 19:47 ` [GIT PULL 0/3] perf/core fixes and improvements Ingo Molnar
2012-03-19 19:56 ` Ingo Molnar
2012-03-19 20:20 ` Ingo Molnar
2012-03-19 21:17 ` Arnaldo Carvalho de Melo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).