summaryrefslogtreecommitdiffstats
path: root/usr.bin/vmstat
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2003-12-08 07:57:57 +0000
committermarcel <marcel@FreeBSD.org>2003-12-08 07:57:57 +0000
commit4bb21e1ec337ce29ea16c48f04d2e9304c0caa1a (patch)
tree1dad7de86ab4d599c8bc7ca57c5fba89110c53a6 /usr.bin/vmstat
parenta1cabe1bbbad4ba662b0615ee6af81256ccca608 (diff)
downloadFreeBSD-src-4bb21e1ec337ce29ea16c48f04d2e9304c0caa1a.zip
FreeBSD-src-4bb21e1ec337ce29ea16c48f04d2e9304c0caa1a.tar.gz
Unbreak vmstat -i on ia64:
o nintr and inamlen must by of type size_t, not int, o Remove now unnecessary casts, o Handle the aflag differently, because the intr. names have a fixed width and almost always have trailing spaces.
Diffstat (limited to 'usr.bin/vmstat')
-rw-r--r--usr.bin/vmstat/vmstat.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/usr.bin/vmstat/vmstat.c b/usr.bin/vmstat/vmstat.c
index c84f904..61bcbde 100644
--- a/usr.bin/vmstat/vmstat.c
+++ b/usr.bin/vmstat/vmstat.c
@@ -836,9 +836,8 @@ dointr(void)
{
u_long *intrcnt, uptime;
u_int64_t inttotal;
- int nintr, inamlen;
+ size_t clen, nintr, inamlen;
int i, istrnamlen;
- size_t clen;
char *intrname, *tintrname;
uptime = getuptime();
@@ -847,11 +846,11 @@ dointr(void)
namelist[X_INTRCNT].n_value;
inamlen = namelist[X_EINTRNAMES].n_value -
namelist[X_INTRNAMES].n_value;
- if ((intrcnt = malloc((size_t)nintr)) == NULL ||
- (intrname = malloc((size_t)inamlen)) == NULL)
+ if ((intrcnt = malloc(nintr)) == NULL ||
+ (intrname = malloc(inamlen)) == NULL)
err(1, "malloc()");
- kread(X_INTRCNT, intrcnt, (size_t)nintr);
- kread(X_INTRNAMES, intrname, (size_t)inamlen);
+ kread(X_INTRCNT, intrcnt, nintr);
+ kread(X_INTRNAMES, intrname, inamlen);
} else {
for (intrcnt = NULL, nintr = 1024; ; nintr *= 2) {
if ((intrcnt = reallocf(intrcnt, nintr)) == NULL)
@@ -880,19 +879,23 @@ dointr(void)
(void)printf("%-*s %20s %10s\n", istrnamlen, "interrupt", "total",
"rate");
inttotal = 0;
- while (--nintr >= 0) {
+ for (i = 0; i < nintr; i++) {
const char *p;
if (intrname[0] != '\0' &&
(aflag > 0 || *intrcnt != 0) &&
+#ifdef __ia64__
+ (aflag > 1 || *intrname != '#'))
+#else
(aflag > 1 || ((p = strchr(intrname, ' ')) && p[1] != ' ')) &&
(aflag > 2 || strncmp(intrname, "stray ", 6) != 0))
+#endif
(void)printf("%-*s %20lu %10lu\n", istrnamlen, intrname,
*intrcnt, *intrcnt / uptime);
intrname += strlen(intrname) + 1;
inttotal += *intrcnt++;
}
- (void)printf("%-*s %20llu %10llu\n", istrnamlen, "Total", inttotal,
- inttotal / (u_int64_t) uptime);
+ (void)printf("%-*s %20llu %10llu\n", istrnamlen, "Total",
+ (long long)inttotal, (long long)(inttotal / uptime));
}
static void
OpenPOWER on IntegriCloud