Move FEATURE_USE_TERMIOS config option to two applets which use it

No code changes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2017-01-11 16:27:12 +01:00
parent 01ccdd1d3c
commit 6c1f348fa7
12 changed files with 31 additions and 33 deletions

View File

@ -61,15 +61,6 @@ config FEATURE_AUTOWIDTH
If you leave this disabled, your utilities will be especially If you leave this disabled, your utilities will be especially
primitive and will be unable to determine the current screen width. primitive and will be unable to determine the current screen width.
#fixme: delete, create suboptions for applets which use this
config FEATURE_USE_TERMIOS
bool "Use termios for one-stroke input"
default y
help
This option allows utilities such as 'top' to accept keyboard
commands. Without this option, they simply refresh display
after a fixed period.
config SHOW_USAGE config SHOW_USAGE
bool "Show applet usage messages" bool "Show applet usage messages"
default y default y

View File

@ -524,7 +524,6 @@ CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
CONFIG_MKSWAP=y CONFIG_MKSWAP=y
CONFIG_FEATURE_MKSWAP_UUID=y CONFIG_FEATURE_MKSWAP_UUID=y
CONFIG_MORE=y CONFIG_MORE=y
CONFIG_FEATURE_USE_TERMIOS=y
CONFIG_VOLUMEID=y CONFIG_VOLUMEID=y
CONFIG_FEATURE_VOLUMEID_EXT=y CONFIG_FEATURE_VOLUMEID_EXT=y
CONFIG_FEATURE_VOLUMEID_BTRFS=y CONFIG_FEATURE_VOLUMEID_BTRFS=y

View File

@ -527,7 +527,6 @@ CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
# CONFIG_MKSWAP is not set # CONFIG_MKSWAP is not set
# CONFIG_FEATURE_MKSWAP_UUID is not set # CONFIG_FEATURE_MKSWAP_UUID is not set
# CONFIG_MORE is not set # CONFIG_MORE is not set
# CONFIG_FEATURE_USE_TERMIOS is not set
CONFIG_VOLUMEID=y CONFIG_VOLUMEID=y
# CONFIG_FEATURE_VOLUMEID_EXT is not set # CONFIG_FEATURE_VOLUMEID_EXT is not set
# CONFIG_FEATURE_VOLUMEID_BTRFS is not set # CONFIG_FEATURE_VOLUMEID_BTRFS is not set

View File

@ -540,7 +540,6 @@ CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
CONFIG_MKSWAP=y CONFIG_MKSWAP=y
CONFIG_FEATURE_MKSWAP_UUID=y CONFIG_FEATURE_MKSWAP_UUID=y
CONFIG_MORE=y CONFIG_MORE=y
CONFIG_FEATURE_USE_TERMIOS=y
CONFIG_VOLUMEID=y CONFIG_VOLUMEID=y
CONFIG_FEATURE_VOLUMEID_EXT=y CONFIG_FEATURE_VOLUMEID_EXT=y
CONFIG_FEATURE_VOLUMEID_BTRFS=y CONFIG_FEATURE_VOLUMEID_BTRFS=y

View File

@ -94,7 +94,6 @@ CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SMALL=1 CONFIG_MD5_SMALL=1
# CONFIG_FEATURE_FAST_TOP is not set # CONFIG_FEATURE_FAST_TOP is not set
# CONFIG_FEATURE_ETC_NETWORKS is not set # CONFIG_FEATURE_ETC_NETWORKS is not set
CONFIG_FEATURE_USE_TERMIOS=y
# CONFIG_FEATURE_EDITING is not set # CONFIG_FEATURE_EDITING is not set
CONFIG_FEATURE_EDITING_MAX_LEN=0 CONFIG_FEATURE_EDITING_MAX_LEN=0
# CONFIG_FEATURE_EDITING_VI is not set # CONFIG_FEATURE_EDITING_VI is not set

View File

@ -174,7 +174,6 @@ CONFIG_MD5_SMALL=1
CONFIG_SHA3_SMALL=1 CONFIG_SHA3_SMALL=1
# CONFIG_FEATURE_FAST_TOP is not set # CONFIG_FEATURE_FAST_TOP is not set
# CONFIG_FEATURE_ETC_NETWORKS is not set # CONFIG_FEATURE_ETC_NETWORKS is not set
CONFIG_FEATURE_USE_TERMIOS=y
CONFIG_FEATURE_EDITING=y CONFIG_FEATURE_EDITING=y
CONFIG_FEATURE_EDITING_MAX_LEN=1024 CONFIG_FEATURE_EDITING_MAX_LEN=1024
# CONFIG_FEATURE_EDITING_VI is not set # CONFIG_FEATURE_EDITING_VI is not set

