[comp.sources.sun] v02i033: Tahoe "systat" patches for SunOS

mcgrew@aramis.rutgers.edu (Charles Mcgrew) (10/24/90)

Submitted-by: budd@bu-it.bu.edu (Phil Budne)
Posting-number: Volume 2, Issue 33
Archive-name: tahoe-systat/patch01




Here are diffs to the BSD 4.3 Tahoe "systat" program for SunOS 4.0.3

[NOTE:  This requires that you have the BSD 4.3 Tahoe source. -CWM]

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of shell archive."
# Contents:  README Makefile.diff cmdtab.c.diff disks.c.diff
#   fetch.c.diff iostat.c.diff keyboard.c.diff main.c.diff pigs.c.diff
#   swap.c.diff systat.h.diff vmstat.c.diff
# Wrapped by budd@bu-it on Fri Jun 15 12:14:54 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f README -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"README\"
else
echo shar: Extracting \"README\" \(699 characters\)
sed "s/^X//" >README <<'END_OF_README'
XDiffs to BSD 4.3 Tahoe "systat" for SunOS 4.0.3
X
XThis is a "naive" port.  I have not gone to great lengths to remove
Xitems not valid on the Sun (ie; "Soft" interrupt count, VM counters
Xnot reported by new VM system), except for removing the "swap" display
Xand the inode cache information from the "vmstat" display.  I have not
XADDED any new information displays.  I have run it on Sun-3's and 4's.
X386i's will need the _'s removed from the nlist names.
X
XThe information displayed is to be considered suspect, and as the man
Xpage says "The whole thing is pretty hokey and was included in the
Xdistribution under serious duress."
X
XPhil Budne, Boston University
X(budd@bu-it.bu.edu)
XFriday June 15, 1990
END_OF_README
if test 699 -ne `wc -c <README`; then
    echo shar: \"README\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f Makefile.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"Makefile.diff\"
else
echo shar: Extracting \"Makefile.diff\" \(757 characters\)
sed "s/^X//" >Makefile.diff <<'END_OF_Makefile.diff'
X*** Makefile.orig	Mon Jun 11 15:32:58 1990
X--- Makefile	Tue Jun 12 19:03:17 1990
X***************
X*** 5,13 ****
X  #
X  #	@(#)Makefile	5.4	(Berkeley)	6/16/87
X  #
X! CFLAGS=	-O
X  LIBC=	/lib/libc.a
X! LIBS=	-lcurses -ltermlib -lm
X  SRCS=	cmds.c cmdtab.c disks.c fetch.c iostat.c keyboard.c vmstat.c main.c \
X  	mbufs.c netcmds.c netstat.c pigs.c swap.c
X  OBJS=	cmds.o cmdtab.o disks.o fetch.o iostat.o keyboard.o vmstat.o main.o \
X--- 5,13 ----
X  #
X  #	@(#)Makefile	5.4	(Berkeley)	6/16/87
X  #
X! CFLAGS=	-g
X  LIBC=	/lib/libc.a
X! LIBS=	-lcurses -ltermlib -lm -lkvm
X  SRCS=	cmds.c cmdtab.c disks.c fetch.c iostat.c keyboard.c vmstat.c main.c \
X  	mbufs.c netcmds.c netstat.c pigs.c swap.c
X  OBJS=	cmds.o cmdtab.o disks.o fetch.o iostat.o keyboard.o vmstat.o main.o \
END_OF_Makefile.diff
if test 757 -ne `wc -c <Makefile.diff`; then
    echo shar: \"Makefile.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f cmdtab.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"cmdtab.c.diff\"
