top: add -m ("memory") option
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
56573cb4f7
commit
0052882200
23
TODO
23
TODO
@ -320,6 +320,29 @@ vdprintf() -> similar sized functionality
|
||||
|
||||
Unicode work needed:
|
||||
|
||||
Unicode support uses libc multibyte functions if LOCALE_SUPPORT is on
|
||||
(in this case, the code will also support many more encodings),
|
||||
or uses a limited subset of re-implemented multibyte functions
|
||||
which only understand "one byte == one char" and unicode.
|
||||
This is useful if you build against uclibc with locale support disabled.
|
||||
|
||||
Unicode-dependent applets must call check_unicode_in_env() when they
|
||||
begin executing.
|
||||
|
||||
Applet code may conditionalize on FEATURE_ASSUME_UNICODE
|
||||
in order to use more efficient code if unicode support is not requested.
|
||||
|
||||
Available functions (if you need more, implement them in libbb/unicode.c
|
||||
so that they work without LOCALE_SUPPORT too):
|
||||
|
||||
int bb_mbstrlen(str) - multibyte-aware strlen
|
||||
size_t mbstowcs(wdest, src, n)
|
||||
size_t wcstombs(dest, wsrc, n)
|
||||
size_t wcrtomb(str, wc, wstate)
|
||||
int iswspace(wc)
|
||||
int iswalnum(wc)
|
||||
int iswpunct(wc)
|
||||
|
||||
Applets which only need to align columns on screen correctly:
|
||||
|
||||
ls - already done, use source as an example
|
||||
|
@ -4566,7 +4566,7 @@
|
||||
"Defaults: SECS: 10, SIG: TERM." \
|
||||
|
||||
#define top_trivial_usage \
|
||||
"[-b] [-nCOUNT] [-dSECONDS]"
|
||||
"[-b] [-nCOUNT] [-dSECONDS]" IF_FEATURE_TOPMEM(" [-m]")
|
||||
#define top_full_usage "\n\n" \
|
||||
"Provide a view of process activity in real time.\n" \
|
||||
"Read the status of all processes from /proc each SECONDS\n" \
|
||||
|
@ -147,15 +147,15 @@ const char *opt_complementary
|
||||
|
||||
Special characters:
|
||||
|
||||
"-" A dash as the first char in a opt_complementary group forces
|
||||
all arguments to be treated as options, even if they have
|
||||
no leading dashes. Next char in this case can't be a digit (0-9),
|
||||
use ':' or end of line. For example:
|
||||
"-" A group consisting of just a dash forces all arguments
|
||||
to be treated as options, even if they have no leading dashes.
|
||||
Next char in this case can't be a digit (0-9), use ':' or end of line.
|
||||
Example:
|
||||
|
||||
opt_complementary = "-:w-x:x-w";
|
||||
getopt32(argv, "wx");
|
||||
opt_complementary = "-:w-x:x-w"; // "-w-x:x-w" would also work,
|
||||
getopt32(argv, "wx"); // but is less readable
|
||||
|
||||
Allows any arguments to be given without a dash (./program w x)
|
||||
This makes it possible to use options without a dash (./program w x)
|
||||
as well as with a dash (./program -x).
|
||||
|
||||
NB: getopt32() will leak a small amount of memory if you use
|
||||
|
24
procps/top.c
24
procps/top.c
@ -131,7 +131,8 @@ enum {
|
||||
OPT_d = (1 << 0),
|
||||
OPT_n = (1 << 1),
|
||||
OPT_b = (1 << 2),
|
||||
OPT_EOF = (1 << 3), /* pseudo: "we saw EOF in stdin" */
|
||||
OPT_m = (1 << 3),
|
||||
OPT_EOF = (1 << 4), /* pseudo: "we saw EOF in stdin" */
|
||||
};
|
||||
#define OPT_BATCH_MODE (option_mask32 & OPT_b)
|
||||
|
||||
@ -895,7 +896,7 @@ int top_main(int argc UNUSED_PARAM, char **argv)
|
||||
|
||||
pfd[0].fd = 0;
|
||||
pfd[0].events = POLLIN;
|
||||
#endif /* FEATURE_USE_TERMIOS */
|
||||
#endif
|
||||
|
||||
INIT_G();
|
||||
|
||||
@ -909,10 +910,15 @@ int top_main(int argc UNUSED_PARAM, char **argv)
|
||||
#endif
|
||||
|
||||
/* all args are options; -n NUM */
|
||||
opt_complementary = "-";
|
||||
col = getopt32(argv, "d:n:b", &str_interval, &str_iterations);
|
||||
opt_complementary = "-"; /* options can be specified w/o dash */
|
||||
col = getopt32(argv, "d:n:b"IF_FEATURE_TOPMEM("m"), &str_interval, &str_iterations);
|
||||
#if ENABLE_FEATURE_TOPMEM
|
||||
if (col & OPT_m) /* -m (busybox specific) */
|
||||
scan_mask = TOPMEM_MASK;
|
||||
#endif
|
||||
if (col & OPT_d) {
|
||||
/* work around for "-d 1" -> "-d -1" done by getopt32 */
|
||||
/* work around for "-d 1" -> "-d -1" done by getopt32
|
||||
* (opt_complementary == "-" does this) */
|
||||
if (str_interval[0] == '-')
|
||||
str_interval++;
|
||||
/* Need to limit it to not overflow poll timeout */
|
||||
@ -934,7 +940,7 @@ int top_main(int argc UNUSED_PARAM, char **argv)
|
||||
|
||||
bb_signals(BB_FATAL_SIGS, sig_catcher);
|
||||
tcsetattr_stdin_TCSANOW(&new_settings);
|
||||
#endif /* FEATURE_USE_TERMIOS */
|
||||
#endif
|
||||
|
||||
#if ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE
|
||||
sort_function[0] = pcpu_sort;
|
||||
@ -942,7 +948,7 @@ int top_main(int argc UNUSED_PARAM, char **argv)
|
||||
sort_function[2] = time_sort;
|
||||
#else
|
||||
sort_function[0] = mem_sort;
|
||||
#endif /* FEATURE_TOP_CPU_USAGE_PERCENTAGE */
|
||||
#endif
|
||||
|
||||
while (1) {
|
||||
procps_status_t *p = NULL;
|
||||
@ -956,7 +962,7 @@ int top_main(int argc UNUSED_PARAM, char **argv)
|
||||
sleep(interval);
|
||||
continue;
|
||||
}
|
||||
#endif /* FEATURE_USE_TERMIOS */
|
||||
#endif
|
||||
if (col > LINE_BUF_SIZE-2) /* +2 bytes for '\n', NUL, */
|
||||
col = LINE_BUF_SIZE-2;
|
||||
|
||||
@ -1015,7 +1021,7 @@ int top_main(int argc UNUSED_PARAM, char **argv)
|
||||
qsort(top, ntop, sizeof(top_status_t), (void*)mult_lvl_cmp);
|
||||
#else
|
||||
qsort(top, ntop, sizeof(top_status_t), (void*)(sort_function[0]));
|
||||
#endif /* FEATURE_TOP_CPU_USAGE_PERCENTAGE */
|
||||
#endif
|
||||
}
|
||||
#if ENABLE_FEATURE_TOPMEM
|
||||
else { /* TOPMEM */
|
||||
|
Loading…
Reference in New Issue
Block a user