aboutsummaryrefslogtreecommitdiff
path: root/tools/perf/ui
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/ui')
-rw-r--r--tools/perf/ui/browsers/annotate.c9
-rw-r--r--tools/perf/ui/browsers/hists.c22
-rw-r--r--tools/perf/ui/browsers/map.c4
-rw-r--r--tools/perf/ui/gtk/annotate.c11
-rw-r--r--tools/perf/ui/gtk/browser.c2
-rw-r--r--tools/perf/ui/gtk/gtk.h2
-rw-r--r--tools/perf/ui/gtk/helpline.c2
-rw-r--r--tools/perf/ui/gtk/hists.c2
-rw-r--r--tools/perf/ui/hist.c2
-rw-r--r--tools/perf/ui/setup.c19
-rw-r--r--tools/perf/ui/tui/setup.c1
-rw-r--r--tools/perf/ui/ui.h3
12 files changed, 56 insertions, 23 deletions
diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
index c03fa76c02ff..12c3ce530e42 100644
--- a/tools/perf/ui/browsers/annotate.c
+++ b/tools/perf/ui/browsers/annotate.c
@@ -441,7 +441,8 @@ static void ui_browser__init_asm_mode(struct ui_browser *browser)
static int sym_title(struct symbol *sym, struct map *map, char *title,
size_t sz, int percent_type)
{
- return snprintf(title, sz, "%s %s [Percent: %s]", sym->name, map->dso->long_name,
+ return snprintf(title, sz, "%s %s [Percent: %s]", sym->name,
+ map__dso(map)->long_name,
percent_type_str(percent_type));
}
@@ -964,20 +965,22 @@ int symbol__tui_annotate(struct map_symbol *ms, struct evsel *evsel,
},
.opts = opts,
};
+ struct dso *dso;
int ret = -1, err;
int not_annotated = list_empty(&notes->src->source);
if (sym == NULL)
return -1;
- if (ms->map->dso->annotate_warned)
+ dso = map__dso(ms->map);
+ if (dso->annotate_warned)
return -1;
if (not_annotated) {
err = symbol__annotate2(ms, evsel, opts, &browser.arch);
if (err) {
char msg[BUFSIZ];
- ms->map->dso->annotate_warned = true;
+ dso->annotate_warned = true;
symbol__strerror_disassemble(ms, err, msg, sizeof(msg));
ui__error("Couldn't annotate %s:\n%s", sym->name, msg);
goto out_free_offsets;
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index b72ee6822222..69c81759a64f 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -29,8 +29,8 @@
#include "../../util/top.h"
#include "../../util/thread.h"
#include "../../util/block-info.h"
+#include "../../util/util.h"
#include "../../arch/common.h"
-#include "../../perf.h"
#include "../browsers/hists.h"
#include "../helpline.h"
@@ -2487,7 +2487,7 @@ static struct symbol *symbol__new_unresolved(u64 addr, struct map *map)
return NULL;
}
- dso__insert_symbol(map->dso, sym);
+ dso__insert_symbol(map__dso(map), sym);
}
return sym;
@@ -2499,7 +2499,9 @@ add_annotate_opt(struct hist_browser *browser __maybe_unused,
struct map_symbol *ms,
u64 addr)
{
- if (!ms->map || !ms->map->dso || ms->map->dso->annotate_warned)
+ struct dso *dso;
+
+ if (!ms->map || (dso = map__dso(ms->map)) == NULL || dso->annotate_warned)
return 0;
if (!ms->sym)
@@ -2589,9 +2591,10 @@ static int hists_browser__zoom_map(struct hist_browser *browser, struct map *map
browser->hists->dso_filter = NULL;
ui_helpline__pop();
} else {
+ struct dso *dso = map__dso(map);
ui_helpline__fpush("To zoom out press ESC or ENTER + \"Zoom out of %s DSO\"",
- __map__is_kernel(map) ? "the Kernel" : map->dso->short_name);
- browser->hists->dso_filter = map->dso;
+ __map__is_kernel(map) ? "the Kernel" : dso->short_name);
+ browser->hists->dso_filter = dso;
perf_hpp__set_elide(HISTC_DSO, true);
pstack__push(browser->pstack, &browser->hists->dso_filter);
}
@@ -2616,7 +2619,7 @@ add_dso_opt(struct hist_browser *browser, struct popup_action *act,
if (asprintf(optstr, "Zoom %s %s DSO (use the 'k' hotkey to zoom directly into the kernel)",
browser->hists->dso_filter ? "out of" : "into",
- __map__is_kernel(map) ? "the Kernel" : map->dso->short_name) < 0)
+ __map__is_kernel(map) ? "the Kernel" : map__dso(map)->short_name) < 0)
return 0;
act->ms.map = map;
@@ -3091,8 +3094,8 @@ do_hotkey: // key came straight from options ui__popup_menu()
if (!browser->selection ||
!browser->selection->map ||
- !browser->selection->map->dso ||
- browser->selection->map->dso->annotate_warned) {
+ !map__dso(browser->selection->map) ||
+ map__dso(browser->selection->map)->annotate_warned) {
continue;
}
@@ -3139,7 +3142,8 @@ do_hotkey: // key came straight from options ui__popup_menu()
continue;
case 'k':
if (browser->selection != NULL)
- hists_browser__zoom_map(browser, browser->selection->maps->machine->vmlinux_map);
+ hists_browser__zoom_map(browser,
+ maps__machine(browser->selection->maps)->vmlinux_map);
continue;
case 'V':
verbose = (verbose + 1) % 4;
diff --git a/tools/perf/ui/browsers/map.c b/tools/perf/ui/browsers/map.c
index 3d49b916c9e4..3d1b958d8832 100644
--- a/tools/perf/ui/browsers/map.c
+++ b/tools/perf/ui/browsers/map.c
@@ -76,7 +76,7 @@ static int map_browser__run(struct map_browser *browser)
{
int key;
- if (ui_browser__show(&browser->b, browser->map->dso->long_name,
+ if (ui_browser__show(&browser->b, map__dso(browser->map)->long_name,
"Press ESC to exit, %s / to search",
verbose > 0 ? "" : "restart with -v to use") < 0)
return -1;
@@ -106,7 +106,7 @@ int map__browse(struct map *map)
{
struct map_browser mb = {
.b = {
- .entries = &map->dso->symbols,
+ .entries = &map__dso(map)->symbols,
.refresh = ui_browser__rb_tree_refresh,
.seek = ui_browser__rb_tree_seek,
.write = map_browser__write,
diff --git a/tools/perf/ui/gtk/annotate.c b/tools/perf/ui/gtk/annotate.c
index 0a50e962f9a3..2effac77ca8c 100644
--- a/tools/perf/ui/gtk/annotate.c
+++ b/tools/perf/ui/gtk/annotate.c
@@ -162,8 +162,10 @@ static int perf_gtk__annotate_symbol(GtkWidget *window, struct map_symbol *ms,
}
static int symbol__gtk_annotate(struct map_symbol *ms, struct evsel *evsel,
+ struct annotation_options *options,
struct hist_browser_timer *hbt)
{
+ struct dso *dso = map__dso(ms->map);
struct symbol *sym = ms->sym;
GtkWidget *window;
GtkWidget *notebook;
@@ -171,13 +173,13 @@ static int symbol__gtk_annotate(struct map_symbol *ms, struct evsel *evsel,
GtkWidget *tab_label;
int err;
- if (ms->map->dso->annotate_warned)
+ if (dso->annotate_warned)
return -1;
- err = symbol__annotate(ms, evsel, &annotation__default_options, NULL);
+ err = symbol__annotate(ms, evsel, options, NULL);
if (err) {
char msg[BUFSIZ];
- ms->map->dso->annotate_warned = true;
+ dso->annotate_warned = true;
symbol__strerror_disassemble(ms, err, msg, sizeof(msg));
ui__error("Couldn't annotate %s: %s\n", sym->name, msg);
return -1;
@@ -242,9 +244,10 @@ static int symbol__gtk_annotate(struct map_symbol *ms, struct evsel *evsel,
int hist_entry__gtk_annotate(struct hist_entry *he,
struct evsel *evsel,
+ struct annotation_options *options,
struct hist_browser_timer *hbt)
{
- return symbol__gtk_annotate(&he->ms, evsel, hbt);
+ return symbol__gtk_annotate(&he->ms, evsel, options, hbt);
}
void perf_gtk__show_annotations(void)
diff --git a/tools/perf/ui/gtk/browser.c b/tools/perf/ui/gtk/browser.c
index 8f3e43d148a8..d2dadf3873fb 100644
--- a/tools/perf/ui/gtk/browser.c
+++ b/tools/perf/ui/gtk/browser.c
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: GPL-2.0
+#include "gtk.h"
#include "../evsel.h"
#include "../sort.h"
#include "../hist.h"
#include "../helpline.h"
-#include "gtk.h"
#include <signal.h>
diff --git a/tools/perf/ui/gtk/gtk.h b/tools/perf/ui/gtk/gtk.h
index a2b497f03fd6..1e84dceb5267 100644
--- a/tools/perf/ui/gtk/gtk.h
+++ b/tools/perf/ui/gtk/gtk.h
@@ -56,11 +56,13 @@ struct evsel;
struct evlist;
struct hist_entry;
struct hist_browser_timer;
+struct annotation_options;
int evlist__gtk_browse_hists(struct evlist *evlist, const char *help,
struct hist_browser_timer *hbt, float min_pcnt);
int hist_entry__gtk_annotate(struct hist_entry *he,
struct evsel *evsel,
+ struct annotation_options *options,
struct hist_browser_timer *hbt);
void perf_gtk__show_annotations(void);
diff --git a/tools/perf/ui/gtk/helpline.c b/tools/perf/ui/gtk/helpline.c
index e40a006aead8..8ea95898a5bd 100644
--- a/tools/perf/ui/gtk/helpline.c
+++ b/tools/perf/ui/gtk/helpline.c
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: GPL-2.0
+#include "gtk.h"
#include <stdio.h>
#include <string.h>
#include <linux/kernel.h>
-#include "gtk.h"
#include "../ui.h"
#include "../helpline.h"
diff --git a/tools/perf/ui/gtk/hists.c b/tools/perf/ui/gtk/hists.c
index c83be2d57f7e..bae21f336ae6 100644
--- a/tools/perf/ui/gtk/hists.c
+++ b/tools/perf/ui/gtk/hists.c
@@ -1,4 +1,5 @@
// SPDX-License-Identifier: GPL-2.0
+#include "gtk.h"
#include "../evlist.h"
#include "../callchain.h"
#include "../evsel.h"
@@ -6,7 +7,6 @@
#include "../hist.h"
#include "../helpline.h"
#include "../string2.h"
-#include "gtk.h"
#include <signal.h>
#include <stdlib.h>
#include <linux/string.h>
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index 5075ecead5f3..f164bd26fc41 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -11,7 +11,7 @@
#include "../util/sort.h"
#include "../util/evsel.h"
#include "../util/evlist.h"
-#include "../perf.h"
+#include "../util/util.h"
/* hist period print (hpp) functions */
diff --git a/tools/perf/ui/setup.c b/tools/perf/ui/setup.c
index 25ded88801a3..ff800047e697 100644
--- a/tools/perf/ui/setup.c
+++ b/tools/perf/ui/setup.c
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: GPL-2.0
#include <dlfcn.h>
+#include <signal.h>
#include <unistd.h>
#include <subcmd/pager.h>
@@ -120,3 +121,21 @@ void exit_browser(bool wait_for_ok)
}
mutex_destroy(&ui__lock);
}
+
+void pthread__block_sigwinch(void)
+{
+ sigset_t set;
+
+ sigemptyset(&set);
+ sigaddset(&set, SIGWINCH);
+ pthread_sigmask(SIG_BLOCK, &set, NULL);
+}
+
+void pthread__unblock_sigwinch(void)
+{
+ sigset_t set;
+
+ sigemptyset(&set);
+ sigaddset(&set, SIGWINCH);
+ pthread_sigmask(SIG_UNBLOCK, &set, NULL);
+}
diff --git a/tools/perf/ui/tui/setup.c b/tools/perf/ui/tui/setup.c
index a3b8c397c24d..c1886aa184b3 100644
--- a/tools/perf/ui/tui/setup.c
+++ b/tools/perf/ui/tui/setup.c
@@ -9,7 +9,6 @@
#endif
#include "../../util/debug.h"
-#include "../../perf.h"
#include "../browser.h"
#include "../helpline.h"
#include "../ui.h"
diff --git a/tools/perf/ui/ui.h b/tools/perf/ui/ui.h
index 99f8d2fe9bc5..d8e911205582 100644
--- a/tools/perf/ui/ui.h
+++ b/tools/perf/ui/ui.h
@@ -31,4 +31,7 @@ struct option;
int stdio__config_color(const struct option *opt, const char *mode, int unset);
+void pthread__block_sigwinch(void);
+void pthread__unblock_sigwinch(void);
+
#endif /* _PERF_UI_H_ */