korner@ut-sally.UUCP (Kim Korner) (03/08/85)
In porting mon to our Sun machines two modules were changed
(readnames.c and vm.c). Of general interest is the rewrite of readnames.c
which reads the names of disks from /etc/mtab instead of wandering through
kernel space. A listing for the rewritten readnames.c and a diff -c listing
of vm.c follows ...
/*
* R E A D N A M E S
*
* purpose: Reads the names of the disks from /etc/mtab
*
*/
#include "mon.h"
#include <fstab.h>
#include <mtab.h>
read_names()
{
int mtab_fd, i, j;
struct mtab buf;
mtab_fd = open("/etc/mtab", 0);
if(mtab_fd < 0) {
printf("cannot open /etc/mtab\n");
exit(1);
}
for (i = 0; i < DK_NDRIVE /* for each device in mtab */
&& (j = read (mtab_fd,
&buf, sizeof (struct mtab))) > 0; ) {
/* don't consider the network dsk */
if (! strcmp (buf.m_dname, "ndp0")) continue;
for (j=0; j < i; j++) /* weed out duplicate devices */
if (! strncmp (dr_name[j], buf.m_dname, 3)) break;
if (i != j) continue; /* if duplicate */
strncpy (dr_name[i], buf.m_dname, 3); /* copy the unique */
dr_unit[i++] = buf.m_dname[2] - '0'; /* guess the dev # */
}
}
*** vm.c Thu Mar 7 08:37:14 1985
--- vm.new Thu Feb 14 14:08:56 1985
***************
*** 13,24
#include "mon.h"
#include <machine/param.h> /* defines bytes/page */
- /* Temporary defines */
- #define PROCS 2
- #define CPUY 5
- #define TIMEY 8
- #define PAGE 11
-
vm()
{
register i,j;
--- 13,18 -----
#include "mon.h"
#include <machine/param.h> /* defines bytes/page */
vm()
{
register i,j;
***************
*** 27,32
lseek(kmem, (long)namelist[X_CP_TIME].n_value, 0);
read(kmem, s.cp_time, sizeof s.cp_time);
/* Check for 2nd CPU stats */
if (dualcpu) {
lseek(kmem, (long)namelist[X_CP_TIME2].n_value, 0);
read(kmem, s.cp_time2, sizeof s.cp_time2);
--- 21,27 -----
lseek(kmem, (long)namelist[X_CP_TIME].n_value, 0);
read(kmem, s.cp_time, sizeof s.cp_time);
/* Check for 2nd CPU stats */
+ #ifdef DUALCPU
if (dualcpu) {
lseek(kmem, (long)namelist[X_CP_TIME2].n_value, 0);
read(kmem, s.cp_time2, sizeof s.cp_time2);
***************
*** 31,36
lseek(kmem, (long)namelist[X_CP_TIME2].n_value, 0);
read(kmem, s.cp_time2, sizeof s.cp_time2);
}
lseek(kmem, (long)namelist[X_DK_XFER].n_value, 0);
read(kmem, s.dk_xfer, sizeof s.dk_xfer);
lseek(kmem, (long)namelist[X_RATE].n_value, 0);
--- 26,32 -----
lseek(kmem, (long)namelist[X_CP_TIME2].n_value, 0);
read(kmem, s.cp_time2, sizeof s.cp_time2);
}
+ #endif DUALCPU
lseek(kmem, (long)namelist[X_DK_XFER].n_value, 0);
read(kmem, s.dk_xfer, sizeof s.dk_xfer);
lseek(kmem, (long)namelist[X_RATE].n_value, 0);
***************
*** 44,49
t = s.cp_time[i];
s.cp_time[i] -= s1.cp_time[i];
s1.cp_time[i] = t;
if (dualcpu) {
t = s.cp_time2[i];
s.cp_time2[i] -= s1.cp_time2[i];
--- 40,46 -----
t = s.cp_time[i];
s.cp_time[i] -= s1.cp_time[i];
s1.cp_time[i] = t;
+ #ifdef DUALCPU
if (dualcpu) {
t = s.cp_time2[i];
s.cp_time2[i] -= s1.cp_time2[i];
***************
*** 49,54
s.cp_time2[i] -= s1.cp_time2[i];
s1.cp_time2[i] = t;
}
etime += s.cp_time[i]; /* interval must count 1 CPU only */
}
if(etime == 0.)
--- 46,52 -----
s.cp_time2[i] -= s1.cp_time2[i];
s1.cp_time2[i] = t;
}
+ #endif DUALCPU
etime += s.cp_time[i]; /* interval must count 1 CPU only */
}
if(etime == 0.)
***************
*** 56,62
etime /= (float) hz;
/* Display the procs line */
! mvprintw(PROCS+1,6,"%2d%2d%2d%2d %2d", total.t_rq, total.t_dw, total.t_pw, total.t_sw, total.t_sl);
#define pgtok(a) ((a)*NBPG/1024)
mvprintw(PROCS+1,23,"%5d %5d", pgtok(total.t_rm), pgtok(total.t_arm) );
mvprintw(PROCS+1,34,"%6d %5d", pgtok(total.t_vm), pgtok(total.t_avm) );
--- 54,60 -----
etime /= (float) hz;
/* Display the procs line */
! mvprintw(PROCY+1,6,"%2d%2d%2d%2d %2d", total.t_rq, total.t_dw, total.t_pw, total.t_sw, total.t_sl);
#define pgtok(a) ((a)*NBPG/1024)
mvprintw(PROCY+1,23,"%5d %5d", pgtok(total.t_rm), pgtok(total.t_arm) );
mvprintw(PROCY+1,34,"%6d %5d", pgtok(total.t_vm), pgtok(total.t_avm) );
***************
*** 58,66
/* Display the procs line */
mvprintw(PROCS+1,6,"%2d%2d%2d%2d %2d", total.t_rq, total.t_dw, total.t_pw, total.t_sw, total.t_sl);
#define pgtok(a) ((a)*NBPG/1024)
! mvprintw(PROCS+1,23,"%5d %5d", pgtok(total.t_rm), pgtok(total.t_arm) );
! mvprintw(PROCS+1,34,"%6d %5d", pgtok(total.t_vm), pgtok(total.t_avm) );
! mvprintw(PROCS+1,47,"%5d", pgtok(total.t_free));
/* Display paging info */
mvprintw(PAGE+1,6,"%4d %3d",
--- 56,64 -----
/* Display the procs line */
mvprintw(PROCY+1,6,"%2d%2d%2d%2d %2d", total.t_rq, total.t_dw, total.t_pw, total.t_sw, total.t_sl);
#define pgtok(a) ((a)*NBPG/1024)
! mvprintw(PROCY+1,23,"%5d %5d", pgtok(total.t_rm), pgtok(total.t_arm) );
! mvprintw(PROCY+1,34,"%6d %5d", pgtok(total.t_vm), pgtok(total.t_avm) );
! mvprintw(PROCY+1,47,"%5d", pgtok(total.t_free));
/* Display paging info */
mvprintw(PAGEY+1,6,"%4d %3d",
***************
*** 63,69
mvprintw(PROCS+1,47,"%5d", pgtok(total.t_free));
/* Display paging info */
! mvprintw(PAGE+1,6,"%4d %3d",
(rate.v_pgrec - (rate.v_xsfrec+rate.v_xifrec)),
(rate.v_xsfrec+rate.v_xifrec));
mvprintw(PAGE+1,14,"%4d %4d", pgtok(rate.v_pgpgin),
--- 61,67 -----
mvprintw(PROCY+1,47,"%5d", pgtok(total.t_free));
/* Display paging info */
! mvprintw(PAGEY+1,6,"%4d %3d",
(rate.v_pgrec - (rate.v_xsfrec+rate.v_xifrec)),
(rate.v_xsfrec+rate.v_xifrec));
mvprintw(PAGEY+1,14,"%4d %4d", pgtok(rate.v_pgpgin),
***************
*** 66,72
mvprintw(PAGE+1,6,"%4d %3d",
(rate.v_pgrec - (rate.v_xsfrec+rate.v_xifrec)),
(rate.v_xsfrec+rate.v_xifrec));
! mvprintw(PAGE+1,14,"%4d %4d", pgtok(rate.v_pgpgin),
pgtok(rate.v_pgpgout));
/* operations per time is (pgin + pgout) */
mvprintw(PAGE+1,24,"%4d", (pgtok(rate.v_pgin)+
--- 64,70 -----
mvprintw(PAGEY+1,6,"%4d %3d",
(rate.v_pgrec - (rate.v_xsfrec+rate.v_xifrec)),
(rate.v_xsfrec+rate.v_xifrec));
! mvprintw(PAGEY+1,14,"%4d %4d", pgtok(rate.v_pgpgin),
pgtok(rate.v_pgpgout));
/* operations per time is (pgin + pgout) */
mvprintw(PAGEY+1,25,"%4d", (pgtok(rate.v_pgin)+
***************
*** 69,75
mvprintw(PAGE+1,14,"%4d %4d", pgtok(rate.v_pgpgin),
pgtok(rate.v_pgpgout));
/* operations per time is (pgin + pgout) */
! mvprintw(PAGE+1,24,"%4d", (pgtok(rate.v_pgin)+
pgtok(rate.v_pgout)));
mvprintw(PAGE+1,29,"%4d %4d %4d", pgtok(rate.v_dfree)
, pgtok(deficit), rate.v_scan);
--- 67,73 -----
mvprintw(PAGEY+1,14,"%4d %4d", pgtok(rate.v_pgpgin),
pgtok(rate.v_pgpgout));
/* operations per time is (pgin + pgout) */
! mvprintw(PAGEY+1,25,"%4d", (pgtok(rate.v_pgin)+
pgtok(rate.v_pgout)));
mvprintw(PAGEY+1,29,"%4d %4d %4d", pgtok(rate.v_dfree)
, pgtok(deficit), rate.v_scan);
***************
*** 71,77
/* operations per time is (pgin + pgout) */
mvprintw(PAGE+1,24,"%4d", (pgtok(rate.v_pgin)+
pgtok(rate.v_pgout)));
! mvprintw(PAGE+1,29,"%4d %4d %4d", pgtok(rate.v_dfree)
, pgtok(deficit), rate.v_scan);
/* Display CPU info */
--- 69,75 -----
/* operations per time is (pgin + pgout) */
mvprintw(PAGEY+1,25,"%4d", (pgtok(rate.v_pgin)+
pgtok(rate.v_pgout)));
! mvprintw(PAGEY+1,29,"%4d %4d %4d", pgtok(rate.v_dfree)
, pgtok(deficit), rate.v_scan);
/* Display CPU info */
***************
*** 75,81
, pgtok(deficit), rate.v_scan);
/* Display CPU info */
! mvprintw(CPUY+1,4,"%4d %4d", (rate.v_intr) - hz, rate.v_syscall);
mvprintw(CPUY+1,17,"%4d", rate.v_swtch);
if (dualcpu)
mvprintw(CPUY+1,30,"%4d", rate.v_swtch2);
--- 73,83 -----
, pgtok(deficit), rate.v_scan);
/* Display CPU info */
! #ifndef sun
! mvprintw(CPUY+1,5,"%4d %4d", (rate.v_intr) - hz, rate.v_syscall);
! #else
! mvprintw(CPUY+1,5,"%4d %4d", rate.v_intr, rate.v_syscall);
! #endif
mvprintw(CPUY+1,17,"%4d", rate.v_swtch);
#ifdef DUALCPU
if (dualcpu)
***************
*** 77,82
/* Display CPU info */
mvprintw(CPUY+1,4,"%4d %4d", (rate.v_intr) - hz, rate.v_syscall);
mvprintw(CPUY+1,17,"%4d", rate.v_swtch);
if (dualcpu)
mvprintw(CPUY+1,30,"%4d", rate.v_swtch2);
cputime();
--- 79,85 -----
mvprintw(CPUY+1,5,"%4d %4d", rate.v_intr, rate.v_syscall);
#endif
mvprintw(CPUY+1,17,"%4d", rate.v_swtch);
+ #ifdef DUALCPU
if (dualcpu)
mvprintw(CPUY+1,30,"%4d", rate.v_swtch2);
#endif DUALCPU
***************
*** 79,84
mvprintw(CPUY+1,17,"%4d", rate.v_swtch);
if (dualcpu)
mvprintw(CPUY+1,30,"%4d", rate.v_swtch2);
cputime();
/* Display additional stuff */
--- 82,88 -----
#ifdef DUALCPU
if (dualcpu)
mvprintw(CPUY+1,30,"%4d", rate.v_swtch2);
+ #endif DUALCPU
cputime();
/* Display additional stuff */
***************
*** 82,88
cputime();
/* Display additional stuff */
! mvprintw(PAGE+4,6,"%4d%4d %4d%4d %4d%4d %4d %4d%4d",
rate.v_nexfod, rate.v_exfod,
rate.v_nzfod, rate.v_zfod,
rate.v_nvrfod, rate.v_vrfod,
--- 86,92 -----
cputime();
/* Display additional stuff */
! mvprintw(PAGEY+4,6,"%4d%4d %4d%4d %4d%4d %4d %4d%4d",
rate.v_nexfod, rate.v_exfod,
rate.v_nzfod, rate.v_zfod,
rate.v_nvrfod, rate.v_vrfod,
***************
*** 109,115
t = 1.;
if (t2 == 0.)
t2 = 1.;
! x = 6;
for(i=0; i<CPUSTATES; i++){
mvprintw(TIMEY+1,x,"%3.0f", 100 * s.cp_time[i]/t);
if (dualcpu)
--- 113,119 -----
t = 1.;
if (t2 == 0.)
t2 = 1.;
! x = 7;
for(i=0; i<CPUSTATES; i++){
mvprintw(TIMEY+1,x,"%3.0f", 100 * s.cp_time[i]/t);
#ifdef DUALCPU
***************
*** 112,117
x = 6;
for(i=0; i<CPUSTATES; i++){
mvprintw(TIMEY+1,x,"%3.0f", 100 * s.cp_time[i]/t);
if (dualcpu)
mvprintw(TIMEY+1,x+27,"%3.0f", 100 * s.cp_time2[i]/t2);
x += 5;
--- 116,122 -----
x = 7;
for(i=0; i<CPUSTATES; i++){
mvprintw(TIMEY+1,x,"%3.0f", 100 * s.cp_time[i]/t);
+ #ifdef DUALCPU
if (dualcpu)
mvprintw(TIMEY+1,x+27,"%3.0f", 100 * s.cp_time2[i]/t2);
#endif DUALCPU
***************
*** 114,119
mvprintw(TIMEY+1,x,"%3.0f", 100 * s.cp_time[i]/t);
if (dualcpu)
mvprintw(TIMEY+1,x+27,"%3.0f", 100 * s.cp_time2[i]/t2);
x += 5;
}
}
--- 119,125 -----
#ifdef DUALCPU
if (dualcpu)
mvprintw(TIMEY+1,x+27,"%3.0f", 100 * s.cp_time2[i]/t2);
+ #endif DUALCPU
x += 5;
}
}