nsh: Improve performance of ps
by merge nsh_output
Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
This commit is contained in:
parent
e957e1633c
commit
f1ba1a40ed
@ -56,6 +56,17 @@
|
||||
# define LOAD_FRAC(x) (LOAD_INT(((x) & (FIXED_1 - 1)) * 100))
|
||||
#endif
|
||||
|
||||
#if CONFIG_MM_BACKTRACE >= 0 && !defined(CONFIG_NSH_DISABLE_PSHEAPUSAGE)
|
||||
# define PS_SHOW_HEAPSIZE
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_NSH_DISABLE_PSSTACKUSAGE
|
||||
# define PS_SHOW_STACKSIZE
|
||||
# ifdef CONFIG_STACK_COLORATION
|
||||
# define PS_SHOW_STACKUSAGE
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
@ -341,17 +352,20 @@ static int ps_callback(FAR struct nsh_vtbl_s *vtbl, FAR const char *dirpath,
|
||||
|
||||
/* Finally, print the status information */
|
||||
|
||||
nsh_output(vtbl, "%5s ", entryp->d_name);
|
||||
nsh_output(vtbl, "%5s ", status.td_groupid);
|
||||
|
||||
nsh_output(vtbl,
|
||||
"%5s %5s "
|
||||
#ifdef CONFIG_SMP
|
||||
nsh_output(vtbl, "%3s ", status.td_cpu);
|
||||
"%3s "
|
||||
#endif
|
||||
|
||||
nsh_output(vtbl, "%3s %-8s %-7s %3s %-8s %-9s ",
|
||||
"%3s %-8s %-7s %3s %-8s %-9s %-8s ",
|
||||
entryp->d_name, status.td_groupid,
|
||||
#ifdef CONFIG_SMP
|
||||
status.td_cpu,
|
||||
#endif
|
||||
status.td_priority, status.td_policy, status.td_type,
|
||||
status.td_flags, status.td_state, status.td_event);
|
||||
nsh_output(vtbl, "%-8s ", status.td_sigmask);
|
||||
status.td_flags, status.td_state, status.td_event,
|
||||
status.td_sigmask);
|
||||
|
||||
#if CONFIG_MM_BACKTRACE >= 0 && !defined(CONFIG_NSH_DISABLE_PSHEAPUSAGE)
|
||||
/* Get the Heap AllocSize */
|
||||
@ -412,7 +426,6 @@ static int ps_callback(FAR struct nsh_vtbl_s *vtbl, FAR const char *dirpath,
|
||||
}
|
||||
}
|
||||
|
||||
nsh_output(vtbl, "%08lu ", heap_size);
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_NSH_DISABLE_PSSTACKUSAGE)
|
||||
@ -480,10 +493,7 @@ static int ps_callback(FAR struct nsh_vtbl_s *vtbl, FAR const char *dirpath,
|
||||
}
|
||||
}
|
||||
|
||||
nsh_output(vtbl, "%06lu ", stack_size);
|
||||
|
||||
#ifdef CONFIG_STACK_COLORATION
|
||||
nsh_output(vtbl, "%06lu ", stack_used);
|
||||
|
||||
if (stack_size > 0 && stack_used > 0)
|
||||
{
|
||||
@ -491,12 +501,6 @@ static int ps_callback(FAR struct nsh_vtbl_s *vtbl, FAR const char *dirpath,
|
||||
|
||||
stack_filled = 10 * 100 * stack_used / stack_size;
|
||||
}
|
||||
|
||||
/* Additionally print a '!' if the stack is filled more than 80% */
|
||||
|
||||
nsh_output(vtbl, "%3lu.%lu%%%c ",
|
||||
stack_filled / 10, stack_filled % 10,
|
||||
(stack_filled >= 10 * 80 ? '!' : ' '));
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -520,8 +524,40 @@ static int ps_callback(FAR struct nsh_vtbl_s *vtbl, FAR const char *dirpath,
|
||||
vtbl->iobuffer[0] = '\0';
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
nsh_output(vtbl, "%6s ", nsh_trimspaces(vtbl->iobuffer));
|
||||
#if defined(PS_SHOW_HEAPSIZE) || defined (PS_SHOW_STACKSIZE) || \
|
||||
defined (PS_SHOW_STACKUSAGE) || defined (NSH_HAVE_CPULOAD)
|
||||
nsh_output(vtbl,
|
||||
#ifdef PS_SHOW_HEAPSIZE
|
||||
"%08lu "
|
||||
#endif
|
||||
#ifdef PS_SHOW_STACKSIZE
|
||||
"%06lu "
|
||||
#endif
|
||||
#ifdef PS_SHOW_STACKUSAGE
|
||||
"%06lu "
|
||||
"%3lu.%lu%%%c "
|
||||
#endif
|
||||
#ifdef NSH_HAVE_CPULOAD
|
||||
"%6s "
|
||||
#endif
|
||||
#if CONFIG_MM_BACKTRACE >= 0 && !defined(CONFIG_NSH_DISABLE_PSHEAPUSAGE)
|
||||
, heap_size
|
||||
#endif
|
||||
#if !defined(CONFIG_NSH_DISABLE_PSSTACKUSAGE)
|
||||
, stack_size
|
||||
#endif
|
||||
#ifdef PS_SHOW_STACKUSAGE
|
||||
, stack_used,
|
||||
stack_filled / 10,
|
||||
stack_filled % 10,
|
||||
(stack_filled >= 10 * 80 ? '!' : ' ')
|
||||
#endif
|
||||
#ifdef NSH_HAVE_CPULOAD
|
||||
, nsh_trimspaces(vtbl->iobuffer)
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
|
||||
/* Read the task/thread command line */
|
||||
@ -586,33 +622,47 @@ int cmd_ps(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
|
||||
UNUSED(argc);
|
||||
UNUSED(argv);
|
||||
|
||||
nsh_output(vtbl, "%5s ", "PID");
|
||||
nsh_output(vtbl, "%5s ", "GROUP");
|
||||
|
||||
nsh_output(vtbl, "%5s %5s "
|
||||
#ifdef CONFIG_SMP
|
||||
nsh_output(vtbl, "%3s ", "CPU");
|
||||
"%3s "
|
||||
#endif
|
||||
|
||||
nsh_output(vtbl, "%3s %-8s %-7s %3s %-8s %-9s ",
|
||||
"PRI", "POLICY", "TYPE", "NPX", "STATE", "EVENT");
|
||||
nsh_output(vtbl, "%-8s ", "SIGMASK");
|
||||
|
||||
"%3s %-8s %-7s %3s %-8s %-9s "
|
||||
"%-8s "
|
||||
#if CONFIG_MM_BACKTRACE >= 0 && !defined(CONFIG_NSH_DISABLE_PSHEAPUSAGE)
|
||||
nsh_output(vtbl, "%8s ", "HEAP");
|
||||
"%8s "
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_NSH_DISABLE_PSSTACKUSAGE)
|
||||
nsh_output(vtbl, "%6s ", "STACK");
|
||||
"%6s "
|
||||
#ifdef CONFIG_STACK_COLORATION
|
||||
nsh_output(vtbl, "%6s ", "USED");
|
||||
nsh_output(vtbl, "%7s ", "FILLED");
|
||||
"%6s "
|
||||
"%7s "
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef NSH_HAVE_CPULOAD
|
||||
nsh_output(vtbl, "%6s ", "CPU");
|
||||
"%6s "
|
||||
#endif
|
||||
nsh_output(vtbl, "%s\n", "COMMAND");
|
||||
"%s\n",
|
||||
"PID", "GROUP",
|
||||
#ifdef CONFIG_SMP
|
||||
"CPU",
|
||||
#endif
|
||||
"PRI", "POLICY", "TYPE", "NPX", "STATE", "EVENT",
|
||||
"SIGMASK",
|
||||
#if CONFIG_MM_BACKTRACE >= 0 && !defined(CONFIG_NSH_DISABLE_PSHEAPUSAGE)
|
||||
"HEAP",
|
||||
#endif
|
||||
#if !defined(CONFIG_NSH_DISABLE_PSSTACKUSAGE)
|
||||
"STACK",
|
||||
#ifdef CONFIG_STACK_COLORATION
|
||||
"USED",
|
||||
"FILLED",
|
||||
#endif
|
||||
#endif
|
||||
#ifdef NSH_HAVE_CPULOAD
|
||||
"CPU",
|
||||
#endif
|
||||
"COMMAND"
|
||||
);
|
||||
|
||||
return nsh_foreach_direntry(vtbl, "ps", CONFIG_NSH_PROC_MOUNTPOINT,
|
||||
ps_callback, NULL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user