top(1): correct header, align it.

THR is always 6 digits or longer. Now that the PID/THR change is
separated, use correct headers.

PR:		228823
Reported by:	Trond.Endrestol@ximalas.info
This commit is contained in:
eadler 2018-06-09 02:47:02 +00:00
parent 263b6e344b
commit bd2aa50641

View File

@ -94,17 +94,20 @@ static const char io_header[] =
static const char io_Proc_format[] =
"%5d%*s %-*.*s %6ld %6ld %6ld %6ld %6ld %6ld %6.2f%% %.*s";
/* XXX: build up header instead of statically defining them.
* This will also allow for a "format string" to be supplied
* as an argument to top(1) instead of having predefined options */
static const char smp_header_thr_and_pid[] =
" PID%*s %-*.*s THR PRI NICE SIZE RES%*s STATE C TIME %7s COMMAND";
static const char smp_header_tid_only[] =
" THR%*s %-*.*s " "PRI NICE SIZE RES%*s STATE C TIME %7s COMMAND";
" %s%*s %-*.*s THR PRI NICE SIZE RES%*s STATE C TIME %7s COMMAND";
static const char smp_header_id_only[] =
" %s%*s %-*.*s PRI NICE SIZE RES%*s STATE C TIME %7s COMMAND";
static const char smp_Proc_format[] =
"%5d%*s %-*.*s %s%3d %4s%7s %6s%*.*s %-6.6s %2d%7s %6.2f%% %.*s";
static char up_header_thr_and_pid[] =
" PID%*s %-*.*s THR PRI NICE SIZE RES%*s STATE TIME %7s COMMAND";
static char up_header_tid_only[] =
" THR%*s %-*.*s " "PRI NICE SIZE RES%*s STATE TIME %7s COMMAND";
static char up_header_id_only[] =
" %s%*s %-*.*s PRI NICE SIZE RES%*s STATE TIME %7s COMMAND";
static char up_Proc_format[] =
"%5d%*s %-*.*s %s%3d %4s%7s %6s%*.*s %-6.6s%.0d%7s %6.2f%% %.*s";
@ -425,19 +428,31 @@ format_header(const char *uname_field)
switch (displaymode) {
case DISP_CPU:
/*
* The logic of picking the right header format seems reverse
* here because we only want to display a THR column when
* "thread mode" is off (and threads are not listed as
* separate lines).
* The logic of picking the right header is confusing, and
* depends on too much. We should instead have a struct of
* "header name", and "header format" which we build up.
* This would also fix the duplicate of effort into up vs smp
* mode.
*/
prehead = smpmode ?
(ps.thread_id ? smp_header_tid_only : smp_header_thr_and_pid) :
(ps.thread_id ? up_header_tid_only : up_header_thr_and_pid);
snprintf(Header, sizeof(Header), prehead,
jidlength, ps.jail ? " JID" : "",
namelength, namelength, uname_field,
swaplength, ps.swap ? " SWAP" : "",
ps.wcpu ? "WCPU" : "CPU");
if (smpmode) {
prehead = ps.thread ?
smp_header_id_only : smp_header_thr_and_pid;
snprintf(Header, sizeof(Header), prehead,
ps.thread_id ? " THR" : "PID",
jidlength, ps.jail ? " JID" : "",
namelength, namelength, uname_field,
swaplength, ps.swap ? " SWAP" : "",
ps.wcpu ? "WCPU" : "CPU");
} else {
prehead = ps.thread ?
up_header_id_only : up_header_thr_and_pid;
snprintf(Header, sizeof(Header), prehead,
ps.thread_id ? " THR" : "PID",
jidlength, ps.jail ? " JID" : "",
namelength, namelength, uname_field,
swaplength, ps.swap ? " SWAP" : "",
ps.wcpu ? "WCPU" : "CPU");
}
break;
case DISP_IO:
prehead = io_header;