View File

@ -112,7 +112,6 @@ CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SMALL=1 CONFIG_MD5_SMALL=1
# CONFIG_FEATURE_FAST_TOP is not set # CONFIG_FEATURE_FAST_TOP is not set
# CONFIG_FEATURE_ETC_NETWORKS is not set # CONFIG_FEATURE_ETC_NETWORKS is not set
CONFIG_FEATURE_USE_TERMIOS=y
# CONFIG_FEATURE_EDITING is not set # CONFIG_FEATURE_EDITING is not set
CONFIG_FEATURE_EDITING_MAX_LEN=0 CONFIG_FEATURE_EDITING_MAX_LEN=0
# CONFIG_FEATURE_EDITING_VI is not set # CONFIG_FEATURE_EDITING_VI is not set

View File

@ -102,7 +102,6 @@ CONFIG_MD5_SMALL=1
CONFIG_SHA3_SMALL=1 CONFIG_SHA3_SMALL=1
# CONFIG_FEATURE_FAST_TOP is not set # CONFIG_FEATURE_FAST_TOP is not set
# CONFIG_FEATURE_ETC_NETWORKS is not set # CONFIG_FEATURE_ETC_NETWORKS is not set
CONFIG_FEATURE_USE_TERMIOS=y
# CONFIG_FEATURE_EDITING is not set # CONFIG_FEATURE_EDITING is not set
CONFIG_FEATURE_EDITING_MAX_LEN=0 CONFIG_FEATURE_EDITING_MAX_LEN=0
# CONFIG_FEATURE_EDITING_VI is not set # CONFIG_FEATURE_EDITING_VI is not set

View File

@ -94,7 +94,6 @@ CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SMALL=1 CONFIG_MD5_SMALL=1
CONFIG_FEATURE_FAST_TOP=y CONFIG_FEATURE_FAST_TOP=y
# CONFIG_FEATURE_ETC_NETWORKS is not set # CONFIG_FEATURE_ETC_NETWORKS is not set
CONFIG_FEATURE_USE_TERMIOS=y
CONFIG_FEATURE_EDITING=y CONFIG_FEATURE_EDITING=y
CONFIG_FEATURE_EDITING_MAX_LEN=1024 CONFIG_FEATURE_EDITING_MAX_LEN=1024
# CONFIG_FEATURE_EDITING_VI is not set # CONFIG_FEATURE_EDITING_VI is not set

View File

@ -93,7 +93,6 @@ CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SMALL=1 CONFIG_MD5_SMALL=1
CONFIG_FEATURE_FAST_TOP=y CONFIG_FEATURE_FAST_TOP=y
# CONFIG_FEATURE_ETC_NETWORKS is not set # CONFIG_FEATURE_ETC_NETWORKS is not set
CONFIG_FEATURE_USE_TERMIOS=y
CONFIG_FEATURE_EDITING=y CONFIG_FEATURE_EDITING=y
CONFIG_FEATURE_EDITING_MAX_LEN=1024 CONFIG_FEATURE_EDITING_MAX_LEN=1024
# CONFIG_FEATURE_EDITING_VI is not set # CONFIG_FEATURE_EDITING_VI is not set

View File

