Unofficial patches to sps for DEC/MIPS + Ultrix 4.x
Michel Fingerhut
mf at ircam.fr
Mon Nov 26 10:01:24 AEST 1990
Here are the patches. Thanks to Alan Rollow from Dec for his tip.
------------------------------------------------------------------------------------
diff -c /old/sps/Makefile.dec3100 sps/Makefile.dec3100
*** /old/sps/Makefile.dec3100 Sun Nov 25 23:52:57 1990
--- sps/Makefile.dec3100 Sun Nov 25 23:42:34 1990
***************
*** 9,17 ****
selectproc.o selecttty.o termwidth.o ttystatus.o waitingfor.o
INCS = sps.h
CC = cc
! CFLAGS = -DBSD42 -DULTRIX20 -DULTRIX30 -DVPRINTF -DDEC3100 -I/sys
LIBS = -ltermlib
! DIRINSTALL = /bin
all: $(PROG)
.c.o:
--- 9,18 ----
selectproc.o selecttty.o termwidth.o ttystatus.o waitingfor.o
INCS = sps.h
CC = cc
! CFLAGS = -DBSD42 -DULTRIX20 -DULTRIX30 -DULTRIX40 -DVPRINTF -DDEC3100 -I/sys
LIBS = -ltermlib
! DIRINSTALL = /usr/local/bin
! DIRMAN = /usr/local/man/man1
all: $(PROG)
.c.o:
***************
*** 26,36 ****
$(CC) -o $@ $(OBJS) $(LIBS)
install: $(PROG)
! strip $(PROG)
! mv $(PROG) $(DIRINSTALL)/$(PROG)
! /etc/chown root $(DIRINSTALL)/$(PROG)
! chgrp kmem $(DIRINSTALL)/$(PROG)
! chmod 2755 $(DIRINSTALL)/$(PROG)
lint:
lint -x -b $(CFLAGS) *.c
--- 27,34 ----
$(CC) -o $@ $(OBJS) $(LIBS)
install: $(PROG)
! install -s -c -o root -g kmem -m 2755 $(PROG) $(DIRINSTALL)/$(PROG)
! install -c -o root -g wheel -m 644 sps.l $(DIRMAN)/sps.1
lint:
lint -x -b $(CFLAGS) *.c
Common subdirectories: /old/sps/SCCS and sps/SCCS
diff -c /old/sps/getcmd.c sps/getcmd.c
*** /old/sps/getcmd.c Sun Nov 25 23:52:56 1990
--- sps/getcmd.c Wed Nov 21 18:31:52 1990
***************
*** 54,60 ****
--- 54,64 ----
p->pr_upag = 0 ;
if ( p->pr_p.p_stat == SZOMB )
return ( "** Exit **" ) ;
+ # ifdef ULTRIX40
+ if ( !(p->pr_p.p_sched & SLOAD) && Flg.flg_o )
+ # else
if ( !(p->pr_p.p_flag & SLOAD) && Flg.flg_o )
+ # endif
return ( "** Swapped out **" ) ;
/* Find the process' upage */
# ifdef KVM
***************
*** 65,71 ****
--- 69,79 ----
return ( "** No upage **" ) ;
p->pr_upag = 1 ;
/* Is this a system process ? */
+ # ifdef ULTRIX40
+ if ( p->pr_p.p_type & SSYS )
+ # else
if ( p->pr_p.p_flag & SSYS )
+ # endif
switch ( p->pr_p.p_pid )
{
case 0 :
***************
*** 142,148 ****
--- 150,160 ----
/* Look at the top of the upage to locate the command arguments.
The page is loaded if the process itself is loaded and the pte
contains is marked as valid. */
+ # ifdef ULTRIX40
+ if ( (p->pr_p.p_sched & SLOAD)
+ # else
if ( (p->pr_p.p_flag & SLOAD)
+ # endif
&& !ptetbl[0].pg_fod && ptetbl[0].pg_pfnum )
{ /* If the page is loaded, read the arguments from
physical memory. */
***************
*** 152,158 ****
--- 164,174 ----
}
else
{ /* Otherwise the page is on the swap device */
+ # ifdef ULTRIX40
+ vstodb( 0, ctod( CLSIZE ), &User.u_us.u_procp->p_smap, &db, 1) ;
+ # else
vstodb( 0, ctod( CLSIZE ), &User.u_us.u_smap, &db, 1 ) ;
+ # endif
# ifdef BSD42
swseek( (long)dtob( db.db_base ) ) ;
# else
diff -c /old/sps/getupage.c sps/getupage.c
*** /old/sps/getupage.c Sun Nov 25 23:52:57 1990
--- sps/getupage.c Sun Nov 25 21:04:36 1990
***************
*** 40,52 ****
--- 40,67 ----
extern int Flmem, Flkmem, Flswap ;
/* If the process is not loaded, look for the upage on the swap device*/
+ # ifdef ULTRIX40
+ if ( !(p->pr_p.p_sched & SLOAD) )
+ # else
if ( !(p->pr_p.p_flag & SLOAD) )
+ # endif
{
+ # ifdef ULTRIX40
+ struct dmap l_dmap;
+ int ublkno;
+
+ memseek( Flkmem, (long)p->pr_p.p_smap );
+ read( Flkmem, (char*)&l_dmap, sizeof( struct dmap ));
+ memseek( Flkmem, l_dmap.dm_ptdaddr );
+ read( Flkmem, (char *)&ublkno, sizeof(int));
+ swseek( (long)dtob(ublkno) );
+ # else ULTRIX40
# ifdef BSD42
swseek( (long)dtob( p->pr_p.p_swaddr ) ) ;
# else BSD42
swseek( (long)ctob( p->pr_p.p_swaddr ) ) ;
# endif BSD42
+ # endif ULTRIX40
# ifdef SUN
if ( read( Flswap, (char*)&User.u_us, sizeof( union userstate ))
!= sizeof( union userstate ) )
diff -c /old/sps/needed.c sps/needed.c
*** /old/sps/needed.c Sun Nov 25 23:52:57 1990
--- sps/needed.c Sun Nov 25 23:38:17 1990
***************
*** 78,84 ****
--- 78,89 ----
uid = getuid() ;
for ( p = process ; p < lastp ; p++ )
{
+ # ifdef ULTRIX40
+ if ( !p->pr_p.p_stat
+ || p->pr_p.p_pid==0 && p->pr_p.p_stat == SIDL)
+ # else
if ( !p->pr_p.p_stat )
+ # endif
continue ;
/* Count processes and sizes */
summarise( p ) ;
***************
*** 150,156 ****
--- 155,165 ----
# endif
Summary.sm_kloaded += p->pr_p.p_rssize ;
Summary.sm_kswapped += p->pr_p.p_swrss ;
+ # ifdef ULTRIX40
+ if ( p->pr_p.p_sched & SLOAD )
+ # else
if ( p->pr_p.p_flag & SLOAD )
+ # endif
Summary.sm_nloaded++ ;
else
Summary.sm_nswapped++ ;
diff -c /old/sps/percentmem.c sps/percentmem.c
*** /old/sps/percentmem.c Sun Nov 25 23:52:57 1990
--- sps/percentmem.c Thu Nov 22 08:31:59 1990
***************
*** 34,40 ****
--- 34,44 ----
fracmem = ( (double)p->pr_p.p_rssize + szptudot ) ;
# else
tp = p->pr_p.p_textp ;
+ # ifdef ULTRIX40
+ if ( !(p->pr_p.p_sched & SLOAD) || !tp )
+ # else
if ( !(p->pr_p.p_flag & SLOAD) || !tp )
+ # endif
return ( 0.0 ) ;
szptudot = UPAGES + clrnd( ctopt( p->pr_p.p_dsize + p->pr_p.p_ssize ) );
fracmem = ( (double)p->pr_p.p_rssize + szptudot ) / CLSIZE ;
diff -c /old/sps/printproc.c sps/printproc.c
*** /old/sps/printproc.c Sun Nov 25 23:52:57 1990
--- sps/printproc.c Thu Nov 22 08:38:06 1990
***************
*** 138,146 ****
--- 138,158 ----
break ;
}
/* If the process is loaded, list the status information in capitals */
+ # ifdef ULTRIX40
+ printf( "%-6.6s ", p->pr_p.p_sched & SLOAD ?
+ # else
printf( "%-6.6s ", p->pr_p.p_flag & SLOAD ?
+ # endif
(capitals( chp, chbuf ), chbuf) : chp ) ;
/* List process flags */
+ # ifdef ULTRIX40
+ printf( "%c%c%c", p->pr_p.p_type & SSYS ? 'U' :
+ p->pr_p.p_trace & STRC ? 'T' : ' ',
+ p->pr_p.p_vm & SVFORK ? 'V' :
+ p->pr_p.p_vm & SPHYSIO ? 'I' : ' ',
+ p->pr_p.p_vm & SUANOM ? 'A' :
+ p->pr_p.p_vm & SSEQL ? 'S' : ' ' ) ;
+ # else
printf( "%c%c%c", p->pr_p.p_flag & SSYS ? 'U' :
p->pr_p.p_flag & STRC ? 'T' : ' ',
p->pr_p.p_flag & SVFORK ? 'V' :
***************
*** 147,152 ****
--- 159,165 ----
p->pr_p.p_flag & SPHYSIO ? 'I' : ' ',
p->pr_p.p_flag & SUANOM ? 'A' :
p->pr_p.p_flag & SSEQL ? 'S' : ' ' ) ;
+ # endif
/* List process niceness */
if ( p->pr_p.p_nice != NZERO )
printf( "%3d ", p->pr_p.p_nice - NZERO ) ;
diff -c /old/sps/waitingfor.c sps/waitingfor.c
*** /old/sps/waitingfor.c Sun Nov 25 23:52:57 1990
--- sps/waitingfor.c Thu Nov 22 08:41:47 1990
***************
*** 79,85 ****
--- 79,89 ----
return ( "null" ) ;
/* Waiting for a child process, alternatively in a vfork() ? */
if ( INRANGE( w, Info.i_proc0, &Info.i_proc0[ Info.i_nproc ] ) )
+ # ifdef ULTRIX40
+ return ( p->pr_p.p_vm & SNOVM ? "vfork" : "child" ) ;
+ # else
return ( p->pr_p.p_flag & SNOVM ? "vfork" : "child" ) ;
+ # endif
# ifndef SUNOS40
/* Waiting for a page to be brought in ? */
if ( INRANGE( w, Info.i_swbuf0, &Info.i_swbuf0[ Info.i_nswbuf ] ) )
--
Michael Fingerhut email: mf at ircam.fr voice: +33 1 42770105
IRCAM, 31 rue St Merri, 75004 Paris, France fax: +33 1 42772947
More information about the Alt.sources
mailing list