aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/ui/browsers/annotate.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2015-08-13 03:23:53 -0400
committerIngo Molnar <mingo@kernel.org>2015-08-13 03:23:53 -0400
commita897b5f0393a8a05d230c9248dc5324fb30720a0 (patch)
tree8b0ed53246df201d073e8fd6dd47304994b15f5b /tools/perf/ui/browsers/annotate.c
parent5f1230c9b80b89f404938ff88dfa64a963f74f2c (diff)
parent71ef150ee06df29c5b427307dc0bacfe06a8baea (diff)
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo: User visible changes: - Allow selecting the type of callchains per event, including disabling callchains in all but one entry in an event list, to save space, and also to ask for the callchains collected in one event to be used in other events. (Kan Liang) - Beautify more syscall arguments in 'perf trace': (Arnaldo Carvalho de Melo) - A bunch more translate file/pathnames from pointers to strings. - Convert numbers to strings for the 'keyctl' syscall 'option' arg. - Add missing 'clockid' entries. - Fix 'perf probe -L sys_*' as it was not showing all the source code for syscall functions in the kernel. (Masami Hiramatsu) - Make ESC unzoom as well in the hists browser, i.e. in 'report' and 'top', as we're considering repurposing the right and left arrow keys to use in horizontal scrolling, i.e. leave just ESC to be used for what <- works now, and ENTER for what -> does (they are already aliases for ages). (Arnaldo Carvalho de Melo) Infrastructure fixes: - Check for SRCLINE_UNKNOWN case in "srcfile" processing (Andi Kleen) - Wrap the slsmg_{printf,write_nstring} slang functions behind ui_browser, so that we can make the ui_browser based browsers (annotate, menus, hists, etc) UI library agnostic and usable with multiple backends (slang now, GTK+ and others in the future, maybe) (Arnaldo Carvalho de Melo) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools/perf/ui/browsers/annotate.c')
-rw-r--r--tools/perf/ui/browsers/annotate.c43
1 files changed, 22 insertions, 21 deletions
diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
index b5fc847f9660..29739b347599 100644
--- a/tools/perf/ui/browsers/annotate.c
+++ b/tools/perf/ui/browsers/annotate.c
@@ -1,7 +1,6 @@
1#include "../../util/util.h" 1#include "../../util/util.h"
2#include "../browser.h" 2#include "../browser.h"
3#include "../helpline.h" 3#include "../helpline.h"
4#include "../libslang.h"
5#include "../ui.h" 4#include "../ui.h"
6#include "../util.h" 5#include "../util.h"
7#include "../../util/annotate.h" 6#include "../../util/annotate.h"
@@ -134,29 +133,31 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
134 ui_browser__set_percent_color(browser, 133 ui_browser__set_percent_color(browser,
135 bdl->samples[i].percent, 134 bdl->samples[i].percent,
136 current_entry); 135 current_entry);
137 if (annotate_browser__opts.show_total_period) 136 if (annotate_browser__opts.show_total_period) {
138 slsmg_printf("%6" PRIu64 " ", 137 ui_browser__printf(browser, "%6" PRIu64 " ",
139 bdl->samples[i].nr); 138 bdl->samples[i].nr);
140 else 139 } else {
141 slsmg_printf("%6.2f ", bdl->samples[i].percent); 140 ui_browser__printf(browser, "%6.2f ",
141 bdl->samples[i].percent);
142 }
142 } 143 }
143 } else { 144 } else {
144 slsmg_write_nstring(" ", 7 * ab->nr_events); 145 ui_browser__write_nstring(browser, " ", 7 * ab->nr_events);
145 } 146 }
146 } else { 147 } else {
147 ui_browser__set_percent_color(browser, 0, current_entry); 148 ui_browser__set_percent_color(browser, 0, current_entry);
148 slsmg_write_nstring(" ", 7 * ab->nr_events); 149 ui_browser__write_nstring(browser, " ", 7 * ab->nr_events);
149 } 150 }
150 if (ab->have_cycles) { 151 if (ab->have_cycles) {
151 if (dl->ipc) 152 if (dl->ipc)
152 slsmg_printf("%*.2f ", IPC_WIDTH - 1, dl->ipc); 153 ui_browser__printf(browser, "%*.2f ", IPC_WIDTH - 1, dl->ipc);
153 else 154 else
154 slsmg_write_nstring(" ", IPC_WIDTH); 155 ui_browser__write_nstring(browser, " ", IPC_WIDTH);
155 if (dl->cycles) 156 if (dl->cycles)
156 slsmg_printf("%*" PRIu64 " ", 157 ui_browser__printf(browser, "%*" PRIu64 " ",
157 CYCLES_WIDTH - 1, dl->cycles); 158 CYCLES_WIDTH - 1, dl->cycles);
158 else 159 else
159 slsmg_write_nstring(" ", CYCLES_WIDTH); 160 ui_browser__write_nstring(browser, " ", CYCLES_WIDTH);
160 } 161 }
161 162
162 SLsmg_write_char(' '); 163 SLsmg_write_char(' ');
@@ -166,7 +167,7 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
166 width += 1; 167 width += 1;
167 168
168 if (!*dl->line) 169 if (!*dl->line)
169 slsmg_write_nstring(" ", width - pcnt_width); 170 ui_browser__write_nstring(browser, " ", width - pcnt_width);
170 else if (dl->offset == -1) { 171 else if (dl->offset == -1) {
171 if (dl->line_nr && annotate_browser__opts.show_linenr) 172 if (dl->line_nr && annotate_browser__opts.show_linenr)
172 printed = scnprintf(bf, sizeof(bf), "%-*d ", 173 printed = scnprintf(bf, sizeof(bf), "%-*d ",
@@ -174,8 +175,8 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
174 else 175 else
175 printed = scnprintf(bf, sizeof(bf), "%*s ", 176 printed = scnprintf(bf, sizeof(bf), "%*s ",
176 ab->addr_width, " "); 177 ab->addr_width, " ");
177 slsmg_write_nstring(bf, printed); 178 ui_browser__write_nstring(browser, bf, printed);
178 slsmg_write_nstring(dl->line, width - printed - pcnt_width + 1); 179 ui_browser__write_nstring(browser, dl->line, width - printed - pcnt_width + 1);
179 } else { 180 } else {
180 u64 addr = dl->offset; 181 u64 addr = dl->offset;
181 int color = -1; 182 int color = -1;
@@ -194,7 +195,7 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
194 bdl->jump_sources); 195 bdl->jump_sources);
195 prev = annotate_browser__set_jumps_percent_color(ab, bdl->jump_sources, 196 prev = annotate_browser__set_jumps_percent_color(ab, bdl->jump_sources,
196 current_entry); 197 current_entry);
197 slsmg_write_nstring(bf, printed); 198 ui_browser__write_nstring(browser, bf, printed);
198 ui_browser__set_color(browser, prev); 199 ui_browser__set_color(browser, prev);
199 } 200 }
200 201
@@ -208,7 +209,7 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
208 209
209 if (change_color) 210 if (change_color)
210 color = ui_browser__set_color(browser, HE_COLORSET_ADDR); 211 color = ui_browser__set_color(browser, HE_COLORSET_ADDR);
211 slsmg_write_nstring(bf, printed); 212 ui_browser__write_nstring(browser, bf, printed);
212 if (change_color) 213 if (change_color)
213 ui_browser__set_color(browser, color); 214 ui_browser__set_color(browser, color);
214 if (dl->ins && dl->ins->ops->scnprintf) { 215 if (dl->ins && dl->ins->ops->scnprintf) {
@@ -222,11 +223,11 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
222 ui_browser__write_graph(browser, SLSMG_RARROW_CHAR); 223 ui_browser__write_graph(browser, SLSMG_RARROW_CHAR);
223 SLsmg_write_char(' '); 224 SLsmg_write_char(' ');
224 } else { 225 } else {
225 slsmg_write_nstring(" ", 2); 226 ui_browser__write_nstring(browser, " ", 2);
226 } 227 }
227 } else { 228 } else {
228 if (strcmp(dl->name, "retq")) { 229 if (strcmp(dl->name, "retq")) {
229 slsmg_write_nstring(" ", 2); 230 ui_browser__write_nstring(browser, " ", 2);
230 } else { 231 } else {
231 ui_browser__write_graph(browser, SLSMG_LARROW_CHAR); 232 ui_browser__write_graph(browser, SLSMG_LARROW_CHAR);
232 SLsmg_write_char(' '); 233 SLsmg_write_char(' ');
@@ -234,7 +235,7 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
234 } 235 }
235 236
236 disasm_line__scnprintf(dl, bf, sizeof(bf), !annotate_browser__opts.use_offset); 237 disasm_line__scnprintf(dl, bf, sizeof(bf), !annotate_browser__opts.use_offset);
237 slsmg_write_nstring(bf, width - pcnt_width - 3 - printed); 238 ui_browser__write_nstring(browser, bf, width - pcnt_width - 3 - printed);
238 } 239 }
239 240
240 if (current_entry) 241 if (current_entry)