else
echo shar: Extracting \"cmdtab.c.diff\" \(858 characters\)
sed "s/^X//" >cmdtab.c.diff <<'END_OF_cmdtab.c.diff'
X*** cmdtab.c.orig	Mon Jun 11 15:32:59 1990
X--- cmdtab.c	Mon Jun 11 15:35:26 1990
X***************
X*** 13,21 ****
X--- 13,23 ----
X  int     showpigs(), fetchpigs(), labelpigs();
X  int	initpigs(), closepigs();
X  WINDOW	*openpigs();
X+ #ifndef sun
X  int     showswap(), fetchswap(), labelswap();
X  int	initswap(), closeswap();
X  WINDOW	*openswap();
X+ #endif
X  int	showmbufs(), fetchmbufs(), labelmbufs();
X  int	initmbufs(), closembufs();
X  WINDOW	*openmbufs();
X***************
X*** 33,41 ****
X--- 35,45 ----
X          { "pigs",	showpigs,	fetchpigs,	labelpigs,
X  	  initpigs,	openpigs,	closepigs,	0,
X  	  CF_LOADAV },
X+ #ifndef sun
X          { "swap",	showswap,	fetchswap,	labelswap,
X  	  initswap,	openswap,	closeswap,	0,
X  	  CF_LOADAV },
X+ #endif
X          { "mbufs",	showmbufs,	fetchmbufs,	labelmbufs,
X  	  initmbufs,	openmbufs,	closembufs,	0,
X  	  CF_LOADAV },
END_OF_cmdtab.c.diff
if test 858 -ne `wc -c <cmdtab.c.diff`; then
    echo shar: \"cmdtab.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f disks.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"disks.c.diff\"
else
echo shar: Extracting \"disks.c.diff\" \(1752 characters\)
sed "s/^X//" >disks.c.diff <<'END_OF_disks.c.diff'
X*** disks.c.orig	Mon Jun 11 15:32:59 1990
X--- disks.c	Tue Jun 12 19:04:05 1990
X***************
X*** 15,20 ****
X--- 15,21 ----
X  static struct nlist nlst[] = {
X  #define	X_DK_NDRIVE	0
X  	{ "_dk_ndrive" },
X+ #ifndef sun
X  #define	X_DK_MSPW	1
X  	{ "_dk_mspw" },
X  #ifdef vax
X***************
X*** 23,36 ****
X  #define	X_UBDINIT	(X_DK_MSPW+2)
X  	{ "_ubdinit" },
X  #endif
X- #ifdef sun
X- #define	X_MBDINIT	(X_DK_MSPW+1)
X- 	{ "_mbdinit" },
X- #endif
X  #ifdef tahoe
X  #define	X_VBDINIT	(X_DK_MSPW+1)
X  	{ "_vbdinit" },
X  #endif
X  	{ "" },
X  };
X  
X--- 24,39 ----
X  #define	X_UBDINIT	(X_DK_MSPW+2)
X  	{ "_ubdinit" },
X  #endif
X  #ifdef tahoe
X  #define	X_VBDINIT	(X_DK_MSPW+1)
X  	{ "_vbdinit" },
X  #endif
X+ #else					/* is sun */
X+ #define	X_MBDINIT	(X_DK_NDRIVE+1)
X+ 	{ "_mbdinit" },
X+ #define	X_DK_BPS	(X_MBDINIT+1)
X+ 	{ "_dk_bps" },
X+ #endif					/* is sun */
X  	{ "" },
X  };
X  
X***************
X*** 40,45 ****
X--- 43,51 ----
X  	register char *cp;
X  	static int once = 0;
X  	static char buf[1024];
X+ # ifdef sun
X+ 	long *bps;
X+ # endif
X  
X  	if (once)
X  		return(1);
X***************
X*** 54,61 ****
X--- 60,79 ----
X  		return(0);
X  	}
X  	dk_mspw = (float *)calloc(dk_ndrive, sizeof (float));
X+ #ifdef sun
X+ 	bps = (long *)calloc(dk_ndrive, sizeof (long));
X+ 	lseek(kmem, nlst[X_DK_BPS].n_value, L_SET);
X+ 	read(kmem, bps, dk_ndrive * sizeof (long));
X+ 	for( i = 0; i < dk_ndrive; i++ )
X+ 	    if( bps[i] > 0 )
X+ 		dk_mspw[i] = 1.0 / bps[i];
X+ 	    else
X+ 		dk_mspw[i] = 0.0;
X+ 	free( bps );
X+ #else	
X  	lseek(kmem, nlst[X_DK_MSPW].n_value, L_SET);
X  	read(kmem, dk_mspw, dk_ndrive * sizeof (float));
X+ #endif
X  	dr_name = (char **)calloc(dk_ndrive, sizeof (char *));
X  	dk_select = (int *)calloc(dk_ndrive, sizeof (int));
X  	for (cp = buf, i = 0; i < dk_ndrive; i++) {
END_OF_disks.c.diff
if test 1752 -ne `wc -c <disks.c.diff`; then
    echo shar: \"disks.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f fetch.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"fetch.c.diff\"
else
echo shar: Extracting \"fetch.c.diff\" \(763 characters\)
sed "s/^X//" >fetch.c.diff <<'END_OF_fetch.c.diff'
X*** fetch.c.orig	Mon Jun 11 15:32:59 1990
X--- fetch.c	Tue Jun 12 19:05:21 1990
X***************
X*** 57,67 ****
X--- 57,72 ----
X          return (namp);
X  }
X  
X+ #ifdef sun
X+ struct user *up;
X+ #define u	(*up)
X+ #else
X  union {
X          struct  user user;
X          char    upages[UPAGES][NBPG];
X  } user;
X  #define u       user.user
X+ #endif
X  
X  char *
X  getcmd(pid, mproc)
X***************
X*** 84,89 ****
X--- 89,102 ----
X          return (cmd);
X  }
X  
X+ #ifdef sun
X+ getu( pp )
X+     struct proc *pp;
X+ {
X+     up = kvm_getu( kvm, pp );
X+     return( up != NULL );
X+ }
X+ #else
X  static	int argaddr;
X  static	int pcbpf;
X  
X***************
X*** 138,143 ****
X--- 151,157 ----
X          }
X          return (1);
X  }
X+ #endif
X  
X  klseek(fd, loc, off)
X          int fd;
END_OF_fetch.c.diff
if test 763 -ne `wc -c <fetch.c.diff`; then
    echo shar: \"fetch.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f iostat.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"iostat.c.diff\"