@ -18,6 +18,14 @@
//config: default y //config: default y
//config: help //config: help
//config: Analyze power consumption on Intel-based laptops //config: Analyze power consumption on Intel-based laptops
//config:
//config:config FEATURE_POWERTOP_INTERACTIVE
//config: bool "Accept keyboard commands"
//config: default y
//config: depends on POWERTOP
//config: help
//config: Without this, powertop will only refresh display every 10 seconds.
//config: No keyboard commands will work, only ^C to terminate.
// XXX This should be configurable // XXX This should be configurable
#define ENABLE_FEATURE_POWERTOP_PROCIRQ 1 #define ENABLE_FEATURE_POWERTOP_PROCIRQ 1
@ -82,7 +90,7 @@ struct globals {
ullong last_usage[MAX_CSTATE_COUNT]; ullong last_usage[MAX_CSTATE_COUNT];
ullong start_duration[MAX_CSTATE_COUNT]; ullong start_duration[MAX_CSTATE_COUNT];
ullong last_duration[MAX_CSTATE_COUNT]; ullong last_duration[MAX_CSTATE_COUNT];
#if ENABLE_FEATURE_USE_TERMIOS #if ENABLE_FEATURE_POWERTOP_INTERACTIVE
struct termios init_settings; struct termios init_settings;
#endif #endif
}; };
@ -91,7 +99,7 @@ struct globals {
SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \ SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
} while (0) } while (0)
#if ENABLE_FEATURE_USE_TERMIOS #if ENABLE_FEATURE_POWERTOP_INTERACTIVE
static void reset_term(void) static void reset_term(void)
{ {
tcsetattr_stdin_TCSANOW(&G.init_settings); tcsetattr_stdin_TCSANOW(&G.init_settings);
@ -682,7 +690,7 @@ int powertop_main(int UNUSED_PARAM argc, char UNUSED_PARAM **argv)
ullong cur_usage[MAX_CSTATE_COUNT]; ullong cur_usage[MAX_CSTATE_COUNT];
ullong cur_duration[MAX_CSTATE_COUNT]; ullong cur_duration[MAX_CSTATE_COUNT];
char cstate_lines[MAX_CSTATE_COUNT + 2][64]; char cstate_lines[MAX_CSTATE_COUNT + 2][64];
#if ENABLE_FEATURE_USE_TERMIOS #if ENABLE_FEATURE_POWERTOP_INTERACTIVE
struct pollfd pfd[1]; struct pollfd pfd[1];
pfd[0].fd = 0; pfd[0].fd = 0;
@ -705,7 +713,7 @@ int powertop_main(int UNUSED_PARAM argc, char UNUSED_PARAM **argv)
puts("Collecting data for "DEFAULT_SLEEP_STR" seconds"); puts("Collecting data for "DEFAULT_SLEEP_STR" seconds");
#if ENABLE_FEATURE_USE_TERMIOS #if ENABLE_FEATURE_POWERTOP_INTERACTIVE
/* Turn on unbuffered input; turn off echoing, ^C ^Z etc */ /* Turn on unbuffered input; turn off echoing, ^C ^Z etc */
set_termios_to_raw(STDIN_FILENO, &G.init_settings, TERMIOS_CLEAR_ISIG); set_termios_to_raw(STDIN_FILENO, &G.init_settings, TERMIOS_CLEAR_ISIG);
bb_signals(BB_FATAL_SIGS, sig_handler); bb_signals(BB_FATAL_SIGS, sig_handler);
@ -735,7 +743,7 @@ int powertop_main(int UNUSED_PARAM argc, char UNUSED_PARAM **argv)
int i; int i;
G.cant_enable_timer_stats |= start_timer(); /* 1 on error */ G.cant_enable_timer_stats |= start_timer(); /* 1 on error */
#if !ENABLE_FEATURE_USE_TERMIOS #if !ENABLE_FEATURE_POWERTOP_INTERACTIVE
sleep(DEFAULT_SLEEP); sleep(DEFAULT_SLEEP);
#else #else
if (safe_poll(pfd, 1, DEFAULT_SLEEP * 1000) > 0) { if (safe_poll(pfd, 1, DEFAULT_SLEEP * 1000) > 0) {

View File

@ -56,6 +56,14 @@
//config: The top program provides a dynamic real-time view of a running //config: The top program provides a dynamic real-time view of a running
//config: system. //config: system.
//config: //config:
//config:config FEATURE_TOP_INTERACTIVE
//config: bool "Accept keyboard commands"
//config: default y
//config: depends on TOP
//config: help
//config: Without this, top will only refresh display every 5 seconds.
//config: No keyboard commands will work, only ^C to terminate.
//config:
//config:config FEATURE_TOP_CPU_USAGE_PERCENTAGE //config:config FEATURE_TOP_CPU_USAGE_PERCENTAGE
//config: bool "Show CPU per-process usage percentage" //config: bool "Show CPU per-process usage percentage"
//config: default y //config: default y
@ -158,7 +166,7 @@ struct globals {
smallint smp_cpu_info; /* one/many cpu info lines? */ smallint smp_cpu_info; /* one/many cpu info lines? */
#endif #endif
unsigned lines; /* screen height */ unsigned lines; /* screen height */
#if ENABLE_FEATURE_USE_TERMIOS #if ENABLE_FEATURE_TOP_INTERACTIVE
struct termios initial_settings; struct termios initial_settings;
int scroll_ofs; int scroll_ofs;
#define G_scroll_ofs G.scroll_ofs #define G_scroll_ofs G.scroll_ofs
@ -181,7 +189,7 @@ struct globals {
jiffy_counts_t *cpu_jif, *cpu_prev_jif; jiffy_counts_t *cpu_jif, *cpu_prev_jif;
int num_cpus; int num_cpus;
#endif #endif
#if ENABLE_FEATURE_USE_TERMIOS #if ENABLE_FEATURE_TOP_INTERACTIVE
char kbd_input[KEYCODE_BUFFER_SIZE]; char kbd_input[KEYCODE_BUFFER_SIZE];
#endif #endif
char line_buf[80]; char line_buf[80];
@ -220,7 +228,7 @@ enum {
#define OPT_BATCH_MODE (option_mask32 & OPT_b) #define OPT_BATCH_MODE (option_mask32 & OPT_b)
#if ENABLE_FEATURE_USE_TERMIOS #if ENABLE_FEATURE_TOP_INTERACTIVE
static int pid_sort(top_status_t *P, top_status_t *Q) static int pid_sort(top_status_t *P, top_status_t *Q)
{ {
/* Buggy wrt pids with high bit set */ /* Buggy wrt pids with high bit set */
@ -725,7 +733,7 @@ static void clearmems(void)
top = NULL; top = NULL;
} }
#if ENABLE_FEATURE_USE_TERMIOS #if ENABLE_FEATURE_TOP_INTERACTIVE
static void reset_term(void) static void reset_term(void)
{ {
if (!OPT_BATCH_MODE) if (!OPT_BATCH_MODE)
@ -737,7 +745,7 @@ static void sig_catcher(int sig)
reset_term(); reset_term();
kill_myself_with_sig(sig); kill_myself_with_sig(sig);
} }
#endif /* FEATURE_USE_TERMIOS */ #endif /* FEATURE_TOP_INTERACTIVE */
/* /*
* TOPMEM support * TOPMEM support
@ -892,7 +900,7 @@ enum {
EXIT_MASK = (unsigned)-1, EXIT_MASK = (unsigned)-1,
}; };
#if ENABLE_FEATURE_USE_TERMIOS #if ENABLE_FEATURE_TOP_INTERACTIVE
static unsigned handle_input(unsigned scan_mask, unsigned interval) static unsigned handle_input(unsigned scan_mask, unsigned interval)
{ {
if (option_mask32 & OPT_EOF) { if (option_mask32 & OPT_EOF) {
@ -1041,7 +1049,7 @@ static unsigned handle_input(unsigned scan_mask, unsigned interval)
//usage: "\n""Read the status of all processes from /proc each SECONDS" //usage: "\n""Read the status of all processes from /proc each SECONDS"
//usage: "\n""and display a screenful of them." //usage: "\n""and display a screenful of them."
//usage: "\n" //usage: "\n"
//usage: IF_FEATURE_USE_TERMIOS( //usage: IF_FEATURE_TOP_INTERACTIVE(
//usage: "Keys:" //usage: "Keys:"
//usage: "\n"" N/M" //usage: "\n"" N/M"
//usage: IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE("/P") //usage: IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE("/P")
@ -1136,7 +1144,7 @@ int top_main(int argc UNUSED_PARAM, char **argv)
if (OPT_BATCH_MODE) { if (OPT_BATCH_MODE) {
option_mask32 |= OPT_EOF; option_mask32 |= OPT_EOF;
} }
#if ENABLE_FEATURE_USE_TERMIOS #if ENABLE_FEATURE_TOP_INTERACTIVE
else { else {
/* Turn on unbuffered input; turn off echoing, ^C ^Z etc */ /* Turn on unbuffered input; turn off echoing, ^C ^Z etc */
set_termios_to_raw(STDIN_FILENO, &initial_settings, TERMIOS_CLEAR_ISIG); set_termios_to_raw(STDIN_FILENO, &initial_settings, TERMIOS_CLEAR_ISIG);
@ -1237,7 +1245,7 @@ int top_main(int argc UNUSED_PARAM, char **argv)
clearmems(); clearmems();
if (iterations >= 0 && !--iterations) if (iterations >= 0 && !--iterations)
break; break;
#if !ENABLE_FEATURE_USE_TERMIOS #if !ENABLE_FEATURE_TOP_INTERACTIVE
sleep(interval); sleep(interval);
#else #else
scan_mask = handle_input(scan_mask, interval); scan_mask = handle_input(scan_mask, interval);
@ -1245,7 +1253,7 @@ int top_main(int argc UNUSED_PARAM, char **argv)
} /* end of "while (not Q)" */ } /* end of "while (not Q)" */
bb_putchar('\n'); bb_putchar('\n');
#if ENABLE_FEATURE_USE_TERMIOS #if ENABLE_FEATURE_TOP_INTERACTIVE
reset_term(); reset_term();
#endif #endif
if (ENABLE_FEATURE_CLEAN_UP) { if (ENABLE_FEATURE_CLEAN_UP) {