aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas De Schampheleire <thomas.de_schampheleire@nokia.com>2019-03-26 13:10:21 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2019-04-04 14:14:24 +0200
commit2b6282117f026cfa2a3e7efee7caa054b6265264 (patch)
tree1127f82c0841cf66600501362f94f0e9d38b8883
parenta3ce161363380899ae45716c70714cfcc93a7755 (diff)
downloadbusybox-w32-2b6282117f026cfa2a3e7efee7caa054b6265264.tar.gz
busybox-w32-2b6282117f026cfa2a3e7efee7caa054b6265264.tar.bz2
busybox-w32-2b6282117f026cfa2a3e7efee7caa054b6265264.zip
top: provide cmdline argument '-H' to enable thread scanning by default
In particular useful when you want to evaluate the threads in batch mode: top -Hbn1 function old new delta top_main 928 941 +13 packed_usage 33317 33319 +2 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 15/0) Total: 15 bytes Signed-off-by: Philippe Belet <philippe.belet@nokia.com> Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--procps/top.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/procps/top.c b/procps/top.c
index 625409755..89f9d23f4 100644
--- a/procps/top.c
+++ b/procps/top.c
@@ -222,8 +222,9 @@ enum {
222 OPT_d = (1 << 0), 222 OPT_d = (1 << 0),
223 OPT_n = (1 << 1), 223 OPT_n = (1 << 1),
224 OPT_b = (1 << 2), 224 OPT_b = (1 << 2),
225 OPT_m = (1 << 3), 225 OPT_H = (1 << 3),
226 OPT_EOF = (1 << 4), /* pseudo: "we saw EOF in stdin" */ 226 OPT_m = (1 << 4),
227 OPT_EOF = (1 << 5), /* pseudo: "we saw EOF in stdin" */
227}; 228};
228#define OPT_BATCH_MODE (option_mask32 & OPT_b) 229#define OPT_BATCH_MODE (option_mask32 & OPT_b)
229 230
@@ -1043,7 +1044,8 @@ static unsigned handle_input(unsigned scan_mask, duration_t interval)
1043//usage:# define IF_SHOW_THREADS_OR_TOP_SMP(...) 1044//usage:# define IF_SHOW_THREADS_OR_TOP_SMP(...)
1044//usage:#endif 1045//usage:#endif
1045//usage:#define top_trivial_usage 1046//usage:#define top_trivial_usage
1046//usage: "[-b"IF_FEATURE_TOPMEM("m")"] [-n COUNT] [-d SECONDS]" 1047//usage: "[-b"IF_FEATURE_TOPMEM("m")IF_FEATURE_SHOW_THREADS("H")"]"
1048//usage: " [-n COUNT] [-d SECONDS]"
1047//usage:#define top_full_usage "\n\n" 1049//usage:#define top_full_usage "\n\n"
1048//usage: "Provide a view of process activity in real time." 1050//usage: "Provide a view of process activity in real time."
1049//usage: "\n""Read the status of all processes from /proc each SECONDS" 1051//usage: "\n""Read the status of all processes from /proc each SECONDS"
@@ -1076,6 +1078,9 @@ static unsigned handle_input(unsigned scan_mask, duration_t interval)
1076//usage: IF_FEATURE_TOPMEM( 1078//usage: IF_FEATURE_TOPMEM(
1077//usage: "\n"" -m Same as 's' key" 1079//usage: "\n"" -m Same as 's' key"
1078//usage: ) 1080//usage: )
1081//usage: IF_FEATURE_SHOW_THREADS(
1082//usage: "\n"" -H Show threads"
1083//usage: )
1079 1084
1080/* Interactive testing: 1085/* Interactive testing:
1081 * echo sss | ./busybox top 1086 * echo sss | ./busybox top
@@ -1110,7 +1115,8 @@ int top_main(int argc UNUSED_PARAM, char **argv)
1110 1115
1111 /* all args are options; -n NUM */ 1116 /* all args are options; -n NUM */
1112 make_all_argv_opts(argv); /* options can be specified w/o dash */ 1117 make_all_argv_opts(argv); /* options can be specified w/o dash */
1113 col = getopt32(argv, "d:n:b"IF_FEATURE_TOPMEM("m"), &str_interval, &str_iterations); 1118 col = getopt32(argv, "d:n:bHm", &str_interval, &str_iterations);
1119 /* NB: -m and -H are accepted even if not configured */
1114#if ENABLE_FEATURE_TOPMEM 1120#if ENABLE_FEATURE_TOPMEM
1115 if (col & OPT_m) /* -m (busybox specific) */ 1121 if (col & OPT_m) /* -m (busybox specific) */
1116 scan_mask = TOPMEM_MASK; 1122 scan_mask = TOPMEM_MASK;
@@ -1129,6 +1135,11 @@ int top_main(int argc UNUSED_PARAM, char **argv)
1129 str_iterations++; 1135 str_iterations++;
1130 iterations = xatou(str_iterations); 1136 iterations = xatou(str_iterations);
1131 } 1137 }
1138#if ENABLE_FEATURE_SHOW_THREADS
1139 if (col & OPT_H) {
1140 scan_mask |= PSSCAN_TASKS;
1141 }
1142#endif
1132 1143
1133 /* change to /proc */ 1144 /* change to /proc */
1134 xchdir("/proc"); 1145 xchdir("/proc");