[comp.sys.sequent] patches to top 2.5 for Sequent {Balance,Symmetry}

nagel@paris.ics.uci.edu (Mark Nagel) (09/02/88)

After finding a copy of top 1.6 for the Sequent, I managed to incorporate
the changes into a fresh version of top 2.5 with appropriate ifdef's.
Below you will find a shell archive containing context diffs suitable
for use with patch.  These patches will add sequent support to a fresh
copy of top 2.5.  I have tested the program on both a Sequent Balance
running Dynix 2.1.1 and a Sequent Symmetry running Dynix 3.0.12.  As
far as I can tell, everything seems to OK.  Please let me know if
there are any problems with the changes, so I can fix mine.  I've
sent these patches to William LeFabvre at Rice so he can incorporate
them in future versions.  Enjoy!

Mark Nagel

--------------------------------- cut here -----------------------------------
#! /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:  sequent.patch
# Wrapped by nagel@ics.uci.edu on Thu Sep  1 15:47:39 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'sequent.patch' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'sequent.patch'\"
else
echo shar: Extracting \"'sequent.patch'\" \(21051 characters\)
sed "s/^X//" >'sequent.patch' <<'END_OF_FILE'
X*** display.c	Thu Sep  1 15:38:42 1988
X--- ../top2.5-sequent/display.c	Thu Sep  1 15:08:15 1988
X***************
X*** 29,34
X  #endif
X  #include <sys/proc.h>
X  #include <sys/dk.h>
X  #include "screen.h"		/* interface to screen package */
X  #include "layout.h"		/* defines for screen position layout */
X  #include "top.h"
X
X--- 29,41 -----
X  #endif
X  #include <sys/proc.h>
X  #include <sys/dk.h>
X+ #ifdef sequent
X+ #include <sys/vm.h>
X+ #include <machine/vmparam.h>
X+ #include <machine/pte.h>
X+ #include <machine/hwparam.h>
X+ #endif
X+ 
X  #include "screen.h"		/* interface to screen package */
X  #include "layout.h"		/* defines for screen position layout */
X  #include "top.h"
X***************
X*** 52,57
X  
X  char *state_name[] =
X  {
X      "", "sleeping", "ABANDONED", "running", "starting", "zombie", "stopped"
X  };
X  
X
X--- 59,68 -----
X  
X  char *state_name[] =
X  {
X+ #ifdef sequent
X+     "", "sleeping", "ABANDONED", "ready", "starting", "zombie", "stopped",
X+ 	"running"
X+ #else
X      "", "sleeping", "ABANDONED", "running", "starting", "zombie", "stopped"
X  #endif
X  };
X***************
X*** 53,58
X  char *state_name[] =
X  {
X      "", "sleeping", "ABANDONED", "running", "starting", "zombie", "stopped"
X  };
X  
X  /* process state names for the "STATE" column of the display */
X
X--- 64,70 -----
X  	"running"
X  #else
X      "", "sleeping", "ABANDONED", "running", "starting", "zombie", "stopped"
X+ #endif
X  };
X  
X  /* process state names for the "STATE" column of the display */
X***************
X*** 59,64
X  
X  char *state_abbrev[] =
X  {
X      "", "sleep", "WAIT", "run", "start", "zomb", "stop"
X  };
X  
X
X--- 71,79 -----
X  
X  char *state_abbrev[] =
X  {
X+ #ifdef sequent
X+     "", "sleep", "WAIT", "ready", "start", "zomb", "stop", "run"
X+ #else
X      "", "sleep", "WAIT", "run", "start", "zomb", "stop"
X  #endif
X  };
X***************
X*** 60,65
X  char *state_abbrev[] =
X  {
X      "", "sleep", "WAIT", "run", "start", "zomb", "stop"
X  };
X  
X  /* cpu state names for percentages */
X
X--- 75,81 -----
X      "", "sleep", "WAIT", "ready", "start", "zomb", "stop", "run"
X  #else
X      "", "sleep", "WAIT", "run", "start", "zomb", "stop"
X+ #endif
X  };
X  
X  /* cpu state names for percentages */
X***************
X*** 75,81
X  i_loadave(mpid, avenrun)
X  
X  int mpid;
X! #ifdef sun
X  long *avenrun;
X  #else
X  double *avenrun;
X
X--- 91,97 -----
X  i_loadave(mpid, avenrun)
X  
X  int mpid;
X! #if defined(sun) || defined(sequent)
X  long *avenrun;
X  #else
X  double *avenrun;
X***************
X*** 93,99
X      {
X  	printf("%c %5.2f",
X  	    i == 0 ? ':' : ',',
X! #ifdef sun
X  	    (double)avenrun[i] / FSCALE);
X  #else
X  	    avenrun[i]);
X
X--- 109,115 -----
X      {
X  	printf("%c %5.2f",
X  	    i == 0 ? ':' : ',',
X! #if defined(sun) || defined(sequent)
X  	    (double)avenrun[i] / FSCALE);
X  #else
X  	    avenrun[i]);
X***************
X*** 105,111
X  u_loadave(mpid, avenrun)
X  
X  int mpid;
X! #ifdef sun
X  long *avenrun;
X  #else
X  double *avenrun;
X
X--- 121,127 -----
X  u_loadave(mpid, avenrun)
X  
X  int mpid;
X! #if defined(sun) || defined(sequent)
X  long *avenrun;
X  #else
X  double *avenrun;
X***************
X*** 126,132
X      {
X  	printf("%s%5.2f",
X  	    i == 0 ? "" : ", ",
X! #ifdef sun
X  	    (double)avenrun[i] / FSCALE);
X  #else
X  	    avenrun[i]);
X
X--- 142,148 -----
X      {
X  	printf("%s%5.2f",
X  	    i == 0 ? "" : ", ",
X! #if defined(sun) || defined(sequent)
X  	    (double)avenrun[i] / FSCALE);
X  #else
X  	    avenrun[i]);
X***************
X*** 136,141
X  
X  static int ltotal = 0;
X  static int llength = 0;
X  static int lbrkdn[7];
X  
X  i_procstates(total, brkdn)
X
X--- 152,160 -----
X  
X  static int ltotal = 0;
X  static int llength = 0;
X+ #ifdef sequent
X+ static int lbrkdn[8];
X+ #else
X  static int lbrkdn[7];
X  #endif
X  
X***************
X*** 137,142
X  static int ltotal = 0;
X  static int llength = 0;
X  static int lbrkdn[7];
X  
X  i_procstates(total, brkdn)
X  
X
X--- 156,162 -----
X  static int lbrkdn[8];
X  #else
X  static int lbrkdn[7];
X+ #endif
X  
X  i_procstates(total, brkdn)
X  
X***************
X*** 162,167
X      position = fileptr(stdout);
X  
X      /* write the breakdowns */
X      for (i = 1; i < 7; i++)
X      {
X  	if (brkdn[i] != 0)
X
X--- 182,190 -----
X      position = fileptr(stdout);
X  
X      /* write the breakdowns */
X+ #ifdef sequent
X+     for (i = 1; i < 8; i++)
X+ #else
X      for (i = 1; i < 7; i++)
X  #endif
X      {
X***************
X*** 163,168
X  
X      /* write the breakdowns */
X      for (i = 1; i < 7; i++)
X      {
X  	if (brkdn[i] != 0)
X  	{
X
X--- 186,192 -----
X      for (i = 1; i < 8; i++)
X  #else
X      for (i = 1; i < 7; i++)
X+ #endif
X      {
X  	if (brkdn[i] != 0)
X  	{
X***************
X*** 230,235
X      position = fileptr(stdout);
X  
X      /* write summary line */
X      for (i = 1; i < 7; i++)
X      {
X  	if (brkdn[i] != 0)
X
X--- 254,262 -----
X      position = fileptr(stdout);
X  
X      /* write summary line */
X+ #ifdef sequent
X+     for (i = 1; i < 8; i++)
X+ #else
X      for (i = 1; i < 7; i++)
X  #endif
X      {
X***************
X*** 231,236
X  
X      /* write summary line */
X      for (i = 1; i < 7; i++)
X      {
X  	if (brkdn[i] != 0)
X  	{
X
X--- 258,264 -----
X      for (i = 1; i < 8; i++)
X  #else
X      for (i = 1; i < 7; i++)
X+ #endif
X      {
X  	if (brkdn[i] != 0)
X  	{
X***************
X*** 483,489
X      Move_to(0, y_header);
X  }
X  
X! #ifdef sun
X  #define percent_cpu(pp) ((double)(pp)->p_pctcpu / FSCALE)
X  #else
X  #define percent_cpu(pp) ((pp)->p_pctcpu)
X
X--- 511,517 -----
X      Move_to(0, y_header);
X  }
X  
X! #if defined(sun) || defined(sequent)
X  #define percent_cpu(pp) ((double)(pp)->p_pctcpu / FSCALE)
X  #else
X  #define percent_cpu(pp) ((pp)->p_pctcpu)
X***************
X*** 504,509
X  char	    *(*get_userid)();
X  
X  {
X      register long cputime;
X      register double pctcpu;
X  
X
X--- 532,540 -----
X  char	    *(*get_userid)();
X  
X  {
X+ #ifdef sequent
X+     register unsigned long cputime;
X+ #else
X      register long cputime;
X  #endif
X      register double pctcpu;
X***************
X*** 505,510
X  
X  {
X      register long cputime;
X      register double pctcpu;
X  
X      /* get the cpu usage and calculate the cpu percentages */
X
X--- 536,542 -----
X      register unsigned long cputime;
X  #else
X      register long cputime;
X+ #endif
X      register double pctcpu;
X  
X      /* get the cpu usage and calculate the cpu percentages */
X***************
X*** 521,527
X  #define Size      pp->p_tsize + pp->p_dsize + pp->p_cssize + pp->p_ussize
X  #define Resident  pp->p_rssize
X  
X! #else
X  #ifdef scs
X  	get_spt(pp->p_spti, &pspt);	/* scs also needs this */
X  #define Size      pspt.spt_usedpages
X
X--- 553,559 -----
X  #define Size      pp->p_tsize + pp->p_dsize + pp->p_cssize + pp->p_ussize
X  #define Resident  pp->p_rssize
X  
X! #else !pyr
X  #ifdef scs
X  	get_spt(pp->p_spti, &pspt);	/* scs also needs this */
X  #define Size      pspt.spt_usedpages
X***************
X*** 527,532
X  #define Size      pspt.spt_usedpages
X  #define Resident  pspt.spt_mempages
X  
X  #else (everything else)
X  #define Size      pp->p_tsize + pp->p_dsize + pp->p_ssize
X  #define Resident  pp->p_rssize
X
X--- 559,569 -----
X  #define Size      pspt.spt_usedpages
X  #define Resident  pspt.spt_mempages
X  
X+ #else !scs
X+ #ifdef sequent
X+ #define Size	  SZPT(pp)
X+ #define Resident  pp->p_rssize
X+ 
X  #else (everything else)
X  #define Size      pp->p_tsize + pp->p_dsize + pp->p_ssize
X  #define Resident  pp->p_rssize
X***************
X*** 530,535
X  #else (everything else)
X  #define Size      pp->p_tsize + pp->p_dsize + pp->p_ssize
X  #define Resident  pp->p_rssize
X  #endif !scs
X  
X  #endif !pyr
X
X--- 567,573 -----
X  #else (everything else)
X  #define Size      pp->p_tsize + pp->p_dsize + pp->p_ssize
X  #define Resident  pp->p_rssize
X+ #endif !sequent
X  #endif !scs
X  #endif !pyr
X  
X***************
X*** 531,537
X  #define Size      pp->p_tsize + pp->p_dsize + pp->p_ssize
X  #define Resident  pp->p_rssize
X  #endif !scs
X- 
X  #endif !pyr
X  
X      sprintf(thisline, Proc_format,
X
X--- 569,574 -----
X  #define Resident  pp->p_rssize
X  #endif !sequent
X  #endif !scs
X  #endif !pyr
X  
X      sprintf(thisline, Proc_format,
X***************
X*** 916,921
X  struct proc *pp;
X  
X  {
X      register int retval;
X  
X  #ifdef scs
X
X--- 953,961 -----
X  struct proc *pp;
X  
X  {
X+ #ifdef sequent
X+     register unsigned int retval;
X+ #else
X      register int retval;
X  #endif
X  
X***************
X*** 917,922
X  
X  {
X      register int retval;
X  
X  #ifdef scs
X      (void) strcpy(u.u_comm, pp->p_infoname);
X
X--- 957,963 -----
X      register unsigned int retval;
X  #else
X      register int retval;
X+ #endif
X  
X  #ifdef scs
X      (void) strcpy(u.u_comm, pp->p_infoname);
X*** kernel.c	Thu Sep  1 15:39:09 1988
X--- ../top2.5-sequent/kernel.c	Thu Sep  1 15:08:29 1988
X***************
X*** 23,28
X  # include <sys/vm.h>	/* for struct spt */
X  #endif
X  #include <sys/proc.h>
X  
X  #include "top.local.h"
X  
X
X--- 23,31 -----
X  # include <sys/vm.h>	/* for struct spt */
X  #endif
X  #include <sys/proc.h>
X+ #ifdef sequent
X+ #include <machine/vmmac.h>
X+ #endif
X  
X  #include "top.local.h"
X  
X***************
X*** 107,112
X      /*
X       *  Process is currently in memory, we hope!
X       */
X      if (!getkval((unsigned long)p->p_addr, (int *)uptes, sizeof(uptes),
X  		"!p->p_addr"))
X      {
X
X--- 110,119 -----
X      /*
X       *  Process is currently in memory, we hope!
X       */
X+ #ifdef sequent
X+     if (!getkval((unsigned long)UAREAPTES(p), (int *)uptes, sizeof(uptes),
X+ 		"!p->p_addr"))
X+ #else
X      if (!getkval((unsigned long)p->p_addr, (int *)uptes, sizeof(uptes),
X  		"!p->p_addr"))
X  #endif
X***************
X*** 109,114
X       */
X      if (!getkval((unsigned long)p->p_addr, (int *)uptes, sizeof(uptes),
X  		"!p->p_addr"))
X      {
X  	/* we can't seem to get to it, so pretend it's swapped out */
X  	return(-1);
X
X--- 116,122 -----
X  #else
X      if (!getkval((unsigned long)p->p_addr, (int *)uptes, sizeof(uptes),
X  		"!p->p_addr"))
X+ #endif
X      {
X  	/* we can't seem to get to it, so pretend it's swapped out */
X  	return(-1);
X*** top.c	Thu Sep  1 15:38:33 1988
X--- ../top2.5-sequent/top.c	Thu Sep  1 15:08:11 1988
X***************
X*** 59,64
X  #ifdef pyr		/* just for v4??? */
X  #include <sys/systm.h>
X  #endif
X  
X  /* includes specific to top */
X  #include "layout.h"
X
X--- 59,71 -----
X  #ifdef pyr		/* just for v4??? */
X  #include <sys/systm.h>
X  #endif
X+ #ifdef sequent
X+ #include <machine/vmparam.h>
X+ #include <machine/pte.h>
X+ #include <machine/hwparam.h>
X+ #include <machine/engine.h>
X+ #include <machine/plocal.h>
X+ #endif
X  
X  /* includes specific to top */
X  #include "layout.h"
X***************
X*** 107,112
X      { "_maxcpu" },			/* only for Pyramid 4.0 */
X  #define X_MAXCPU	8
X  #else
X      { "_cp_time" },			/* all except Pyramid 4.0 */
X  #define X_CP_TIME	7
X  #endif
X
X--- 114,125 -----
X      { "_maxcpu" },			/* only for Pyramid 4.0 */
X  #define X_MAXCPU	8
X  #else
X+ #ifdef sequent
X+     { "_engine" },			/* only for Sequent Balance/Symmetry */
X+ #define X_ENGINE	7
X+     { "_Nengine" },			/* only for Sequent Balance/Symmetry */
X+ #define X_CPUS		8
X+ #else
X      { "_cp_time" },			/* all except Pyramid 4.0 */
X  #define X_CP_TIME	7
X  #endif sequent
X***************
X*** 109,115
X  #else
X      { "_cp_time" },			/* all except Pyramid 4.0 */
X  #define X_CP_TIME	7
X! #endif
X  #ifdef scs
X      { "_spt" },				/* only for SCS 375 */
X  #define X_SPT		8
X
X--- 122,129 -----
X  #else
X      { "_cp_time" },			/* all except Pyramid 4.0 */
X  #define X_CP_TIME	7
X! #endif sequent
X! #endif pyr
X  #ifdef scs
X      { "_spt" },				/* only for SCS 375 */
X  #define X_SPT		8
X***************
X*** 156,161
X         struct percpu percpu[NCPU];
X            int maxcpu = 0;
X  #else
X  unsigned long cp_time_offset;
X  #endif
X  
X
X--- 170,182 -----
X         struct percpu percpu[NCPU];
X            int maxcpu = 0;
X  #else
X+ #ifdef sequent
X+ unsigned long *p1, *p2;
X+        struct plocal tmppl, *plp[MAXNUMCPU];
X+        struct engine *enginep, engin;
X+        struct vmmeter vm;
X+ 	  int engines;
X+ #else
X  unsigned long cp_time_offset;
X  #endif sequent
X  #endif pyr
X***************
X*** 157,163
X            int maxcpu = 0;
X  #else
X  unsigned long cp_time_offset;
X! #endif
X  
X  #ifdef sun
X  long ccpu;
X
X--- 178,185 -----
X  	  int engines;
X  #else
X  unsigned long cp_time_offset;
X! #endif sequent
X! #endif pyr
X  
X  #if defined(sun) || defined(sequent)
X  long ccpu;
X***************
X*** 159,165
X  unsigned long cp_time_offset;
X  #endif
X  
X! #ifdef sun
X  long ccpu;
X  long avenrun[3];
X  #else
X
X--- 181,187 -----
X  #endif sequent
X  #endif pyr
X  
X! #if defined(sun) || defined(sequent)
X  long ccpu;
X  long avenrun[3];
X  #else
X***************
X*** 243,248
X      register int change;
X      register struct nlist *nlstp;
X  
X      static struct proc **pref;
X      static char tempbuf1[50];
X      static char tempbuf2[50];
X
X--- 265,273 -----
X      register int change;
X      register struct nlist *nlstp;
X  
X+ #ifdef sequent
X+     int j, k;
X+ #endif sequent
X      static struct proc **pref;
X      static char tempbuf1[50];
X      static char tempbuf2[50];
X***************
X*** 248,253
X      static char tempbuf2[50];
X      int total_procs;
X      int old_sigmask;
X      int proc_brkdn[7];
X      int topn = Default_TOPN;
X      int delay = Default_DELAY;
X
X--- 273,281 -----
X      static char tempbuf2[50];
X      int total_procs;
X      int old_sigmask;
X+ #ifdef sequent
X+     int proc_brkdn[8];
X+ #else
X      int proc_brkdn[7];
X  #endif
X      int topn = Default_TOPN;
X***************
X*** 249,254
X      int total_procs;
X      int old_sigmask;
X      int proc_brkdn[7];
X      int topn = Default_TOPN;
X      int delay = Default_DELAY;
X      int displays = 0;		/* indicates unspecified */
X
X--- 277,283 -----
X      int proc_brkdn[8];
X  #else
X      int proc_brkdn[7];
X+ #endif
X      int topn = Default_TOPN;
X      int delay = Default_DELAY;
X      int displays = 0;		/* indicates unspecified */
X***************
X*** 456,461
X      (void) getkval(nlst[X_MAXCPU].n_value, &maxcpu,	sizeof(maxcpu),
X  	    nlst[X_MAXCPU].n_name);
X  #endif
X  #ifdef scs
X      (void) getkval(nlst[X_SPT].n_value, (int *)(&spt), sizeof(struct spt *),
X  	    nlst[X_SPT].n_name);
X
X--- 485,496 -----
X      (void) getkval(nlst[X_MAXCPU].n_value, &maxcpu,	sizeof(maxcpu),
X  	    nlst[X_MAXCPU].n_name);
X  #endif
X+ #ifdef sequent
X+     (void) getkval(nlst[X_CPUS].n_value,   &engines, sizeof(engines),
X+ 	    nlst[X_CPUS].n_name);
X+     (void) getkval(nlst[X_ENGINE].n_value, &enginep, sizeof(enginep),
X+ 	    nlst[X_ENGINE].n_name);
X+ #endif sequent
X  #ifdef scs
X      (void) getkval(nlst[X_SPT].n_value, (int *)(&spt), sizeof(struct spt *),
X  	    nlst[X_SPT].n_name);
X***************
X*** 469,474
X  #if defined(pyr) && defined(CPUFOUND)
X      percpu_offset = nlst[X_PERCPU].n_value;
X  #else
X      cp_time_offset = nlst[X_CP_TIME].n_value;
X  #endif
X  
X
X--- 504,510 -----
X  #if defined(pyr) && defined(CPUFOUND)
X      percpu_offset = nlst[X_PERCPU].n_value;
X  #else
X+ #ifndef sequent
X      cp_time_offset = nlst[X_CP_TIME].n_value;
X  #endif sequent
X  #endif pyr 
X***************
X*** 470,475
X      percpu_offset = nlst[X_PERCPU].n_value;
X  #else
X      cp_time_offset = nlst[X_CP_TIME].n_value;
X  #endif
X  
X      /* this is used in calculating WCPU -- calculate it ahead of time */
X
X--- 506,521 -----
X  #else
X  #ifndef sequent
X      cp_time_offset = nlst[X_CP_TIME].n_value;
X+ #endif sequent
X+ #endif pyr 
X+ 
X+ #ifdef sequent
X+     /* get vmmeter pointers */
X+     for (i = 0; i < engines; i++) {
X+ 	(void) getkval(enginep, &engin, sizeof(engin), "engine");
X+ 	plp[i] = (struct plocal *)engin.e_local->pp_local;
X+ 	enginep++;
X+     }
X  #endif
X  
X      /* this is used in calculating WCPU -- calculate it ahead of time */
X***************
X*** 473,479
X  #endif
X  
X      /* this is used in calculating WCPU -- calculate it ahead of time */
X! #ifdef sun
X      logcpu = log((double)ccpu / FSCALE);
X  #else
X      logcpu = log(ccpu);
X
X--- 519,525 -----
X  #endif
X  
X      /* this is used in calculating WCPU -- calculate it ahead of time */
X! #if defined(sun) || defined(sequent)
X      logcpu = log((double)ccpu / FSCALE);
X  #else
X      logcpu = log(ccpu);
X***************
X*** 589,594
X      if (setjmp(jmp_int) != 0)
X      {
X  	/* control ends up here after an interrupt */
X  	reset_display();
X      }
X  
X
X--- 635,641 -----
X      if (setjmp(jmp_int) != 0)
X      {
X  	/* control ends up here after an interrupt */
X+ 
X  	reset_display();
X      }
X  
X***************
X*** 619,624
X  	    }
X  	}
X  #else
X  	(void) getkval(cp_time_offset, (int *)cp_time, sizeof(cp_time),
X  		     "_cp_time");
X  #endif
X
X--- 666,686 -----
X  	    }
X  	}
X  #else
X+ #ifdef sequent
X+ 	/* sum up engines data structure */
X+ #define NVM	(sizeof(struct vmmeter)/sizeof(int))
X+ 	p1 = (unsigned long *)&vm;
X+ 	for (j = 0; j < NVM; j++)
X+ 	    *p1++ = 0;
X+ 	for (j = 0; j < engines; j++) {
X+ 	    (void) getkval(plp[j], &tmppl, sizeof(struct plocal), "plocal");
X+ 	    p1 = (unsigned long *)&vm;
X+ 	    p2 = (unsigned long *)&tmppl.cnt;
X+ 	    for (k = 0; k < NVM; k++, p1++)
X+ 		*p1 += *p2++;
X+ 	}
X+ 	bcopy(vm.v_time, cp_time, sizeof(cp_time));
X+ #else
X  	(void) getkval(cp_time_offset, (int *)cp_time, sizeof(cp_time),
X  		     "_cp_time");
X  #endif sequent
X***************
X*** 621,627
X  #else
X  	(void) getkval(cp_time_offset, (int *)cp_time, sizeof(cp_time),
X  		     "_cp_time");
X! #endif
X  
X  	/* get load average array */
X  	(void) getkval(avenrun_offset, (int *)avenrun, sizeof(avenrun),
X
X--- 683,690 -----
X  #else
X  	(void) getkval(cp_time_offset, (int *)cp_time, sizeof(cp_time),
X  		     "_cp_time");
X! #endif sequent
X! #endif pyr
X  
X  	/* get load average array */
X  	(void) getkval(avenrun_offset, (int *)avenrun, sizeof(avenrun),
X***************
X*** 663,668
X  	/* display the load averages */
X  	(*d_loadave)(mpid, avenrun);
X  
X  	/*
X  	 *  Display the current time.
X  	 *  "ctime" always returns a string that looks like this:
X
X--- 726,744 -----
X  	/* display the load averages */
X  	(*d_loadave)(mpid, avenrun);
X  
X+ #ifdef sequent
X+ 	/* display number of CPU's */
X+ 	if (smart_terminal)
X+ 	{
X+ 	    Move_to(x_numcpus, y_numcpus);
X+ 	}
X+ 	else
X+ 	{
X+ 	    fputs("    ", stdout);
X+ 	}
X+ 	printf("CPU's: %2d", engines);
X+ #endif
X+ 
X  	/*
X  	 *  Display the current time.
X  	 *  "ctime" always returns a string that looks like this:
X***************
X*** 868,874
X      
X  			    case CMD_update:	/* merely update display */
X  				/* is the load average high? */
X! #ifdef sun
X  				if (avenrun[0] > (int)(LoadMax * FSCALE))
X  #else
X  				if (avenrun[0] > LoadMax)
X
X--- 944,950 -----
X      
X  			    case CMD_update:	/* merely update display */
X  				/* is the load average high? */
X! #if defined(sun) || defined(sequent)
X  				if (avenrun[0] > (int)(LoadMax * FSCALE))
X  #else
X  				if (avenrun[0] > LoadMax)
X***************
X*** 1136,1142
X      register struct proc *p1;
X      register struct proc *p2;
X      register int result;
X! #ifndef sun
X      register double dresult;
X  #endif
X  
X
X--- 1212,1218 -----
X      register struct proc *p1;
X      register struct proc *p2;
X      register int result;
X! #if !defined(sun) && !defined(sequent)
X      register double dresult;
X  #endif
X  
X***************
X*** 1145,1151
X      p2 = *pp2;
X  
X      /* compare percent cpu (pctcpu) */
X! #ifdef sun
X      if ((result = p2->p_pctcpu - p1->p_pctcpu) == 0)
X  #else
X      if ((dresult = p2->p_pctcpu - p1->p_pctcpu) == 0)
X
X--- 1221,1227 -----
X      p2 = *pp2;
X  
X      /* compare percent cpu (pctcpu) */
X! #if defined(sun) || defined(sequent)
X      if ((result = p2->p_pctcpu - p1->p_pctcpu) == 0)
X  #else
X      if ((dresult = p2->p_pctcpu - p1->p_pctcpu) == 0)
X***************
X*** 1177,1182
X  			result = (p2->p_tdsize + p2->p_ssize) -
X  				 (p1->p_tdsize + p1->p_ssize);
X  #else !scs
X  			result = (p2->p_tsize + p2->p_dsize + p2->p_ssize) -
X  				 (p1->p_tsize + p1->p_dsize + p1->p_ssize);
X  #endif scs
X
X--- 1253,1261 -----
X  			result = (p2->p_tdsize + p2->p_ssize) -
X  				 (p1->p_tdsize + p1->p_ssize);
X  #else !scs
X+ #ifdef sequent
X+ 			result = SZPT(p2) - SZPT(p1);
X+ #else !sequent
X  			result = (p2->p_tsize + p2->p_dsize + p2->p_ssize) -
X  				 (p1->p_tsize + p1->p_dsize + p1->p_ssize);
X  #endif sequent
X***************
X*** 1179,1184
X  #else !scs
X  			result = (p2->p_tsize + p2->p_dsize + p2->p_ssize) -
X  				 (p1->p_tsize + p1->p_dsize + p1->p_ssize);
X  #endif scs
X  #endif pyr
X  		    }
X
X--- 1258,1264 -----
X  #else !sequent
X  			result = (p2->p_tsize + p2->p_dsize + p2->p_ssize) -
X  				 (p1->p_tsize + p1->p_dsize + p1->p_ssize);
X+ #endif sequent
X  #endif scs
X  #endif pyr
X  		    }
X***************
X*** 1186,1192
X  	    }
X  	}
X      }
X! #ifndef sun
X      else
X      {
X  	result = dresult < 0.0 ? -1 : 1;
X
X--- 1266,1272 -----
X  	    }
X  	}
X      }
X! #if !defined(sun) && !defined(sequent)
X      else
X      {
X  	result = dresult < 0.0 ? -1 : 1;
X*** layout.h	Thu Sep  1 15:39:10 1988
X--- ../top2.5-sequent/layout.h	Thu Sep  1 15:08:29 1988
X***************
X*** 10,15
X  #define  y_lastpid	0
X  #define  x_loadave	33
X  #define  y_loadave	0
X  #define  x_procstate	0
X  #define  y_procstate	1
X  #define  x_brkdn	15
X
X--- 10,19 -----
X  #define  y_lastpid	0
X  #define  x_loadave	33
X  #define  y_loadave	0
X+ #ifdef sequent
X+ #define  x_numcpus	55
X+ #define  y_numcpus	0
X+ #endif
X  #define  x_procstate	0
X  #define  y_procstate	1
X  #define  x_brkdn	15
END_OF_FILE
if test 21051 -ne `wc -c <'sequent.patch'`; then
    echo shar: \"'sequent.patch'\" unpacked with wrong size!
fi
# end of 'sequent.patch'
fi
echo shar: End of shell archive.
exit 0
-- 
Mark Nagel
Department of Information and Computer Science, UC Irvine
nagel@ics.uci.edu             (ARPA)             When they ship styrofoam...
{sdcsvax|ucbvax}!ucivax!nagel (UUCP)             ...what do they pack it in?