From kstailey@bsdlab.tf-md.net  Sun Apr 13 20:52:27 2003
Return-Path: <kstailey@bsdlab.tf-md.net>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP
	id 9439D37B401; Sun, 13 Apr 2003 20:52:27 -0700 (PDT)
Received: from bsdlab.tf-md.net (64-93-1-35.client.dsl.net [64.93.1.35])
	by mx1.FreeBSD.org (Postfix) with ESMTP
	id 6119D43F3F; Sun, 13 Apr 2003 20:52:26 -0700 (PDT)
	(envelope-from kstailey@bsdlab.tf-md.net)
Received: from bsdlab.tf-md.net (localhost.tf-md.net [127.0.0.1])
	by bsdlab.tf-md.net (8.12.6p2/8.12.6) with ESMTP id h3E3loYq047604;
	Sun, 13 Apr 2003 23:47:51 -0400 (EDT)
	(envelope-from kstailey@bsdlab.tf-md.net)
Received: (from kstailey@localhost)
	by bsdlab.tf-md.net (8.12.6p2/8.12.6/Submit) id h3E3loXC047603;
	Sun, 13 Apr 2003 23:47:50 -0400 (EDT)
Message-Id: <200304140347.h3E3loXC047603@bsdlab.tf-md.net>
Date: Sun, 13 Apr 2003 23:47:50 -0400 (EDT)
From: Ken Stailey <kstailey@yahoo.com>
Reply-To: Ken Stailey <kstailey@yahoo.com>
To: FreeBSD-gnats-submit@freebsd.org
Cc: tjr@freebsd.org
Subject: "vmstat -f" says "unimplemented" but data is at hand
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         50924
>Category:       bin
>Synopsis:       [patch] vmstat(8): "vmstat -f" says "unimplemented" but data is at hand
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Apr 13 21:00:26 PDT 2003
>Closed-Date:    Sun May 07 09:28:06 GMT 2006
>Last-Modified:  Sun May 07 09:28:06 GMT 2006
>Originator:     Ken Stailey
>Release:        FreeBSD 5.0-RELEASE-p7 i386
>Organization:
Thomson Financial
>Environment:
System: FreeBSD bsdlab.tf-md.net 5.0-RELEASE-p7 FreeBSD 5.0-RELEASE-p7 #6: Mon Mar 31 12:31:18 EST 2003 kstailey@bsdlab.tf-md.net:/usr/obj/usr/src/sys/BSDLAB i386


>Description:
"vmstat -f" says it's not implimented but "vmstat -s" produces the goods.
How ironic.

>How-To-Repeat:
Run "vmstat -f" and then "vmstat -s | grep fork"

>Fix:

Index: vmstat.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/vmstat/vmstat.c,v
retrieving revision 1.59
diff -u -r1.59 vmstat.c
--- vmstat.c	2002/08/09 15:47:43	1.59
+++ vmstat.c	2003/04/14 03:46:29
@@ -101,8 +101,6 @@
 #ifdef notyet
 #define	X_DEFICIT	10
 	{ "_deficit" },
-#define	X_FORKSTAT	11
-	{ "_forkstat" },
 #define X_REC		12
 	{ "_rectime" },
 #define X_PGIN		13
@@ -149,6 +147,7 @@
 static void	domem(void);
 static void	dointr(void);
 static void	dosum(void);
+static void	doforkst(void);
 static void	dovmstat(u_int, int);
 static void	dozmem(void);
 static void	kread(int, void *, size_t);
@@ -181,7 +180,7 @@
 			reps = atoi(optarg);
 			break;
 		case 'f':
-			errx(EX_USAGE, "sorry, -f is not (re)implemented yet");
+			todo |= FORKSTAT;
 			break;
 		case 'i':
 			todo |= INTRSTAT;
@@ -295,10 +294,8 @@
 	} else if (reps)
 		interval = 1;
 
-#ifdef notyet
 	if (todo & FORKSTAT)
 		doforkst();
-#endif
 	if (todo & MEMSTAT)
 		domem();
 	if (todo & ZMEMSTAT)
@@ -652,19 +649,27 @@
 	    PCT(lnchstats.ncs_long, nchtotal));
 }
 
-#ifdef notyet
 void
 doforkst()
 {
-	struct forkstat fks;
+	struct nchstats lnchstats;
+	long nchtotal;
+
+	kread(X_SUM, &sum, sizeof(sum));
 
-	kread(X_FORKSTAT, &fks, sizeof(struct forkstat));
 	(void)printf("%d forks, %d pages, average %.2f\n",
-	    fks.cntfork, fks.sizfork, (double)fks.sizfork / fks.cntfork);
+	    sum.v_forks, sum.v_forkpages,
+	    sum.v_forks == 0 ? 0 :
+	    (double)sum.v_forkpages / sum.v_forks);
 	(void)printf("%d vforks, %d pages, average %.2f\n",
-	    fks.cntvfork, fks.sizvfork, (double)fks.sizvfork / fks.cntvfork);
+	    sum.v_vforks, sum.v_vforkpages,
+	    sum.v_vforks == 0 ? 0 :
+	    (double)sum.v_vforkpages / sum.v_vforks);
+	(void)printf("%d rforks, %d pages, average %.2f\n",
+	    sum.v_rforks, sum.v_rforkpages,
+	    sum.v_rforks == 0 ? 0 :
+	    (double)sum.v_rforkpages / sum.v_rforks);
 }
-#endif
 
 static void
 devstats()



>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->patched 
State-Changed-By: tjr 
State-Changed-When: Mon Apr 14 00:22:57 PDT 2003 
State-Changed-Why:  
Fixed in -current, thanks. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=50924 
State-Changed-From-To: patched->closed 
State-Changed-By: maxim 
State-Changed-When: Sun May 7 09:26:27 UTC 2006 
State-Changed-Why:  
Tree years ago it was -current.  Now we call it -stable. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=50924 
>Unformatted:
