diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/builtin-report.c | 8 | ||||
-rw-r--r-- | tools/perf/perf.c | 25 | ||||
-rw-r--r-- | tools/perf/util/cache.h | 2 | ||||
-rw-r--r-- | tools/perf/util/newt.c | 9 |
4 files changed, 34 insertions, 10 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 1d3c1003b43a..a7b8760e401c 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c | |||
@@ -116,7 +116,7 @@ static int perf_session__add_hist_entry(struct perf_session *self, | |||
116 | * so we don't allocated the extra space needed because the stdio | 116 | * so we don't allocated the extra space needed because the stdio |
117 | * code will not use it. | 117 | * code will not use it. |
118 | */ | 118 | */ |
119 | if (use_browser) | 119 | if (use_browser > 0) |
120 | err = hist_entry__inc_addr_samples(he, al->addr); | 120 | err = hist_entry__inc_addr_samples(he, al->addr); |
121 | out_free_syms: | 121 | out_free_syms: |
122 | free(syms); | 122 | free(syms); |
@@ -330,7 +330,7 @@ static int __cmd_report(void) | |||
330 | hists = rb_entry(next, struct hists, rb_node); | 330 | hists = rb_entry(next, struct hists, rb_node); |
331 | hists__collapse_resort(hists); | 331 | hists__collapse_resort(hists); |
332 | hists__output_resort(hists); | 332 | hists__output_resort(hists); |
333 | if (use_browser) | 333 | if (use_browser > 0) |
334 | hists__browse(hists, help, input_name); | 334 | hists__browse(hists, help, input_name); |
335 | else { | 335 | else { |
336 | const char *evname = NULL; | 336 | const char *evname = NULL; |
@@ -347,7 +347,7 @@ static int __cmd_report(void) | |||
347 | next = rb_next(&hists->rb_node); | 347 | next = rb_next(&hists->rb_node); |
348 | } | 348 | } |
349 | 349 | ||
350 | if (!use_browser && sort_order == default_sort_order && | 350 | if (use_browser <= 0 && sort_order == default_sort_order && |
351 | parent_pattern == default_parent_pattern) { | 351 | parent_pattern == default_parent_pattern) { |
352 | fprintf(stdout, "#\n# (%s)\n#\n", help); | 352 | fprintf(stdout, "#\n# (%s)\n#\n", help); |
353 | 353 | ||
@@ -491,7 +491,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __used) | |||
491 | * so don't allocate extra space that won't be used in the stdio | 491 | * so don't allocate extra space that won't be used in the stdio |
492 | * implementation. | 492 | * implementation. |
493 | */ | 493 | */ |
494 | if (use_browser) | 494 | if (use_browser > 0) |
495 | symbol_conf.priv_size = sizeof(struct sym_priv); | 495 | symbol_conf.priv_size = sizeof(struct sym_priv); |
496 | 496 | ||
497 | if (symbol__init() < 0) | 497 | if (symbol__init() < 0) |
diff --git a/tools/perf/perf.c b/tools/perf/perf.c index 08e0e5d2b50e..6e4871191138 100644 --- a/tools/perf/perf.c +++ b/tools/perf/perf.c | |||
@@ -15,15 +15,15 @@ | |||
15 | #include "util/parse-events.h" | 15 | #include "util/parse-events.h" |
16 | #include "util/debugfs.h" | 16 | #include "util/debugfs.h" |
17 | 17 | ||
18 | bool use_browser; | ||
19 | |||
20 | const char perf_usage_string[] = | 18 | const char perf_usage_string[] = |
21 | "perf [--version] [--help] COMMAND [ARGS]"; | 19 | "perf [--version] [--help] COMMAND [ARGS]"; |
22 | 20 | ||
23 | const char perf_more_info_string[] = | 21 | const char perf_more_info_string[] = |
24 | "See 'perf help COMMAND' for more information on a specific command."; | 22 | "See 'perf help COMMAND' for more information on a specific command."; |
25 | 23 | ||
24 | int use_browser = -1; | ||
26 | static int use_pager = -1; | 25 | static int use_pager = -1; |
26 | |||
27 | struct pager_config { | 27 | struct pager_config { |
28 | const char *cmd; | 28 | const char *cmd; |
29 | int val; | 29 | int val; |
@@ -49,6 +49,24 @@ int check_pager_config(const char *cmd) | |||
49 | return c.val; | 49 | return c.val; |
50 | } | 50 | } |
51 | 51 | ||
52 | static int tui_command_config(const char *var, const char *value, void *data) | ||
53 | { | ||
54 | struct pager_config *c = data; | ||
55 | if (!prefixcmp(var, "tui.") && !strcmp(var + 4, c->cmd)) | ||
56 | c->val = perf_config_bool(var, value); | ||
57 | return 0; | ||
58 | } | ||
59 | |||
60 | /* returns 0 for "no tui", 1 for "use tui", and -1 for "not specified" */ | ||
61 | static int check_tui_config(const char *cmd) | ||
62 | { | ||
63 | struct pager_config c; | ||
64 | c.cmd = cmd; | ||
65 | c.val = -1; | ||
66 | perf_config(tui_command_config, &c); | ||
67 | return c.val; | ||
68 | } | ||
69 | |||
52 | static void commit_pager_choice(void) | 70 | static void commit_pager_choice(void) |
53 | { | 71 | { |
54 | switch (use_pager) { | 72 | switch (use_pager) { |
@@ -255,6 +273,9 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv) | |||
255 | if (p->option & RUN_SETUP) | 273 | if (p->option & RUN_SETUP) |
256 | prefix = NULL; /* setup_perf_directory(); */ | 274 | prefix = NULL; /* setup_perf_directory(); */ |
257 | 275 | ||
276 | if (use_browser == -1) | ||
277 | use_browser = check_tui_config(p->cmd); | ||
278 | |||
258 | if (use_pager == -1 && p->option & RUN_SETUP) | 279 | if (use_pager == -1 && p->option & RUN_SETUP) |
259 | use_pager = check_pager_config(p->cmd); | 280 | use_pager = check_pager_config(p->cmd); |
260 | if (use_pager == -1 && p->option & USE_PAGER) | 281 | if (use_pager == -1 && p->option & USE_PAGER) |
diff --git a/tools/perf/util/cache.h b/tools/perf/util/cache.h index 5eca52595b62..65fe664fddf6 100644 --- a/tools/perf/util/cache.h +++ b/tools/perf/util/cache.h | |||
@@ -30,7 +30,7 @@ extern const char *pager_program; | |||
30 | extern int pager_in_use(void); | 30 | extern int pager_in_use(void); |
31 | extern int pager_use_color; | 31 | extern int pager_use_color; |
32 | 32 | ||
33 | extern bool use_browser; | 33 | extern int use_browser; |
34 | 34 | ||
35 | #ifdef NO_NEWT_SUPPORT | 35 | #ifdef NO_NEWT_SUPPORT |
36 | static inline void setup_browser(void) | 36 | static inline void setup_browser(void) |
diff --git a/tools/perf/util/newt.c b/tools/perf/util/newt.c index 9338d060ee49..9d203c972f3b 100644 --- a/tools/perf/util/newt.c +++ b/tools/perf/util/newt.c | |||
@@ -1066,10 +1066,13 @@ static struct newtPercentTreeColors { | |||
1066 | void setup_browser(void) | 1066 | void setup_browser(void) |
1067 | { | 1067 | { |
1068 | struct newtPercentTreeColors *c = &defaultPercentTreeColors; | 1068 | struct newtPercentTreeColors *c = &defaultPercentTreeColors; |
1069 | if (!isatty(1)) | 1069 | |
1070 | if (!isatty(1) || !use_browser) { | ||
1071 | setup_pager(); | ||
1070 | return; | 1072 | return; |
1073 | } | ||
1071 | 1074 | ||
1072 | use_browser = true; | 1075 | use_browser = 1; |
1073 | newtInit(); | 1076 | newtInit(); |
1074 | newtCls(); | 1077 | newtCls(); |
1075 | ui_helpline__puts(" "); | 1078 | ui_helpline__puts(" "); |
@@ -1082,7 +1085,7 @@ void setup_browser(void) | |||
1082 | 1085 | ||
1083 | void exit_browser(bool wait_for_ok) | 1086 | void exit_browser(bool wait_for_ok) |
1084 | { | 1087 | { |
1085 | if (use_browser) { | 1088 | if (use_browser > 0) { |
1086 | if (wait_for_ok) { | 1089 | if (wait_for_ok) { |
1087 | char title[] = "Fatal Error", ok[] = "Ok"; | 1090 | char title[] = "Fatal Error", ok[] = "Ok"; |
1088 | newtWinMessage(title, ok, browser__last_msg); | 1091 | newtWinMessage(title, ok, browser__last_msg); |