aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorStanislav Sedov <stas@FreeBSD.org>2009-08-15 14:39:33 +0000
committerStanislav Sedov <stas@FreeBSD.org>2009-08-15 14:39:33 +0000
commit67c601d5f6eb2b25e2cef312253bdb4ab84d5359 (patch)
treef7ce5b6f33918da49c9b99299898471db75e3f83 /usr.sbin
parent70ff501c96bb4f21032811977b41705fc058569e (diff)
downloadsrc-67c601d5f6eb2b25e2cef312253bdb4ab84d5359.tar.gz
src-67c601d5f6eb2b25e2cef312253bdb4ab84d5359.zip
- Avoid overflowing the swap size counters in human-readable mode
by introducing the new CONVERT_BLOCKS macro which operates on sizes already converted to number of blocks. With this macro it is not longer needed to perform needless multiplication by blocksize just to divide on it later in CONVERT macro. Approved by: re (kib) MFC after: 1 week
Notes
Notes: svn path=/head/; revision=196244
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/pstat/pstat.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/usr.sbin/pstat/pstat.c b/usr.sbin/pstat/pstat.c
index bf297f5ffba1..54351667b27f 100644
--- a/usr.sbin/pstat/pstat.c
+++ b/usr.sbin/pstat/pstat.c
@@ -460,6 +460,7 @@ getfiles(struct xfile **abuf, size_t *alen)
*/
#define CONVERT(v) ((int64_t)(v) * pagesize / blocksize)
+#define CONVERT_BLOCKS(v) ((int64_t)(v) * pagesize)
static struct kvm_swap swtot;
static int nswdev;
@@ -492,10 +493,10 @@ print_swap_line(const char *swdevname, intmax_t nblks, intmax_t bused,
printf("%-15s %*jd ", swdevname, hlen, CONVERT(nblks));
if (humanflag) {
humanize_number(usedbuf, sizeof(usedbuf),
- CONVERT(blocksize * bused), "",
+ CONVERT_BLOCKS(bused), "",
HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
humanize_number(availbuf, sizeof(availbuf),
- CONVERT(blocksize * bavail), "",
+ CONVERT_BLOCKS(bavail), "",
HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
printf("%8s %8s %5.0f%%\n", usedbuf, availbuf, bpercent);
} else {