aboutsummaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorTim J. Robbins <tjr@FreeBSD.org>2003-04-14 07:21:03 +0000
committerTim J. Robbins <tjr@FreeBSD.org>2003-04-14 07:21:03 +0000
commit3c93cfb51070efa879de558561b2bfd904b65a0c (patch)
treeb186f57a54d31e984aa70fe27cbdc9d719c011ea /usr.bin
parentf5270431bee387ac095edd5aae72546e4eecc0e0 (diff)
downloadsrc-3c93cfb51070efa879de558561b2bfd904b65a0c.tar.gz
src-3c93cfb51070efa879de558561b2bfd904b65a0c.zip
Reimplement the vmstat -f option (display fork statistics).
PR: 50924 Submitted by: Ken Stailey (with a few changes)
Notes
Notes: svn path=/head/; revision=113460
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/vmstat/vmstat.c32
1 files changed, 17 insertions, 15 deletions
diff --git a/usr.bin/vmstat/vmstat.c b/usr.bin/vmstat/vmstat.c
index dedb4a72203d..0cfbbc0720ff 100644
--- a/usr.bin/vmstat/vmstat.c
+++ b/usr.bin/vmstat/vmstat.c
@@ -101,15 +101,13 @@ static struct nlist namelist[] = {
#ifdef notyet
#define X_DEFICIT 10
{ "_deficit" },
-#define X_FORKSTAT 11
- { "_forkstat" },
-#define X_REC 12
+#define X_REC 11
{ "_rectime" },
-#define X_PGIN 13
+#define X_PGIN 12
{ "_pgintime" },
-#define X_XSTATS 14
+#define X_XSTATS 13
{ "_xstats" },
-#define X_END 15
+#define X_END 14
#else
#define X_END 10
#endif
@@ -149,6 +147,7 @@ static void dosysctl(char *);
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 @@ main(argc, argv)
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 @@ main(argc, argv)
} else if (reps)
interval = 1;
-#ifdef notyet
if (todo & FORKSTAT)
doforkst();
-#endif
if (todo & MEMSTAT)
domem();
if (todo & ZMEMSTAT)
@@ -652,19 +649,24 @@ dosum()
PCT(lnchstats.ncs_long, nchtotal));
}
-#ifdef notyet
void
doforkst()
{
- struct forkstat fks;
- kread(X_FORKSTAT, &fks, sizeof(struct forkstat));
+ kread(X_SUM, &sum, sizeof(sum));
(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.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.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.0 :
+ (double)sum.v_rforkpages / sum.v_rforks);
}
-#endif
static void
devstats()