Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Jan 2000 13:45:39 -0500 (EST)
From:      jc@irbs.com
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   bin/16133: vmstat -i reports negative counts
Message-ID:  <200001151845.NAA25577@irbs.irbs.com>

next in thread | raw e-mail | index | archive | help

>Number:         16133
>Category:       bin
>Synopsis:       vmstat -i reports negative counts
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jan 15 10:50:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     John Capo
>Release:        FreeBSD 3.4-STABLE i386
>Organization:
IRBS Engineering
>Environment:

	

>Description:

Bogus column alignment and negative numbers.

interrupt      total      rate
clk0 irq0    53984189       99
rtc0 irq8    69100805      127
pci irq12    1075006802     1991
pci irq15    506470437      938
pci irq10    1078679332     1998
pci irq11    141900962      262
fdc0 irq6           1        0
wdc0 irq14      90559        0
Total        -1369734209    -2537


>How-To-Repeat:

Generate a lot of interrupts from multiple network interfaces.

>Fix:
	
Index: vmstat.c
===================================================================
RCS file: /usr/cvs/src/usr.bin/vmstat/vmstat.c,v
retrieving revision 1.29.2.2
diff -c -r1.29.2.2 vmstat.c
*** vmstat.c	1999/08/29 15:34:34	1.29.2.2
--- vmstat.c	2000/01/15 18:43:14
***************
*** 759,765 ****
  void
  dointr()
  {
! 	register long *intrcnt, inttotal, uptime;
  	register int nintr, inamlen;
  	register char *intrname;
  
--- 759,765 ----
  void
  dointr()
  {
! 	register unsigned long *intrcnt, inttotal, uptime;
  	register int nintr, inamlen;
  	register char *intrname;
  
***************
*** 778,789 ****
  	nintr /= sizeof(long);
  	while (--nintr >= 0) {
  		if (*intrcnt)
! 			(void)printf("%-12s %8ld %8ld\n", intrname,
  			    *intrcnt, *intrcnt / uptime);
  		intrname += strlen(intrname) + 1;
  		inttotal += *intrcnt++;
  	}
! 	(void)printf("Total        %8ld %8ld\n", inttotal, inttotal / uptime);
  }
  
  void
--- 778,789 ----
  	nintr /= sizeof(long);
  	while (--nintr >= 0) {
  		if (*intrcnt)
! 			(void)printf("%-12s %10ld %10ld\n", intrname,
  			    *intrcnt, *intrcnt / uptime);
  		intrname += strlen(intrname) + 1;
  		inttotal += *intrcnt++;
  	}
! 	(void)printf("Total        %10lu %10ld\n", inttotal, inttotal / uptime);
  }
  
  void


>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200001151845.NAA25577>