else
echo shar: Extracting \"iostat.c.diff\" \(1208 characters\)
sed "s/^X//" >iostat.c.diff <<'END_OF_iostat.c.diff'
X*** iostat.c.orig	Mon Jun 11 15:32:59 1990
X--- iostat.c	Tue Jun 12 18:54:50 1990
X***************
X*** 45,50 ****
X--- 45,51 ----
X          { "_dk_seek" },
X  #define X_CP_TIME       5
X          { "_cp_time" },
X+ #if 0
X  #ifdef vax
X  #define X_MBDINIT       (X_CP_TIME+1)
X          { "_mbdinit" },
X***************
X*** 55,60 ****
X--- 56,62 ----
X  #define	X_VBDINIT	(X_CP_TIME+1)
X  	{ "_vbdinit" },
X  #endif
X+ #endif					/* if 0 */
X          { "" },
X  };
X  
X***************
X*** 314,325 ****
X          if (v > colwidth) {
X                  sprintf(buf, "%4.1f", val);
X                  k -= strlen(buf);
X!                 while (k--)
X                          waddch(wnd, 'X');
X                  waddstr(wnd, buf);
X                  return;
X          }
X!         while (k--)
X                  waddch(wnd, 'X');
X          wclrtoeol(wnd);
X  }
X--- 316,327 ----
X          if (v > colwidth) {
X                  sprintf(buf, "%4.1f", val);
X                  k -= strlen(buf);
X!                 while (k-- > 0)
X                          waddch(wnd, 'X');
X                  waddstr(wnd, buf);
X                  return;
X          }
X!         while (k-- > 0)
X                  waddch(wnd, 'X');
X          wclrtoeol(wnd);
X  }
END_OF_iostat.c.diff
if test 1208 -ne `wc -c <iostat.c.diff`; then
    echo shar: \"iostat.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f keyboard.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"keyboard.c.diff\"
