ps,top: add an option to show threads. +260 bytes of code

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2009-09-19 22:29:42 +02:00
parent f00cfdfae5
commit b410d4ada7
5 changed files with 74 additions and 13 deletions

View File

@@ -976,7 +976,10 @@ int top_main(int argc UNUSED_PARAM, char **argv)
/* read process IDs & status for all the processes */
while ((p = procps_scan(p, scan_mask)) != NULL) {
int n;
if (scan_mask == TOP_MASK) {
#if ENABLE_FEATURE_TOPMEM
if (scan_mask != TOPMEM_MASK)
#endif
{
n = ntop;
top = xrealloc_vector(top, 6, ntop++);
top[n].pid = p->pid;
@@ -991,8 +994,9 @@ int top_main(int argc UNUSED_PARAM, char **argv)
#if ENABLE_FEATURE_TOP_SMP_PROCESS
top[n].last_seen_on_cpu = p->last_seen_on_cpu;
#endif
} else { /* TOPMEM */
}
#if ENABLE_FEATURE_TOPMEM
else { /* TOPMEM */
if (!(p->mapped_ro | p->mapped_rw))
continue; /* kernel threads are ignored */
n = ntop;
@@ -1007,15 +1011,15 @@ int top_main(int argc UNUSED_PARAM, char **argv)
topmem[n].dirty = p->private_dirty + p->shared_dirty;
topmem[n].dirty_sh = p->shared_dirty;
topmem[n].stack = p->stack;
#endif
}
#endif
} /* end of "while we read /proc" */
if (ntop == 0) {
bb_error_msg("no process info in /proc");
break;
}
if (scan_mask == TOP_MASK) {
if (scan_mask != TOPMEM_MASK) {
#if ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE
if (!prev_hist_count) {
do_stats();
@@ -1039,7 +1043,7 @@ int top_main(int argc UNUSED_PARAM, char **argv)
if (OPT_BATCH_MODE) {
lines_rem = INT_MAX;
}
if (scan_mask == TOP_MASK)
if (scan_mask != TOPMEM_MASK)
display_process_list(lines_rem, col);
#if ENABLE_FEATURE_TOPMEM
else
@@ -1076,6 +1080,13 @@ int top_main(int argc UNUSED_PARAM, char **argv)
sort_function[2] = time_sort;
# endif
}
#if ENABLE_FEATURE_SHOW_THREADS
if (c == 'h'
IF_FEATURE_TOPMEM(&& scan_mask != TOPMEM_MASK)
) {
scan_mask ^= PSSCAN_TASKS;
}
#endif
# if ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE
if (c == 'p') {
IF_FEATURE_TOPMEM(scan_mask = TOP_MASK;)