svn commit: r334869 - head/usr.bin/top
Eitan Adler
eadler at FreeBSD.org
Sat Jun 9 02:47:03 UTC 2018
Author: eadler
Date: Sat Jun 9 02:47:02 2018
New Revision: 334869
URL: https://svnweb.freebsd.org/changeset/base/334869
Log:
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 at ximalas.info
Modified:
head/usr.bin/top/machine.c
Modified: head/usr.bin/top/machine.c
==============================================================================
--- head/usr.bin/top/machine.c Sat Jun 9 02:41:51 2018 (r334868)
+++ head/usr.bin/top/machine.c Sat Jun 9 02:47:02 2018 (r334869)
@@ -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;
More information about the svn-src-head
mailing list