else
echo shar: Extracting \"keyboard.c.diff\" \(292 characters\)
sed "s/^X//" >keyboard.c.diff <<'END_OF_keyboard.c.diff'
X*** keyboard.c.orig	Mon Jun 11 15:32:59 1990
X--- keyboard.c	Tue Jun 12 19:09:44 1990
X***************
X*** 15,20 ****
X--- 15,25 ----
X  #include "systat.h"
X  #include <ctype.h>
X  
X+ #ifdef sun
X+ #undef CTRL
X+ #define CTRL(c) ((c)-'a'+1)
X+ #endif
X+ 
X  keyboard()
X  {
X          char ch, line[80];
END_OF_keyboard.c.diff
if test 292 -ne `wc -c <keyboard.c.diff`; then
    echo shar: \"keyboard.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f main.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"main.c.diff\"
else
echo shar: Extracting \"main.c.diff\" \(2752 characters\)
sed "s/^X//" >main.c.diff <<'END_OF_main.c.diff'
X*** main.c.orig	Mon Jun 11 15:32:58 1990
X--- main.c	Thu Jun 14 11:41:35 1990
X***************
X*** 47,52 ****
X--- 47,55 ----
X          int argc;
X          char **argv;
X  {
X+ # ifdef sun
X+ 	long lccpu;
X+ # endif
X  
X  	argc--, argv++;
X  	while (argc > 0) {
X***************
X*** 90,95 ****
X--- 93,106 ----
X  		perror(swapf);
X  		exit(1);
X  	}
X+ # ifdef sun
X+ 	kvm = kvm_open( NULL, NULL, NULL, O_RDONLY, "systat" );
X+ 	if (kvm == NULL) {
X+ 		perror("kvm");
X+ 		exit(1);
X+ 	}
X+ # endif
X+ 
X          signal(SIGINT, die);
X          signal(SIGQUIT, die);
X          signal(SIGTERM, die);
X***************
X*** 115,121 ****
X--- 126,137 ----
X  
X          gethostname(hostname, sizeof (hostname));
X          lseek(kmem, nlst[X_CCPU].n_value, L_SET);
X+ #ifdef sun
X+         read(kmem, &lccpu, sizeof (ccpu));
X+ 	ccpu = (double) lccpu;
X+ #else
X          read(kmem, &ccpu, sizeof (ccpu));
X+ #endif
X          lccpu = log(ccpu);
X  	hz = getw(nlst[X_HZ].n_value);
X  	phz = getw(nlst[X_PHZ].n_value);
X***************
X*** 164,171 ****
X  	read(kmem, avenrun, sizeof (avenrun));
X          (*curcmd->c_fetch)();
X  	if (curcmd->c_flags & CF_LOADAV) {
X! 		j = 5.0*avenrun[0] + 0.5;
X! 		dellave -= avenrun[0];
X  		if (dellave >= 0.0)
X  			c = '<';
X  		else {
X--- 180,187 ----
X  	read(kmem, avenrun, sizeof (avenrun));
X          (*curcmd->c_fetch)();
X  	if (curcmd->c_flags & CF_LOADAV) {
X! 		j = 5.0*FSC(avenrun[0]) + 0.5;
X! 		dellave -= FSC(avenrun[0]);
X  		if (dellave >= 0.0)
X  			c = '<';
X  		else {
X***************
X*** 174,185 ****
X  		}
X  		if (dellave < 0.1)
X  			c = '|';
X! 		dellave = avenrun[0];
X  		wmove(wload, 0, 0); wclrtoeol(wload);
X  		for (i = (j > 50) ? 50 : j; i > 0; i--)
X  			waddch(wload, c);
X  		if (j > 50)
X! 			wprintw(wload, " %4.1f", avenrun[0]);
X  	}
X          (*curcmd->c_refresh)();
X  	if (curcmd->c_flags & CF_LOADAV)
X--- 190,201 ----
X  		}
X  		if (dellave < 0.1)
X  			c = '|';
X! 		dellave = FSC(avenrun[0]);
X  		wmove(wload, 0, 0); wclrtoeol(wload);
X  		for (i = (j > 50) ? 50 : j; i > 0; i--)
X  			waddch(wload, c);
X  		if (j > 50)
X! 			wprintw(wload, " %4.1f", FSC(avenrun[0]));
X  	}
X          (*curcmd->c_refresh)();
X  	if (curcmd->c_flags & CF_LOADAV)
X***************
X*** 192,203 ****
X  
X  load()
X  {
X  	double	avenrun[3];
X! 
X  	lseek(kmem, nlst[X_AVENRUN].n_value, L_SET);
X  	read(kmem, avenrun, sizeof (avenrun));
X  	mvprintw(CMDLINE, 0, "%4.1f %4.1f %4.1f",
X! 	    avenrun[0], avenrun[1], avenrun[2]);
X  	clrtoeol();
X  }
X  
X--- 208,222 ----
X  
X  load()
X  {
X+ #ifdef sun
X+ 	long	avenrun[3];
X+ #else
X  	double	avenrun[3];
X! #endif
X  	lseek(kmem, nlst[X_AVENRUN].n_value, L_SET);
X  	read(kmem, avenrun, sizeof (avenrun));
X  	mvprintw(CMDLINE, 0, "%4.1f %4.1f %4.1f",
X! 		 FSC(avenrun[0]), FSC(avenrun[1]), FSC(avenrun[2]));
X  	clrtoeol();
X  }
X  
END_OF_main.c.diff
if test 2752 -ne `wc -c <main.c.diff`; then
    echo shar: \"main.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f pigs.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"pigs.c.diff\"
else
echo shar: Extracting \"pigs.c.diff\" \(1715 characters\)
sed "s/^X//" >pigs.c.diff <<'END_OF_pigs.c.diff'
X*** pigs.c.orig	Mon Jun 11 15:32:57 1990
X--- pigs.c	Thu Jun 14 11:35:50 1990
X***************
X*** 149,160 ****
X          { "_proc" },
X  #define X_NPROC         1
X          { "_nproc" },
X! #define X_USRPTMAP      2
X          { "_Usrptmap" },
X! #define X_USRPT         3
X          { "_usrpt" },
X! #define X_CPTIME	4
X! 	{ "_cp_time" },
X          { "" }
X  };
X  
X--- 149,162 ----
X          { "_proc" },
X  #define X_NPROC         1
X          { "_nproc" },
X! #define X_CPTIME	2
X! 	{ "_cp_time" },
X! #ifndef sun
X! #define X_USRPTMAP      3
X          { "_Usrptmap" },
X! #define X_USRPT         4
X          { "_usrpt" },
X! # endif
X          { "" }
X  };
X  
X***************
X*** 174,183 ****
X--- 176,187 ----
X          }
X  	if (kprocp == NULL)
X                  kprocp = (struct proc *)calloc(nproc, sizeof (struct proc));
X+ # ifndef sun
X          if (usrpt != NULL)
X  		return(1);
X  	usrpt = (struct pte *)nlst[X_USRPT].n_value;
X  	Usrptma = (struct pte *)nlst[X_USRPTMAP].n_value;
X+ # endif
X  	if (pt == NULL)
X  		pt = (struct p_times *)calloc(nproc, sizeof (struct p_times));
X  	lseek(kmem, (long)nlst[X_CPTIME].n_value, L_SET);
X***************
X*** 215,221 ****
X                          continue;
X                  prt->pt_pid = pp->p_pid;
X                  prt->pt_pp = pp;
X!                 prt->pt_pctcpu = pp->p_pctcpu / (1.0 - exp(time * lccpu));
X                  prt->pt_uid = pp->p_uid;
X                  prt++;
X          }
X--- 219,225 ----
X                          continue;
X                  prt->pt_pid = pp->p_pid;
X                  prt->pt_pp = pp;
X!                 prt->pt_pctcpu = FSC(pp->p_pctcpu) / (1.0 - exp(time * lccpu));
X                  prt->pt_uid = pp->p_uid;
X                  prt++;
X          }
END_OF_pigs.c.diff
if test 1715 -ne `wc -c <pigs.c.diff`; then
    echo shar: \"pigs.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f swap.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"swap.c.diff\"
