cvsdist 1d1e2d7
--- netkit-rusers-0.15/rpc.rstatd/rstat_proc.c.jbj	Wed Feb 10 17:01:01 1999
cvsdist 1d1e2d7
+++ netkit-rusers-0.15/rpc.rstatd/rstat_proc.c	Fri Aug 27 13:00:06 1999
cvsdist 1d1e2d7
@@ -62,10 +62,10 @@
cvsdist 1d1e2d7
 #define	CP_USER		0
cvsdist 1d1e2d7
 #define	CP_NICE		1
cvsdist 1d1e2d7
 #define	CP_SYS		2
cvsdist 1d1e2d7
-#define	CP_INTR		3
cvsdist 1d1e2d7
-#define	CP_IDLE		4
cvsdist 1d1e2d7
+#define	CP_IDLE		3
cvsdist 1d1e2d7
+#define	CP_INTR		4
cvsdist 1d1e2d7
 #define	CPUSTATES	5
cvsdist 1d1e2d7
-static int cp_xlat[4] = { CP_USER, CP_NICE, CP_SYS, CP_IDLE };
cvsdist 1d1e2d7
+static int cp_xlat[CPUSTATES] = { CP_USER, CP_NICE, CP_SYS, CP_IDLE };
cvsdist 1d1e2d7
 
cvsdist 1d1e2d7
 /*
cvsdist 1d1e2d7
  * System wide statistics counters.
cvsdist 1d1e2d7
@@ -317,10 +317,13 @@
cvsdist 1d1e2d7
 stat_init(void)
cvsdist 1d1e2d7
 {
cvsdist 1d1e2d7
 	stat_is_init = 1;
cvsdist 1d1e2d7
-	setup();
cvsdist 1d1e2d7
+
cvsdist 1d1e2d7
+	/* Prime the pump */
cvsdist 1d1e2d7
 	updatestat(0);
cvsdist 1d1e2d7
+
cvsdist 1d1e2d7
 	(void) signal(SIGALRM, updatestat);
cvsdist 1d1e2d7
 	alarm(1);
cvsdist 1d1e2d7
+	pause();
cvsdist 1d1e2d7
 }
cvsdist 1d1e2d7
 
cvsdist 1d1e2d7
 statstime *
cvsdist 1d1e2d7
@@ -361,8 +364,8 @@
cvsdist 1d1e2d7
 	(void)&arg; (void)&rqstp;
cvsdist 1d1e2d7
 	if (!stat_is_init)
cvsdist 1d1e2d7
 		stat_init();
cvsdist 1d1e2d7
-	sincelastreq = 0;
cvsdist 1d1e2d7
 	have = havedisk();
cvsdist 1d1e2d7
+	sincelastreq = 0;
cvsdist 1d1e2d7
 	return (&have);
cvsdist 1d1e2d7
 }
cvsdist 1d1e2d7
 
cvsdist 1d1e2d7
@@ -391,7 +394,7 @@
cvsdist 1d1e2d7
 };
cvsdist 1d1e2d7
 
cvsdist 1d1e2d7
 static void
