summaryrefslogtreecommitdiff
path: root/usr.bin/vmstat
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2003-12-11 07:46:08 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2003-12-11 07:46:08 +0000
commit56f9b096322f82081133597ec2f884a90e2e0a40 (patch)
treed2f42b400eee213dd1a67d9c9e15d1119a1a01a5 /usr.bin/vmstat
parent165d50f626cdc5713b197f633e2a058f4f81710a (diff)
Notes
Diffstat (limited to 'usr.bin/vmstat')
-rw-r--r--usr.bin/vmstat/vmstat.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/usr.bin/vmstat/vmstat.c b/usr.bin/vmstat/vmstat.c
index 3255e7be6e39..e034911fd1ed 100644
--- a/usr.bin/vmstat/vmstat.c
+++ b/usr.bin/vmstat/vmstat.c
@@ -852,10 +852,13 @@ dointr(void)
kread(X_INTRCNT, intrcnt, intrcntlen);
kread(X_INTRNAMES, intrname, inamlen);
} else {
- mysysctl("hw.intrcnt", NULL, &intrcntlen, NULL, 0);
- if ((intrcnt = malloc(intrcntlen)) == NULL)
- err(1, "calloc()");
- mysysctl("hw.intrcnt", intrcnt, &intrcntlen, NULL, 0);
+ for (intrcnt = NULL, intrcntlen = 1024; ; intrcntlen *= 2) {
+ if ((intrcnt = reallocf(intrcnt, intrcntlen)) == NULL)
+ err(1, "reallocf()");
+ if (mysysctl("hw.intrcnt",
+ intrcnt, &intrcntlen, NULL, 0) == 0)
+ break;
+ }
for (intrname = NULL, inamlen = 1024; ; inamlen *= 2) {
if ((intrname = reallocf(intrname, inamlen)) == NULL)
err(1, "reallocf()");