else
echo shar: Extracting \"swap.c.diff\" \(372 characters\)
sed "s/^X//" >swap.c.diff <<'END_OF_swap.c.diff'
X*** swap.c.orig	Mon Jun 11 15:32:57 1990
X--- swap.c	Tue Jun 12 18:37:35 1990
X***************
X*** 8,13 ****
X--- 8,14 ----
X  static char sccsid[] = "@(#)swap.c	5.4 (Berkeley) 7/20/86";
X  #endif not lint
X  
X+ #ifndef sun
X  #include "systat.h"
X  #include <sys/dir.h>
X  #include <sys/user.h>
X***************
X*** 309,311 ****
X--- 310,313 ----
X  	}
X  	return (row);
X  }
X+ #endif
END_OF_swap.c.diff
if test 372 -ne `wc -c <swap.c.diff`; then
    echo shar: \"swap.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f systat.h.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"systat.h.diff\"
else
echo shar: Extracting \"systat.h.diff\" \(939 characters\)
sed "s/^X//" >systat.h.diff <<'END_OF_systat.h.diff'
X*** systat.h.orig	Mon Jun 11 15:32:57 1990
X--- systat.h	Tue Jun 12 19:02:55 1990
X***************
X*** 13,23 ****
X--- 13,32 ----
X  
X  #include <sys/param.h>
X  #include <sys/file.h>
X+ #ifndef sun
X  #include <sys/dkstat.h>
X+ #else
X+ #include <sys/dk.h>
X+ #endif
X  
X  #include <netinet/in.h>
X  #include <arpa/inet.h>
X  
X+ #ifdef sun
X+ #include <kvm.h>
X+ kvm_t *kvm;
X+ #endif
X+ 
X  struct p_times {
X          short   pt_pid;
X          float   pt_pctcpu;
X***************
X*** 66,72 ****
X--- 75,87 ----
X  struct	text *xtext;
X  
X  double  lccpu;
X+ #ifdef sun
X+ long	avenrun[3];
X+ # define FSC(x) (((double)(x))/FSCALE)	/* floatify avenrun, pctcpu */
X+ #else
X  double	avenrun[3];
X+ # define FSC(x) (x)
X+ #endif
X  
X  char    *kmemf, *memf, *swapf;
X  int	hz, phz;
X***************
X*** 82,89 ****
X--- 97,106 ----
X  #define	TCP	0x1
X  #define	UDP	0x2
X  
X+ #ifndef sun
X  struct  pte *usrpt;
X  struct  pte *Usrptma;
X+ #endif
X  
X  WINDOW  *wnd;
X  int	CMDLINE;
END_OF_systat.h.diff
if test 939 -ne `wc -c <systat.h.diff`; then
    echo shar: \"systat.h.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f vmstat.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"vmstat.c.diff\"
else
echo shar: Extracting \"vmstat.c.diff\" \(5660 characters\)
sed "s/^X//" >vmstat.c.diff <<'END_OF_vmstat.c.diff'
X*** vmstat.c.orig	Mon Jun 11 15:32:57 1990
X--- vmstat.c	Tue Jun 12 19:21:38 1990
X***************
X*** 23,29 ****
X--- 23,31 ----
X  #include <sys/dir.h>
X  #include <sys/user.h>
X  #include <sys/proc.h>
X+ #ifndef sun
X  #include <sys/namei.h>
X+ #endif
X  
X  #include <machine/pte.h>
X  
X***************
X*** 81,96 ****
X  #define	X_TK_NOUT	11
X  	{ "_dk_seek" },
X  #define	X_DK_SEEK	12
X- 	{ "_nchstats" },
X- #define	X_NCHSTATS	13
X  	{ "_intrnames" },
X! #define	X_INTRNAMES	14
X  	{ "_eintrnames" },
X! #define	X_EINTRNAMES	15
X  	{ "_intrcnt" },
X! #define	X_INTRCNT	16
X  	{ "_eintrcnt" },
X! #define	X_EINTRCNT	17
X  	{ "" },
X  };
X  
X--- 83,100 ----
X  #define	X_TK_NOUT	11
X  	{ "_dk_seek" },
X  #define	X_DK_SEEK	12
X  	{ "_intrnames" },
X! #define	X_INTRNAMES	13
X  	{ "_eintrnames" },
X! #define	X_EINTRNAMES	14
X  	{ "_intrcnt" },
X! #define	X_INTRCNT	15
X  	{ "_eintrcnt" },
X! #define	X_EINTRCNT	16
X! #ifndef sun
X! 	{ "_nchstats" },
X! #define	X_NCHSTATS	17
X! #endif
X  	{ "" },
X  };
X  
X***************
X*** 107,113 ****
X--- 111,119 ----
X  	int	dk_busy;
X  	long	tk_nin;
X  	long	tk_nout;
X+ #ifndef sun
X  	struct	nchstats nchstats;
X+ #endif
X  	long	nchcount;
X  	long	*intrcnt;
X  } s, s1, s2, z;
X***************
X*** 116,124 ****
X  #define sum s.Sum
X  #define sumold s1.Sum
X  #define rate s.Rate
X  #define	nchtotal s.nchstats
X  #define	oldnchtotal s1.nchstats
X! #define oldrate s1.Rate
X  
X  static	char buf[26];
X  static	time_t t;
X--- 122,132 ----
X  #define sum s.Sum
X  #define sumold s1.Sum
X  #define rate s.Rate
X+ #define oldrate s1.Rate
X+ #ifndef sun
X  #define	nchtotal s.nchstats
X  #define	oldnchtotal s1.nchstats
X! #endif
X  
X  static	char buf[26];
X  static	time_t t;
X***************
X*** 275,284 ****
X  	mvprintw(PROCSROW, PROCSCOL, "Procs  r  p  d  s  w");
X  	mvprintw(GRAPHROW + 1, GRAPHCOL,
X  		"|    |    |    |    |    |    |    |    |    |    |");
X! 
X  	mvprintw(NAMEIROW, NAMEICOL, "Namei         Sys-cache     Proc-cache");
X  	mvprintw(NAMEIROW + 1, NAMEICOL,
X  		"    Calls     hits    %%     hits     %%");
X  	mvprintw(DISKROW, DISKCOL, "Discs");
X  	mvprintw(DISKROW + 1, DISKCOL, "seeks");
X  	mvprintw(DISKROW + 2, DISKCOL, "xfers");
X--- 283,293 ----
X  	mvprintw(PROCSROW, PROCSCOL, "Procs  r  p  d  s  w");
X  	mvprintw(GRAPHROW + 1, GRAPHCOL,
X  		"|    |    |    |    |    |    |    |    |    |    |");
X! #ifndef sun
X  	mvprintw(NAMEIROW, NAMEICOL, "Namei         Sys-cache     Proc-cache");
X  	mvprintw(NAMEIROW + 1, NAMEICOL,
X  		"    Calls     hits    %%     hits     %%");
X+ #endif
X  	mvprintw(DISKROW, DISKCOL, "Discs");
X  	mvprintw(DISKROW + 1, DISKCOL, "seeks");
X  	mvprintw(DISKROW + 2, DISKCOL, "xfers");
X***************
X*** 300,307 ****
X--- 309,318 ----
X  
X  #define X(fld)	{t=s.fld[i]; s.fld[i]-=s1.fld[i]; if(state==TIME) s1.fld[i]=t;}
X  #define Y(fld)	{t = s.fld; s.fld -= s1.fld; if(state == TIME) s1.fld = t;}
X+ #ifndef sun
X  #define Z(fld)	{t = s.nchstats.fld; s.nchstats.fld -= s1.nchstats.fld; \
X  	if(state == TIME) s1.nchstats.fld = t;}
X+ #endif
X  #define MAXFAIL 5
X  
X  static	char cpuchar[CPUSTATES] = { '=' , '>', '-', ' ' };
X***************
X*** 355,360 ****
X--- 366,372 ----
X  		putint(l, intrloc[i], INTSCOL, 8);
X  	}
X  	putint(inttotal, INTSROW + 1, INTSCOL, 8);
X+ #ifndef sun
X  	Z(ncs_goodhits); Z(ncs_badhits); Z(ncs_miss);
X  	Z(ncs_long); Z(ncs_pass2); Z(ncs_2passes);
X  	s.nchcount = nchtotal.ncs_goodhits + nchtotal.ncs_badhits +
X***************
X*** 361,366 ****
X--- 373,379 ----
X  	    nchtotal.ncs_miss + nchtotal.ncs_long;
X  	if (state == TIME)
X  		s1.nchcount = s.nchcount;
X+ #endif
X  
X  	psiz = 0;
X  	f2 = 0.0;
X***************
X*** 381,389 ****
X  	}
X  
X  	putint(ucount(), STATROW, STATCOL, 3);
X! 	putfloat(avenrun[0], STATROW, STATCOL + 17, 6, 2, 0);
X! 	putfloat(avenrun[1], STATROW, STATCOL + 23, 6, 2, 0);
X! 	putfloat(avenrun[2], STATROW, STATCOL + 29, 6, 2, 0);
X  	mvaddstr(STATROW, STATCOL + 53, buf);
X  	putint(total.t_arm/2, MEMROW + 2, MEMCOL + 4, 5);
X  	putint(total.t_armtxt/2, MEMROW + 2, MEMCOL + 9, 5);
X--- 394,402 ----
X  	}
X  
X  	putint(ucount(), STATROW, STATCOL, 3);
X! 	putfloat(FSC(avenrun[0]), STATROW, STATCOL + 17, 6, 2, 0);
X! 	putfloat(FSC(avenrun[1]), STATROW, STATCOL + 23, 6, 2, 0);
X! 	putfloat(FSC(avenrun[2]), STATROW, STATCOL + 29, 6, 2, 0);
X  	mvaddstr(STATROW, STATCOL + 53, buf);
X  	putint(total.t_arm/2, MEMROW + 2, MEMCOL + 4, 5);
X  	putint(total.t_armtxt/2, MEMROW + 2, MEMCOL + 9, 5);
X***************
X*** 409,416 ****
X--- 422,431 ----
X  		GENSTATROW + 3, GENSTATCOL, 7);
X  	putrate(rate.v_pdma, oldrate.v_pdma, 
X  		GENSTATROW + 4, GENSTATCOL, 7);
X+ #ifndef sun				/* ugh!! just leave out!! */
X  	putrate(rate.v_soft, oldrate.v_soft, 
X  		GENSTATROW + 5, GENSTATCOL, 7);
X+ #endif
X  	putrate(rate.v_faults, oldrate.v_faults, 
X  		GENSTATROW + 6, GENSTATCOL, 7);
X  	putrate(rate.v_scan, oldrate.v_scan, 
X***************
X*** 491,496 ****
X--- 506,512 ----
X  				"  %3.3s", dr_name[i]);
X  			dinfo(i, ++c);
X  		}
X+ #ifndef sun
X  	putint(s.nchcount, NAMEIROW + 2, NAMEICOL, 9);
X  	putint(nchtotal.ncs_goodhits, NAMEIROW + 2, NAMEICOL + 9, 9);
X  #define nz(x)	((x) ? (x) : 1)
X***************
X*** 500,505 ****
X--- 516,522 ----
X  	putfloat(nchtotal.ncs_pass2 * 100.0 / nz(s.nchcount),
X  	   NAMEIROW + 2, NAMEICOL + 34, 4, 0, 1);
X  #undef nz
X+ #endif
X  }
X  
X  cmdkre(cmd, args)
X***************
X*** 640,647 ****
X--- 657,666 ----
X  	read(kmem, s->dk_seek, dk_ndrive * sizeof (long));
X  	s->tk_nin = getw(name[X_TK_NIN].n_value);
X  	s->tk_nout = getw(name[X_TK_NOUT].n_value);
X+ #ifndef sun
X  	lseek(kmem, (long)name[X_NCHSTATS].n_value,  L_SET);
X  	read(kmem, &s->nchstats, sizeof s->nchstats);
X+ #endif
X  	lseek(kmem, (long)name[X_INTRCNT].n_value,  L_SET);
X  	read(kmem, s->intrcnt, nintr * sizeof (long));
X  }
END_OF_vmstat.c.diff
if test 5660 -ne `wc -c <vmstat.c.diff`; then
    echo shar: \"vmstat.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of shell archive.
exit 0