diff options
-rw-r--r-- | tools/perf/Makefile | 7 | ||||
-rw-r--r-- | tools/perf/util/debug.c | 2 | ||||
-rw-r--r-- | tools/perf/util/debug.h | 6 | ||||
-rw-r--r-- | tools/perf/util/ui/browsers/annotate.c | 2 | ||||
-rw-r--r-- | tools/perf/util/ui/browsers/hists.c | 8 | ||||
-rw-r--r-- | tools/perf/util/ui/helpline.c | 26 | ||||
-rw-r--r-- | tools/perf/util/ui/helpline.h | 1 | ||||
-rw-r--r-- | tools/perf/util/ui/setup.c | 42 | ||||
-rw-r--r-- | tools/perf/util/ui/util.c (renamed from tools/perf/util/newt.c) | 70 | ||||
-rw-r--r-- | tools/perf/util/ui/util.h | 10 |
10 files changed, 96 insertions, 78 deletions
diff --git a/tools/perf/Makefile b/tools/perf/Makefile index 62e4d6f0dc85..41abb90df50d 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile | |||
@@ -567,18 +567,20 @@ else | |||
567 | # Fedora has /usr/include/slang/slang.h, but ubuntu /usr/include/slang.h | 567 | # Fedora has /usr/include/slang/slang.h, but ubuntu /usr/include/slang.h |
568 | BASIC_CFLAGS += -I/usr/include/slang | 568 | BASIC_CFLAGS += -I/usr/include/slang |
569 | EXTLIBS += -lnewt -lslang | 569 | EXTLIBS += -lnewt -lslang |
570 | LIB_OBJS += $(OUTPUT)util/newt.o | 570 | LIB_OBJS += $(OUTPUT)util/ui/setup.o |
571 | LIB_OBJS += $(OUTPUT)util/ui/browser.o | 571 | LIB_OBJS += $(OUTPUT)util/ui/browser.o |
572 | LIB_OBJS += $(OUTPUT)util/ui/browsers/annotate.o | 572 | LIB_OBJS += $(OUTPUT)util/ui/browsers/annotate.o |
573 | LIB_OBJS += $(OUTPUT)util/ui/browsers/hists.o | 573 | LIB_OBJS += $(OUTPUT)util/ui/browsers/hists.o |
574 | LIB_OBJS += $(OUTPUT)util/ui/browsers/map.o | 574 | LIB_OBJS += $(OUTPUT)util/ui/browsers/map.o |
575 | LIB_OBJS += $(OUTPUT)util/ui/helpline.o | 575 | LIB_OBJS += $(OUTPUT)util/ui/helpline.o |
576 | LIB_OBJS += $(OUTPUT)util/ui/progress.o | 576 | LIB_OBJS += $(OUTPUT)util/ui/progress.o |
577 | LIB_OBJS += $(OUTPUT)util/ui/util.o | ||
577 | LIB_H += util/ui/browser.h | 578 | LIB_H += util/ui/browser.h |
578 | LIB_H += util/ui/browsers/map.h | 579 | LIB_H += util/ui/browsers/map.h |
579 | LIB_H += util/ui/helpline.h | 580 | LIB_H += util/ui/helpline.h |
580 | LIB_H += util/ui/libslang.h | 581 | LIB_H += util/ui/libslang.h |
581 | LIB_H += util/ui/progress.h | 582 | LIB_H += util/ui/progress.h |
583 | LIB_H += util/ui/util.h | ||
582 | endif | 584 | endif |
583 | endif | 585 | endif |
584 | 586 | ||
@@ -976,9 +978,6 @@ $(OUTPUT)builtin-init-db.o: builtin-init-db.c $(OUTPUT)PERF-CFLAGS | |||
976 | $(OUTPUT)util/config.o: util/config.c $(OUTPUT)PERF-CFLAGS | 978 | $(OUTPUT)util/config.o: util/config.c $(OUTPUT)PERF-CFLAGS |
977 | $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< | 979 | $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< |
978 | 980 | ||
979 | $(OUTPUT)util/newt.o: util/newt.c $(OUTPUT)PERF-CFLAGS | ||
980 | $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $< | ||
981 | |||
982 | $(OUTPUT)util/ui/browser.o: util/ui/browser.c $(OUTPUT)PERF-CFLAGS | 981 | $(OUTPUT)util/ui/browser.o: util/ui/browser.c $(OUTPUT)PERF-CFLAGS |
983 | $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $< | 982 | $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $< |
984 | 983 | ||
diff --git a/tools/perf/util/debug.c b/tools/perf/util/debug.c index 318dab15d177..f9c7e3ad1aa7 100644 --- a/tools/perf/util/debug.c +++ b/tools/perf/util/debug.c | |||
@@ -23,7 +23,7 @@ int eprintf(int level, const char *fmt, ...) | |||
23 | if (verbose >= level) { | 23 | if (verbose >= level) { |
24 | va_start(args, fmt); | 24 | va_start(args, fmt); |
25 | if (use_browser > 0) | 25 | if (use_browser > 0) |
26 | ret = browser__show_help(fmt, args); | 26 | ret = ui_helpline__show_help(fmt, args); |
27 | else | 27 | else |
28 | ret = vfprintf(stderr, fmt, args); | 28 | ret = vfprintf(stderr, fmt, args); |
29 | va_end(args); | 29 | va_end(args); |
diff --git a/tools/perf/util/debug.h b/tools/perf/util/debug.h index ba4892e49be2..7a17ee061bcb 100644 --- a/tools/perf/util/debug.h +++ b/tools/perf/util/debug.h | |||
@@ -14,7 +14,7 @@ void trace_event(event_t *event); | |||
14 | struct ui_progress; | 14 | struct ui_progress; |
15 | 15 | ||
16 | #ifdef NO_NEWT_SUPPORT | 16 | #ifdef NO_NEWT_SUPPORT |
17 | static inline int browser__show_help(const char *format __used, va_list ap __used) | 17 | static inline int ui_helpline__show_help(const char *format __used, va_list ap __used) |
18 | { | 18 | { |
19 | return 0; | 19 | return 0; |
20 | } | 20 | } |
@@ -30,8 +30,8 @@ static inline void ui_progress__update(struct ui_progress *self __used, | |||
30 | 30 | ||
31 | static inline void ui_progress__delete(struct ui_progress *self __used) {} | 31 | static inline void ui_progress__delete(struct ui_progress *self __used) {} |
32 | #else | 32 | #else |
33 | extern char browser__last_msg[]; | 33 | extern char ui_helpline__last_msg[]; |
34 | int browser__show_help(const char *format, va_list ap); | 34 | int ui_helpline__show_help(const char *format, va_list ap); |
35 | #include "ui/progress.h" | 35 | #include "ui/progress.h" |
36 | #endif | 36 | #endif |
37 | 37 | ||
diff --git a/tools/perf/util/ui/browsers/annotate.c b/tools/perf/util/ui/browsers/annotate.c index 783d277f2190..5b01df633f9a 100644 --- a/tools/perf/util/ui/browsers/annotate.c +++ b/tools/perf/util/ui/browsers/annotate.c | |||
@@ -86,7 +86,7 @@ int hist_entry__tui_annotate(struct hist_entry *self) | |||
86 | return -1; | 86 | return -1; |
87 | 87 | ||
88 | if (hist_entry__annotate(self, &head) < 0) { | 88 | if (hist_entry__annotate(self, &head) < 0) { |
89 | ui__error_window(browser__last_msg); | 89 | ui__error_window(ui_helpline__last_msg); |
90 | return -1; | 90 | return -1; |
91 | } | 91 | } |
92 | 92 | ||
diff --git a/tools/perf/util/ui/browsers/hists.c b/tools/perf/util/ui/browsers/hists.c index 9d32a4149ab3..cee7998f1c33 100644 --- a/tools/perf/util/ui/browsers/hists.c +++ b/tools/perf/util/ui/browsers/hists.c | |||
@@ -17,10 +17,6 @@ | |||
17 | #include "../util.h" | 17 | #include "../util.h" |
18 | #include "map.h" | 18 | #include "map.h" |
19 | 19 | ||
20 | int ui__help_window(const char *text); | ||
21 | bool dialog_yesno(const char *msg); | ||
22 | int popup_menu(int argc, char * const argv[]); | ||
23 | |||
24 | struct hist_browser { | 20 | struct hist_browser { |
25 | struct ui_browser b; | 21 | struct ui_browser b; |
26 | struct hists *hists; | 22 | struct hists *hists; |
@@ -798,7 +794,7 @@ do_help: | |||
798 | } | 794 | } |
799 | if (is_exit_key(key)) { | 795 | if (is_exit_key(key)) { |
800 | if (key == NEWT_KEY_ESCAPE && | 796 | if (key == NEWT_KEY_ESCAPE && |
801 | !dialog_yesno("Do you really want to exit?")) | 797 | !ui__dialog_yesno("Do you really want to exit?")) |
802 | continue; | 798 | continue; |
803 | break; | 799 | break; |
804 | } | 800 | } |
@@ -842,7 +838,7 @@ do_help: | |||
842 | 838 | ||
843 | options[nr_options++] = (char *)"Exit"; | 839 | options[nr_options++] = (char *)"Exit"; |
844 | 840 | ||
845 | choice = popup_menu(nr_options, options); | 841 | choice = ui__popup_menu(nr_options, options); |
846 | 842 | ||
847 | for (i = 0; i < nr_options - 1; ++i) | 843 | for (i = 0; i < nr_options - 1; ++i) |
848 | free(options[i]); | 844 | free(options[i]); |
diff --git a/tools/perf/util/ui/helpline.c b/tools/perf/util/ui/helpline.c index 6a11e1301559..ff584606a4dc 100644 --- a/tools/perf/util/ui/helpline.c +++ b/tools/perf/util/ui/helpline.c | |||
@@ -3,6 +3,7 @@ | |||
3 | #include <stdlib.h> | 3 | #include <stdlib.h> |
4 | #include <newt.h> | 4 | #include <newt.h> |
5 | 5 | ||
6 | #include "../debug.h" | ||
6 | #include "helpline.h" | 7 | #include "helpline.h" |
7 | 8 | ||
8 | void ui_helpline__pop(void) | 9 | void ui_helpline__pop(void) |
@@ -41,3 +42,28 @@ void ui_helpline__puts(const char *msg) | |||
41 | ui_helpline__pop(); | 42 | ui_helpline__pop(); |
42 | ui_helpline__push(msg); | 43 | ui_helpline__push(msg); |
43 | } | 44 | } |
45 | |||
46 | void ui_helpline__init(void) | ||
47 | { | ||
48 | ui_helpline__puts(" "); | ||
49 | } | ||
50 | |||
51 | char ui_helpline__last_msg[1024]; | ||
52 | |||
53 | int ui_helpline__show_help(const char *format, va_list ap) | ||
54 | { | ||
55 | int ret; | ||
56 | static int backlog; | ||
57 | |||
58 | ret = vsnprintf(ui_helpline__last_msg + backlog, | ||
59 | sizeof(ui_helpline__last_msg) - backlog, format, ap); | ||
60 | backlog += ret; | ||
61 | |||
62 | if (ui_helpline__last_msg[backlog - 1] == '\n') { | ||
63 | ui_helpline__puts(ui_helpline__last_msg); | ||
64 | newtRefresh(); | ||
65 | backlog = 0; | ||
66 | } | ||
67 | |||
68 | return ret; | ||
69 | } | ||
diff --git a/tools/perf/util/ui/helpline.h b/tools/perf/util/ui/helpline.h index 56d8c1d8ffc8..5d1e5e72ffb5 100644 --- a/tools/perf/util/ui/helpline.h +++ b/tools/perf/util/ui/helpline.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef _PERF_UI_HELPLINE_H_ | 1 | #ifndef _PERF_UI_HELPLINE_H_ |
2 | #define _PERF_UI_HELPLINE_H_ 1 | 2 | #define _PERF_UI_HELPLINE_H_ 1 |
3 | 3 | ||
4 | void ui_helpline__init(void); | ||
4 | void ui_helpline__pop(void); | 5 | void ui_helpline__pop(void); |
5 | void ui_helpline__push(const char *msg); | 6 | void ui_helpline__push(const char *msg); |
6 | void ui_helpline__fpush(const char *fmt, ...); | 7 | void ui_helpline__fpush(const char *fmt, ...); |
diff --git a/tools/perf/util/ui/setup.c b/tools/perf/util/ui/setup.c new file mode 100644 index 000000000000..662085032eb7 --- /dev/null +++ b/tools/perf/util/ui/setup.c | |||
@@ -0,0 +1,42 @@ | |||
1 | #include <newt.h> | ||
2 | #include <signal.h> | ||
3 | #include <stdbool.h> | ||
4 | |||
5 | #include "../cache.h" | ||
6 | #include "../debug.h" | ||
7 | #include "browser.h" | ||
8 | #include "helpline.h" | ||
9 | |||
10 | static void newt_suspend(void *d __used) | ||
11 | { | ||
12 | newtSuspend(); | ||
13 | raise(SIGTSTP); | ||
14 | newtResume(); | ||
15 | } | ||
16 | |||
17 | void setup_browser(void) | ||
18 | { | ||
19 | if (!isatty(1) || !use_browser || dump_trace) { | ||
20 | use_browser = 0; | ||
21 | setup_pager(); | ||
22 | return; | ||
23 | } | ||
24 | |||
25 | use_browser = 1; | ||
26 | newtInit(); | ||
27 | newtCls(); | ||
28 | newtSetSuspendCallback(newt_suspend, NULL); | ||
29 | ui_helpline__init(); | ||
30 | ui_browser__init(); | ||
31 | } | ||
32 | |||
33 | void exit_browser(bool wait_for_ok) | ||
34 | { | ||
35 | if (use_browser > 0) { | ||
36 | if (wait_for_ok) { | ||
37 | char title[] = "Fatal Error", ok[] = "Ok"; | ||
38 | newtWinMessage(title, ok, ui_helpline__last_msg); | ||
39 | } | ||
40 | newtFinished(); | ||
41 | } | ||
42 | } | ||
diff --git a/tools/perf/util/newt.c b/tools/perf/util/ui/util.c index 6bccdaa159aa..04600e26ceea 100644 --- a/tools/perf/util/newt.c +++ b/tools/perf/util/ui/util.c | |||
@@ -5,35 +5,13 @@ | |||
5 | #include <string.h> | 5 | #include <string.h> |
6 | #include <sys/ttydefaults.h> | 6 | #include <sys/ttydefaults.h> |
7 | 7 | ||
8 | #include "cache.h" | 8 | #include "../cache.h" |
9 | #include "debug.h" | 9 | #include "../debug.h" |
10 | #include "ui/browser.h" | 10 | #include "browser.h" |
11 | #include "ui/helpline.h" | 11 | #include "helpline.h" |
12 | #include "util.h" | ||
12 | 13 | ||
13 | newtComponent newt_form__new(void); | 14 | newtComponent newt_form__new(void); |
14 | int popup_menu(int argc, char * const argv[]); | ||
15 | int ui__help_window(const char *text); | ||
16 | bool dialog_yesno(const char *msg); | ||
17 | |||
18 | char browser__last_msg[1024]; | ||
19 | |||
20 | int browser__show_help(const char *format, va_list ap) | ||
21 | { | ||
22 | int ret; | ||
23 | static int backlog; | ||
24 | |||
25 | ret = vsnprintf(browser__last_msg + backlog, | ||
26 | sizeof(browser__last_msg) - backlog, format, ap); | ||
27 | backlog += ret; | ||
28 | |||
29 | if (browser__last_msg[backlog - 1] == '\n') { | ||
30 | ui_helpline__puts(browser__last_msg); | ||
31 | newtRefresh(); | ||
32 | backlog = 0; | ||
33 | } | ||
34 | |||
35 | return ret; | ||
36 | } | ||
37 | 15 | ||
38 | static void newt_form__set_exit_keys(newtComponent self) | 16 | static void newt_form__set_exit_keys(newtComponent self) |
39 | { | 17 | { |
@@ -52,7 +30,7 @@ newtComponent newt_form__new(void) | |||
52 | return self; | 30 | return self; |
53 | } | 31 | } |
54 | 32 | ||
55 | int popup_menu(int argc, char * const argv[]) | 33 | int ui__popup_menu(int argc, char * const argv[]) |
56 | { | 34 | { |
57 | struct newtExitStruct es; | 35 | struct newtExitStruct es; |
58 | int i, rc = -1, max_len = 5; | 36 | int i, rc = -1, max_len = 5; |
@@ -128,43 +106,9 @@ out_destroy_form: | |||
128 | return rc; | 106 | return rc; |
129 | } | 107 | } |
130 | 108 | ||
131 | bool dialog_yesno(const char *msg) | 109 | bool ui__dialog_yesno(const char *msg) |
132 | { | 110 | { |
133 | /* newtWinChoice should really be accepting const char pointers... */ | 111 | /* newtWinChoice should really be accepting const char pointers... */ |
134 | char yes[] = "Yes", no[] = "No"; | 112 | char yes[] = "Yes", no[] = "No"; |
135 | return newtWinChoice(NULL, yes, no, (char *)msg) == 1; | 113 | return newtWinChoice(NULL, yes, no, (char *)msg) == 1; |
136 | } | 114 | } |
137 | |||
138 | static void newt_suspend(void *d __used) | ||
139 | { | ||
140 | newtSuspend(); | ||
141 | raise(SIGTSTP); | ||
142 | newtResume(); | ||
143 | } | ||
144 | |||
145 | void setup_browser(void) | ||
146 | { | ||
147 | if (!isatty(1) || !use_browser || dump_trace) { | ||
148 | use_browser = 0; | ||
149 | setup_pager(); | ||
150 | return; | ||
151 | } | ||
152 | |||
153 | use_browser = 1; | ||
154 | newtInit(); | ||
155 | newtCls(); | ||
156 | newtSetSuspendCallback(newt_suspend, NULL); | ||
157 | ui_helpline__puts(" "); | ||
158 | ui_browser__init(); | ||
159 | } | ||
160 | |||
161 | void exit_browser(bool wait_for_ok) | ||
162 | { | ||
163 | if (use_browser > 0) { | ||
164 | if (wait_for_ok) { | ||
165 | char title[] = "Fatal Error", ok[] = "Ok"; | ||
166 | newtWinMessage(title, ok, browser__last_msg); | ||
167 | } | ||
168 | newtFinished(); | ||
169 | } | ||
170 | } | ||
diff --git a/tools/perf/util/ui/util.h b/tools/perf/util/ui/util.h new file mode 100644 index 000000000000..afcbc1d99531 --- /dev/null +++ b/tools/perf/util/ui/util.h | |||
@@ -0,0 +1,10 @@ | |||
1 | #ifndef _PERF_UI_UTIL_H_ | ||
2 | #define _PERF_UI_UTIL_H_ 1 | ||
3 | |||
4 | #include <stdbool.h> | ||
5 | |||
6 | int ui__popup_menu(int argc, char * const argv[]); | ||
7 | int ui__help_window(const char *text); | ||
8 | bool ui__dialog_yesno(const char *msg); | ||
9 | |||
10 | #endif /* _PERF_UI_UTIL_H_ */ | ||