svn commit: r358181 - head/usr.sbin/pstat

Christian S.J. Peron csjp at FreeBSD.org
Thu Feb 20 21:12:12 UTC 2020


Author: csjp
Date: Thu Feb 20 21:12:10 2020
New Revision: 358181
URL: https://svnweb.freebsd.org/changeset/base/358181

Log:
  - Implement -h (human readable) for the size of the underlying block disk.
    Currently, the size of the swap device is unconditionally reported using
    blocks, even if -h has been used.
  - While here, switch to CONVERT_BLOCKS() instead of CONVERT() which will
    avoid overflowing size counters (in human readable form see: r196244)
  - Update the column headers to reflect that a size is being reported instead
    of the block size units being used
  
  Before:
  
  $ swapinfo
  Device          1K-blocks     Used    Avail Capacity
  /dev/gpt/swapfs   1048576        0  1048576     0%
  $
  
  After:
  
  $ swapinfo -h
  Device           Size     Used    Avail Capacity
  /dev/gpt/swapfs    1.0G       0B     1.0G     0%
  $
  
  Differential Revision:	https://reviews.freebsd.org/D23758
  Reviewed by:	kevans
  MFC after:	3 weeks

Modified:
  head/usr.sbin/pstat/pstat.c

Modified: head/usr.sbin/pstat/pstat.c
==============================================================================
--- head/usr.sbin/pstat/pstat.c	Thu Feb 20 21:07:23 2020	(r358180)
+++ head/usr.sbin/pstat/pstat.c	Thu Feb 20 21:12:10 2020	(r358181)
@@ -95,6 +95,8 @@ static struct {
 #define NNAMES	(sizeof(namelist) / sizeof(*namelist))
 static struct nlist nl[NNAMES];
 
+#define	SIZEHDR	"Size"
+
 static int	humanflag;
 static int	usenumflag;
 static int	totalflag;
@@ -471,7 +473,12 @@ print_swap_header(void)
 	long blocksize;
 	const char *header;
 
-	header = getbsize(&hlen, &blocksize);
+	if (humanflag) {
+		header = SIZEHDR;
+		hlen = sizeof(SIZEHDR);
+	} else {
+		header = getbsize(&hlen, &blocksize);
+	}
 	if (totalflag == 0)
 		(void)printf("%-15s %*s %8s %8s %8s\n",
 		    "Device", hlen, header,
@@ -484,23 +491,30 @@ print_swap_line(const char *swdevname, intmax_t nblks,
 {
 	char usedbuf[5];
 	char availbuf[5];
+	char sizebuf[5];
 	int hlen, pagesize;
 	long blocksize;
 
 	pagesize = getpagesize();
 	getbsize(&hlen, &blocksize);
 
-	printf("%-15s %*jd ", swdevname, hlen, CONVERT(nblks));
+	printf("%-15s ", swdevname);
 	if (humanflag) {
+		humanize_number(sizebuf, sizeof(sizebuf),
+		    CONVERT_BLOCKS(nblks), "",
+		    HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
 		humanize_number(usedbuf, sizeof(usedbuf),
 		    CONVERT_BLOCKS(bused), "",
 		    HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
 		humanize_number(availbuf, sizeof(availbuf),
 		    CONVERT_BLOCKS(bavail), "",
 		    HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
-		printf("%8s %8s %5.0f%%\n", usedbuf, availbuf, bpercent);
+		printf("%8s %8s %8s %5.0f%%\n", sizebuf,
+		    usedbuf, availbuf, bpercent);
 	} else {
-		printf("%8jd %8jd %5.0f%%\n", (intmax_t)CONVERT(bused),
+		printf("%*jd %8jd %8jd %5.0f%%\n", hlen,
+		    (intmax_t)CONVERT(nblks),
+		    (intmax_t)CONVERT(bused),
 		    (intmax_t)CONVERT(bavail), bpercent);
 	}
 }


More information about the svn-src-head mailing list