cvsdist 1d1e2d7
-getstat(unsigned *cuse, unsigned *cice, unsigned *csys, unsigned long *cide,
cvsdist 1d1e2d7
+getstat(unsigned long *cuse, unsigned long *cice, unsigned long *csys, unsigned long *cide,
cvsdist 1d1e2d7
 	     unsigned *pin, unsigned *pout, unsigned *sin, unsigned *sout,
cvsdist 1d1e2d7
 	     unsigned *itot, unsigned *i1, unsigned *ct, struct _ldisk *d)
cvsdist 1d1e2d7
 {
cvsdist 1d1e2d7
@@ -407,7 +410,7 @@
cvsdist 1d1e2d7
     *itot = 0; 
cvsdist 1d1e2d7
     *i1 = 1;   /* ensure assert below will fail if the sscanf bombs */
cvsdist 1d1e2d7
     b = strstr(buff, "cpu ");
cvsdist 1d1e2d7
-    sscanf(b, "cpu  %u %u %u %lu", cuse, cice, csys, cide);
cvsdist 1d1e2d7
+    sscanf(b, "cpu  %lu %lu %lu %lu", cuse, cice, csys, cide);
cvsdist 1d1e2d7
     b = strstr(buff, "disk ");
cvsdist 1d1e2d7
     sscanf(b, "disk %u %u %u %u", d->xfer+0, d->xfer+1, d->xfer+2, d->xfer+3);
cvsdist 1d1e2d7
     b = strstr(buff, "disk_rio ");
cvsdist 1d1e2d7
@@ -537,12 +540,17 @@
cvsdist 1d1e2d7
 static int hz;
cvsdist 1d1e2d7
 static struct timeval tm, btm;
cvsdist 1d1e2d7
 static double avrun[3];
cvsdist 1d1e2d7
-static unsigned int cpu_use[2], cpu_nic[2], cpu_sys[2];
cvsdist 1d1e2d7
+static unsigned long cpu_use[2], cpu_nic[2], cpu_sys[2];
cvsdist 1d1e2d7
 static unsigned long cpu_idl[2];
cvsdist 1d1e2d7
 static struct _ldisk disk[2];
cvsdist 1d1e2d7
 static unsigned int pgpgin[2], pgpgout[2], pswpin[2], pswpout[2];
cvsdist 1d1e2d7
 static unsigned int inter[2], ticks[2], ctxt[2];
cvsdist 1d1e2d7
+
cvsdist 1d1e2d7
+#ifdef NOTYET	/* XXX noop to match solaris behavior */
cvsdist 1d1e2d7
 #define	_DELTA(_x, _i)	( (_x)[(_i)] - (_x)[!(_i)] )
cvsdist 1d1e2d7
+#else
cvsdist 1d1e2d7
+#define	_DELTA(_x, _i)	( (_x)[(_i)] )
cvsdist 1d1e2d7
+#endif
cvsdist 1d1e2d7
 
cvsdist 1d1e2d7
 extern int uptime(double *, double *);
cvsdist 1d1e2d7
 extern void loadavg(double *, double *, double *);
cvsdist 1d1e2d7
@@ -568,7 +576,6 @@
cvsdist 1d1e2d7
 	getstat(cpu_use+tog,cpu_nic+tog,cpu_sys+tog,cpu_idl+tog,
cvsdist 1d1e2d7
 		pgpgin+tog,pgpgout+tog,pswpin+tog,pswpout+tog,
cvsdist 1d1e2d7
 		inter+tog,ticks+tog,ctxt+tog, disk+tog);
cvsdist 1d1e2d7
-	tog = !tog;
cvsdist 1d1e2d7
 
cvsdist 1d1e2d7
 	dk_ndrive = 0;
cvsdist 1d1e2d7
 	for (i = 0; i < 4; i++) {
cvsdist 1d1e2d7
@@ -578,11 +585,11 @@
cvsdist 1d1e2d7
 		dk_ndrive++;
cvsdist 1d1e2d7
 	}
cvsdist 1d1e2d7
 
cvsdist 1d1e2d7
-	cur.cp_time[CP_USER] = _DELTA(cpu_use, tog);
cvsdist 1d1e2d7
-	cur.cp_time[CP_NICE] = _DELTA(cpu_nic, tog);
cvsdist 1d1e2d7
-	cur.cp_time[CP_SYS]  = _DELTA(cpu_sys, tog);
cvsdist 1d1e2d7
+	cur.cp_time[CP_USER] = (_DELTA(cpu_use, tog)) % UINT_MAX;
cvsdist 1d1e2d7
+	cur.cp_time[CP_NICE] = (_DELTA(cpu_nic, tog)) % UINT_MAX;
cvsdist 1d1e2d7
+	cur.cp_time[CP_SYS]  = (_DELTA(cpu_sys, tog)) % UINT_MAX;
cvsdist 1d1e2d7
 	cur.cp_time[CP_INTR] = 0;
cvsdist 1d1e2d7
-	cur.cp_time[CP_SYS] = (_DELTA(cpu_idl, tog)) % UINT_MAX;
cvsdist 1d1e2d7
+	cur.cp_time[CP_IDLE] = (_DELTA(cpu_idl, tog)) % UINT_MAX;
cvsdist 1d1e2d7
 
cvsdist 1d1e2d7
 	cnt.v_pgpgin = pgpgin[tog];
cvsdist 1d1e2d7
 	cnt.v_pgpgout = pgpgout[tog];
cvsdist 1d1e2d7
@@ -590,6 +597,7 @@
cvsdist 1d1e2d7
 	cnt.v_pswpout = pswpout[tog];
cvsdist 1d1e2d7
 	cnt.v_intr = inter[tog];
cvsdist 1d1e2d7
 	cnt.v_swtch = ctxt[tog];
cvsdist 1d1e2d7
+	tog = !tog;
cvsdist 1d1e2d7
 }
cvsdist 1d1e2d7
 
cvsdist 1d1e2d7
 static void
cvsdist 1d1e2d7
@@ -597,11 +605,10 @@
cvsdist 1d1e2d7
 {
cvsdist 1d1e2d7
 	int i, save_errno = errno;
cvsdist 1d1e2d7
 
cvsdist 1d1e2d7
-	(void)&sign;;
cvsdist 1d1e2d7
 #ifdef DEBUG
cvsdist 1d1e2d7
 	syslog(LOG_DEBUG, "entering updatestat");
cvsdist 1d1e2d7
 #endif
cvsdist 1d1e2d7
-	if (sincelastreq >= closedown) {
cvsdist 1d1e2d7
+	if (signo != 0 && sincelastreq >= closedown) {
cvsdist 1d1e2d7
 #ifdef DEBUG
cvsdist 1d1e2d7
 		syslog(LOG_DEBUG, "about to closedown");
cvsdist 1d1e2d7
 #endif
cvsdist 1d1e2d7
@@ -678,15 +685,6 @@
cvsdist 1d1e2d7
 	alarm(1);
cvsdist 1d1e2d7
 	errno = save_errno;
cvsdist 1d1e2d7
 }
cvsdist 1d1e2d7
-
cvsdist 1d1e2d7
-static void
cvsdist 1d1e2d7
-setup(void)
cvsdist 1d1e2d7
-{
cvsdist 1d1e2d7
-	/* Prime the pump */
cvsdist 1d1e2d7
-	convert_stats();
cvsdist 1d1e2d7
-	sleep(1);
cvsdist 1d1e2d7
-}
cvsdist 1d1e2d7
-
cvsdist 1d1e2d7
 
cvsdist 1d1e2d7
 /*
cvsdist 1d1e2d7
  * returns true if have a disk