diff options
Diffstat (limited to 'tools/perf/ui/browsers/hists.c')
-rw-r--r-- | tools/perf/ui/browsers/hists.c | 63 |
1 files changed, 39 insertions, 24 deletions
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c index a440e03cd8c2..a7045ea6d1d5 100644 --- a/tools/perf/ui/browsers/hists.c +++ b/tools/perf/ui/browsers/hists.c | |||
@@ -1267,10 +1267,8 @@ static inline void free_popup_options(char **options, int n) | |||
1267 | { | 1267 | { |
1268 | int i; | 1268 | int i; |
1269 | 1269 | ||
1270 | for (i = 0; i < n; ++i) { | 1270 | for (i = 0; i < n; ++i) |
1271 | free(options[i]); | 1271 | zfree(&options[i]); |
1272 | options[i] = NULL; | ||
1273 | } | ||
1274 | } | 1272 | } |
1275 | 1273 | ||
1276 | /* Check whether the browser is for 'top' or 'report' */ | 1274 | /* Check whether the browser is for 'top' or 'report' */ |
@@ -1329,7 +1327,7 @@ static int switch_data_file(void) | |||
1329 | 1327 | ||
1330 | abs_path[nr_options] = strdup(path); | 1328 | abs_path[nr_options] = strdup(path); |
1331 | if (!abs_path[nr_options]) { | 1329 | if (!abs_path[nr_options]) { |
1332 | free(options[nr_options]); | 1330 | zfree(&options[nr_options]); |
1333 | ui__warning("Can't search all data files due to memory shortage.\n"); | 1331 | ui__warning("Can't search all data files due to memory shortage.\n"); |
1334 | fclose(file); | 1332 | fclose(file); |
1335 | break; | 1333 | break; |
@@ -1400,6 +1398,36 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events, | |||
1400 | char script_opt[64]; | 1398 | char script_opt[64]; |
1401 | int delay_secs = hbt ? hbt->refresh : 0; | 1399 | int delay_secs = hbt ? hbt->refresh : 0; |
1402 | 1400 | ||
1401 | #define HIST_BROWSER_HELP_COMMON \ | ||
1402 | "h/?/F1 Show this window\n" \ | ||
1403 | "UP/DOWN/PGUP\n" \ | ||
1404 | "PGDN/SPACE Navigate\n" \ | ||
1405 | "q/ESC/CTRL+C Exit browser\n\n" \ | ||
1406 | "For multiple event sessions:\n\n" \ | ||
1407 | "TAB/UNTAB Switch events\n\n" \ | ||
1408 | "For symbolic views (--sort has sym):\n\n" \ | ||
1409 | "-> Zoom into DSO/Threads & Annotate current symbol\n" \ | ||
1410 | "<- Zoom out\n" \ | ||
1411 | "a Annotate current symbol\n" \ | ||
1412 | "C Collapse all callchains\n" \ | ||
1413 | "d Zoom into current DSO\n" \ | ||
1414 | "E Expand all callchains\n" \ | ||
1415 | |||
1416 | /* help messages are sorted by lexical order of the hotkey */ | ||
1417 | const char report_help[] = HIST_BROWSER_HELP_COMMON | ||
1418 | "i Show header information\n" | ||
1419 | "P Print histograms to perf.hist.N\n" | ||
1420 | "r Run available scripts\n" | ||
1421 | "s Switch to another data file in PWD\n" | ||
1422 | "t Zoom into current Thread\n" | ||
1423 | "V Verbose (DSO names in callchains, etc)\n" | ||
1424 | "/ Filter symbol by name"; | ||
1425 | const char top_help[] = HIST_BROWSER_HELP_COMMON | ||
1426 | "P Print histograms to perf.hist.N\n" | ||
1427 | "t Zoom into current Thread\n" | ||
1428 | "V Verbose (DSO names in callchains, etc)\n" | ||
1429 | "/ Filter symbol by name"; | ||
1430 | |||
1403 | if (browser == NULL) | 1431 | if (browser == NULL) |
1404 | return -1; | 1432 | return -1; |
1405 | 1433 | ||
@@ -1484,29 +1512,16 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events, | |||
1484 | if (is_report_browser(hbt)) | 1512 | if (is_report_browser(hbt)) |
1485 | goto do_data_switch; | 1513 | goto do_data_switch; |
1486 | continue; | 1514 | continue; |
1515 | case 'i': | ||
1516 | /* env->arch is NULL for live-mode (i.e. perf top) */ | ||
1517 | if (env->arch) | ||
1518 | tui__header_window(env); | ||
1519 | continue; | ||
1487 | case K_F1: | 1520 | case K_F1: |
1488 | case 'h': | 1521 | case 'h': |
1489 | case '?': | 1522 | case '?': |
1490 | ui_browser__help_window(&browser->b, | 1523 | ui_browser__help_window(&browser->b, |
1491 | "h/?/F1 Show this window\n" | 1524 | is_report_browser(hbt) ? report_help : top_help); |
1492 | "UP/DOWN/PGUP\n" | ||
1493 | "PGDN/SPACE Navigate\n" | ||
1494 | "q/ESC/CTRL+C Exit browser\n\n" | ||
1495 | "For multiple event sessions:\n\n" | ||
1496 | "TAB/UNTAB Switch events\n\n" | ||
1497 | "For symbolic views (--sort has sym):\n\n" | ||
1498 | "-> Zoom into DSO/Threads & Annotate current symbol\n" | ||
1499 | "<- Zoom out\n" | ||
1500 | "a Annotate current symbol\n" | ||
1501 | "C Collapse all callchains\n" | ||
1502 | "E Expand all callchains\n" | ||
1503 | "d Zoom into current DSO\n" | ||
1504 | "t Zoom into current Thread\n" | ||
1505 | "r Run available scripts('perf report' only)\n" | ||
1506 | "s Switch to another data file in PWD ('perf report' only)\n" | ||
1507 | "P Print histograms to perf.hist.N\n" | ||
1508 | "V Verbose (DSO names in callchains, etc)\n" | ||
1509 | "/ Filter symbol by name"); | ||
1510 | continue; | 1525 | continue; |
1511 | case K_ENTER: | 1526 | case K_ENTER: |
1512 | case K_RIGHT: | 1527 | case K_RIGHT: |