Prereq: 338
*** ../netlib/pvm3.3.8/src/patchlevel.h	Wed May 17 11:19:38 1995
--- src/patchlevel.h	Tue Sep  5 15:27:39 1995
***************
*** 1,3 ****
  
! #define PATCHLEVEL 338
  
--- 1,3 ----
  
! #define PATCHLEVEL 339
  
*** ../netlib/pvm3.3.8/conf/CNVX.def	Sat Jun  4 17:55:26 1994
--- conf/CNVX.def	Fri Sep  8 11:55:55 1995
***************
*** 1,4 ****
! ARCHCFLAGS	=	-fi
  ARCHDLIB	=
  ARCHDOBJ	=
  ARCHLIB	=
--- 1,5 ----
! ARCHCFLAGS	= -no -fi -DNOUNIXDOM
! ARCHFFLAGS	= -no -fi
  ARCHDLIB	=
  ARCHDOBJ	=
  ARCHLIB	=
*** ../netlib/pvm3.3.8/conf/CSPP.def	Tue Jul 11 15:11:30 1995
--- conf/CSPP.def	Fri Sep  8 11:56:27 1995
***************
*** 26,35 ****
  #FFLAGS	= -g
  
  # --------------------- Build with Convex C  -------------------
! CC	= /usr/convex/bin/cc -Wl,+tmspp1 -cxdb
! C_OPT	= -no -U_REENTRANT
! F77    = /usr/convex/bin/fc -cxdb
! FFLAGS = -no
  
  # --------------------- Standard Stuff -----------------------------------------
  
--- 26,35 ----
  #FFLAGS	= -g
  
  # --------------------- Build with Convex C  -------------------
! CC	= /usr/convex/bin/cc -Wl,+tmspp1
! C_OPT	= -O2 -or none -U_REENTRANT
! F77    = /usr/convex/bin/fc -Wl,+tmspp1
! FFLAGS = -O2 -or none
  
  # --------------------- Standard Stuff -----------------------------------------
  
***************
*** 41,46 ****
  ARCHLIB		= $(ARCHLDFLAGS) $(ARCHOBJ)
  ARCHFLIB   	= $(ARCHLDFFLAGS) $(ARCHOBJ)
  HASRANLIB	= f
! LD		= $(CC)
  PVM_ARCH	= CSPP
  RWBSPECIAL = |sed '/^.include \"pvm3.h\"/d' |sed '/^.include \"pvm_consts.h\"/d'
--- 41,48 ----
  ARCHLIB		= $(ARCHLDFLAGS) $(ARCHOBJ)
  ARCHFLIB   	= $(ARCHLDFFLAGS) $(ARCHOBJ)
  HASRANLIB	= f
! LD	  	 	= $(CC)
  PVM_ARCH	= CSPP
  RWBSPECIAL = |sed '/^.include \"pvm3.h\"/d' |sed '/^.include \"pvm_consts.h\"/d'
+ LOPT        = -Wl,-aarchive
+ 
*** ../netlib/pvm3.3.8/conf/HPPA.def	Wed May 17 11:21:32 1995
--- conf/HPPA.def	Thu Sep  7 13:33:06 1995
***************
*** 6,8 ****
--- 6,9 ----
  PVM_ARCH	=	HPPA
  RWBSPECIAL = |sed '/^.include \"pvm3.h\"/d' |sed '/^.include \"pvm_consts.h\"/d'
  FC	=	fort77
+ LOPT = -Wl,-aarchive
*** ../netlib/pvm3.3.8/console/Makefile.aimk	Tue Jul 11 15:15:33 1995
--- console/Makefile.aimk	Thu Sep  7 13:39:32 1995
***************
*** 12,18 ****
  PVMLDIR	=	../../lib/$(PVM_ARCH)
  PVMLIB	=	-lpvm3
  CFLAGS	=	-DIMA_$(PVM_ARCH) -I$(PVMIDIR) $(ARCHCFLAGS)
! LIBS	=	-L$(PVMLDIR) $(PVMLIB) $(ARCHLIB)
  OBJ	=	cons.o cmds.o job.o tevfmt.o
  
  default:	pvm
--- 12,18 ----
  PVMLDIR	=	../../lib/$(PVM_ARCH)
  PVMLIB	=	-lpvm3
  CFLAGS	=	-DIMA_$(PVM_ARCH) -I$(PVMIDIR) $(ARCHCFLAGS)
! LIBS	=	$(LOPT) -L$(PVMLDIR) $(PVMLIB) $(ARCHLIB)
  OBJ	=	cons.o cmds.o job.o tevfmt.o
  
  default:	pvm
*** ../netlib/pvm3.3.8/console/cmds.c	Mon Jul  3 14:59:53 1995
--- console/cmds.c	Tue Sep  5 15:07:15 1995
***************
*** 32,37 ****
--- 32,40 ----
   *	PVM console commands.
   *
  $Log: cmds.c,v $
+  * Revision 1.7  1995/09/05  19:06:52  manchek
+  * help text lowercase
+  *
   * Revision 1.6  1995/07/03  18:59:51  manchek
   * help text
   *
***************
*** 150,156 ****
  	{ 0, 0, 0, 0 }
  };
  
! static char rcsid[] = "$Id: cmds.c,v 1.6 1995/07/03 18:59:51 manchek Exp $";
  
  
  freealias(ap)
--- 153,159 ----
  	{ 0, 0, 0, 0 }
  };
  
! static char rcsid[] = "$Id: cmds.c,v 1.7 1995/09/05 19:06:52 manchek Exp $";
  
  
  freealias(ap)
***************
*** 418,430 ****
  
  static char *helptx[] = {
  
! 	"add ADD    - Add hosts to virtual machine",
  	"add Syntax:  add hostname ...",
  
! 	"alias ALIAS  - Define/list command aliases",
  	"alias Syntax:  alias [name command args ...]",
  
! 	"conf CONF   - List virtual machine configuration",
  	"conf Syntax:  conf",
  	"conf Output fields:",
  	"conf   HOST    host name",
--- 421,433 ----
  
  static char *helptx[] = {
  
! 	"add add    - Add hosts to virtual machine",
  	"add Syntax:  add hostname ...",
  
! 	"alias alias  - Define/list command aliases",
  	"alias Syntax:  alias [name command args ...]",
  
! 	"conf conf   - List virtual machine configuration",
  	"conf Syntax:  conf",
  	"conf Output fields:",
  	"conf   HOST    host name",
***************
*** 432,473 ****
  	"conf   ARCH    xhost architecture",
  	"conf   SPEED   host relative speed",
  
! 	"delete DELETE - Delete hosts from virtual machine",
  	"delete Syntax:  delete hostname ...",
  
! 	"echo ECHO   - Echo arguments",
  	"echo Syntax:  echo [ arg ... ]",
  
! 	"halt HALT   - Stop pvmds",
  	"halt Syntax:  halt",
  
! 	"help HELP   - Print helpful information about a command",
  	"help Syntax:  help [ command ]",
  
! 	"id ID     - Print console task id",
  	"id Syntax:  id",
  
! 	"idump-IDUMP     - Call i_dump to display heap contents",
  	"idump-Syntax:  idump [ how ]",
  
! 	"insert-INSERT - Add entry to database",
  	"insert-Syntax:  insert name index|-1 hexvalue",
  
! 	"jobs JOBS   - Display list of running jobs",
  	"jobs Syntax:  jobs [ options ]",
  	"jobs Options:  -l   give long listing",
  
! 	"kill KILL   - Terminate tasks",
  	"kill Syntax:  kill [ options ] tid ...",
  	"kill Options:  -c   kill children of tid",
  
! 	"lookup-LOOKUP - Find entry in database",
  	"lookup-Syntax:  lookup name index|-1",
  
! 	"mstat MSTAT  - Show status of hosts",
  	"mstat Syntax:  mstat name ...",
  
! 	"ps PS     - List tasks",
  	"ps Syntax:  ps [ -axh ]",
  	"ps Options:  -a       all hosts (default is local)",
  	"ps           -hhost   specific host tid",
--- 435,476 ----
  	"conf   ARCH    xhost architecture",
  	"conf   SPEED   host relative speed",
  
! 	"delete delete - Delete hosts from virtual machine",
  	"delete Syntax:  delete hostname ...",
  
! 	"echo echo   - Echo arguments",
  	"echo Syntax:  echo [ arg ... ]",
  
! 	"halt halt   - Stop pvmds",
  	"halt Syntax:  halt",
  
! 	"help help   - Print helpful information about a command",
  	"help Syntax:  help [ command ]",
  
! 	"id id     - Print console task id",
  	"id Syntax:  id",
  
! 	"idump-idump     - Call i_dump to display heap contents",
  	"idump-Syntax:  idump [ how ]",
  
! 	"insert-insert - Add entry to database",
  	"insert-Syntax:  insert name index|-1 hexvalue",
  
! 	"jobs jobs   - Display list of running jobs",
  	"jobs Syntax:  jobs [ options ]",
  	"jobs Options:  -l   give long listing",
  
! 	"kill kill   - Terminate tasks",
  	"kill Syntax:  kill [ options ] tid ...",
  	"kill Options:  -c   kill children of tid",
  
! 	"lookup-lookup - Find entry in database",
  	"lookup-Syntax:  lookup name index|-1",
  
! 	"mstat mstat  - Show status of hosts",
  	"mstat Syntax:  mstat name ...",
  
! 	"ps ps     - List tasks",
  	"ps Syntax:  ps [ -axh ]",
  	"ps Options:  -a       all hosts (default is local)",
  	"ps           -hhost   specific host tid",
***************
*** 491,515 ****
  	"ps   R   resource manager task",
  	"ps   T   tasker task",
  
! 	"pstat PSTAT  - Show status of tasks",
  	"pstat Syntax:  pstat tid ...",
  
! 	"quit QUIT   - Exit console",
  	"quit Syntax:  quit",
  
! 	"remove-REMOVE - Delete entry from database",
  	"remove-Syntax:  remove name index",
  
! 	"reset RESET  - Kill all tasks",
  	"reset Syntax:  reset",
  
! 	"setenv SETENV - Display or set environment variables",
  	"setenv Syntax:  setenv [ name [ value ] ]",
  
! 	"sig SIG    - Send signal to task",
  	"sig Syntax:  sig signum task ...",
  
! 	"spawn SPAWN  - Spawn task",
  	"spawn Syntax:  spawn [ options ] file [ arg ... ]",
  	"spawn Options:  -(count)  number of tasks, default is 1",
  	"spawn           -(host)   spawn on host, default is any",
--- 494,518 ----
  	"ps   R   resource manager task",
  	"ps   T   tasker task",
  
! 	"pstat pstat  - Show status of tasks",
  	"pstat Syntax:  pstat tid ...",
  
! 	"quit quit   - Exit console",
  	"quit Syntax:  quit",
  
! 	"remove-remove - Delete entry from database",
  	"remove-Syntax:  remove name index",
  
! 	"reset reset  - Kill all tasks",
  	"reset Syntax:  reset",
  
! 	"setenv setenv - Display or set environment variables",
  	"setenv Syntax:  setenv [ name [ value ] ]",
  
! 	"sig sig    - Send signal to task",
  	"sig Syntax:  sig signum task ...",
  
! 	"spawn spawn  - Spawn task",
  	"spawn Syntax:  spawn [ options ] file [ arg ... ]",
  	"spawn Options:  -(count)  number of tasks, default is 1",
  	"spawn           -(host)   spawn on host, default is any",
***************
*** 521,527 ****
  	"spawn           -@        trace job, display output on console",
  	"spawn           -@(file)  trace job, output to file",
  
! 	"tickle-TICKLE - Tickle pvmd",
  	"tickle-Syntax:  tickle how [ arg ... ]",
  	"tickle-How:",
  	"tickle-  0   dump heap",
--- 524,530 ----
  	"spawn           -@        trace job, display output on console",
  	"spawn           -@(file)  trace job, output to file",
  
! 	"tickle-tickle - Tickle pvmd",
  	"tickle-Syntax:  tickle how [ arg ... ]",
  	"tickle-How:",
  	"tickle-  0   dump heap",
***************
*** 536,542 ****
  	"tickle-  9   (rst) dump pvmd statistics, clear if rst true",
  	"tickle-  100 dump shared memory data structures",
  
! 	"trace TRACE  - Set/display trace event mask",
  	"trace Syntax:  trace",
  	"trace          trace [+] name ...",
  	"trace          trace - name ...",
--- 539,545 ----
  	"tickle-  9   (rst) dump pvmd statistics, clear if rst true",
  	"tickle-  100 dump shared memory data structures",
  
! 	"trace trace  - Set/display trace event mask",
  	"trace Syntax:  trace",
  	"trace          trace [+] name ...",
  	"trace          trace - name ...",
***************
*** 543,552 ****
  	"trace          trace [+] *",
  	"trace          trace - *",
  
! 	"unalias UNALIAS - Undefine command alias",
  	"unalias Syntax:  unalias name ...",
  
! 	"version VERSION - Show libpvm version",
  	"version Syntax:  version",
  	0
  };
--- 546,555 ----
  	"trace          trace [+] *",
  	"trace          trace - *",
  
! 	"unalias unalias - Undefine command alias",
  	"unalias Syntax:  unalias name ...",
  
! 	"version version - Show libpvm version",
  	"version Syntax:  version",
  	0
  };
*** ../netlib/pvm3.3.8/examples/CSPP/Makefile	Tue Jul 11 15:13:08 1995
--- examples/CSPP/Makefile	Fri Sep  8 11:57:39 1995
***************
*** 14,42 ****
  BDIR	=	$(SDIR)/../bin
  XDIR	=	$(BDIR)/$(PVM_ARCH)
  
! CC	=	/usr/convex/bin/cc -Wl,+tmspp1
! OPTIONS	=	-cxdb -no
  CFLAGS	=	$(OPTIONS) -I$(PVM_ROOT)/include $(ARCHCFLAGS)
  LIBS	=	-lpvm3 $(ARCHLIB)
  GLIBS	=	-lgpvm3
  
! F77	=	/usr/convex/bin/fc -Wl,+tmspp1
  FFLAGS	=	-cxdb -no
  FLIBS	=	-lfpvm3
  
! LFLAGS	=	-L$(PVM_ROOT)/lib/$(PVM_ARCH)
  
- default:	hello hello_other
- 
  all: c-all f-all
  
! c-all:	gexample hello hello_other master slave spmd timing timing_slave
  
! f-all:	fgexample fmaster fslave fspmd hitc hitc_slave testall
  
  clean:
! 	rm -f *.o gexample hello hello_other hitc hitc_slave master1 slave1 \
! 		spmd testall timing timing_slave
  
  $(XDIR):
  	- mkdir $(BDIR)
--- 14,42 ----
  BDIR	=	$(SDIR)/../bin
  XDIR	=	$(BDIR)/$(PVM_ARCH)
  
! CC		=	/usr/convex/bin/cc -Wl,+tmspp1
! OPTIONS	=	-cxdb -no -U_REENTRANT
  CFLAGS	=	$(OPTIONS) -I$(PVM_ROOT)/include $(ARCHCFLAGS)
  LIBS	=	-lpvm3 $(ARCHLIB)
  GLIBS	=	-lgpvm3
  
! F77 	=	/usr/convex/bin/fc -Wl,+tmspp1
  FFLAGS	=	-cxdb -no
  FLIBS	=	-lfpvm3
+ LFLAGS	=	-Wl,-aarchive -L$(PVM_ROOT)/lib/$(PVM_ARCH)
+ FPROGS	=	fgexample fmaster1 fslave1 fspmd hitc hitc_slave testall
+ CPROGS	=	gexample hello hello_other master1 slave1 spmd timing timing_slave nntime
  
! default: hello hello_other
  
  all: c-all f-all
  
! c-all:	$(CPROGS)
  
! f-all:	$(FPROGS)
  
  clean:
! 	rm -f *.o $(CPROGS) $(FPROGS)
  
  $(XDIR):
  	- mkdir $(BDIR)
***************
*** 43,108 ****
  	- mkdir $(XDIR)
  
  hello: $(SDIR)/hello.c $(XDIR)
! 	$(CC) $(CFLAGS) -o hello $(SDIR)/hello.c $(LFLAGS) $(LIBS)
! 	mv hello $(XDIR)
  
  hello_other: $(SDIR)/hello_other.c $(XDIR)
! 	$(CC) $(CFLAGS) -o hello_other $(SDIR)/hello_other.c $(LFLAGS) $(LIBS)
! 	mv hello_other $(XDIR)
  
  timing_slave: $(SDIR)/timing_slave.c $(XDIR)
! 	$(CC) $(CFLAGS) -o timing_slave $(SDIR)/timing_slave.c $(LFLAGS) $(LIBS)
! 	mv timing_slave $(XDIR)
  
  timing: $(SDIR)/timing.c $(XDIR)
! 	$(CC) $(CFLAGS) -o timing $(SDIR)/timing.c $(LFLAGS) $(LIBS)
! 	mv timing $(XDIR)
  
  spmd: $(SDIR)/spmd.c $(XDIR)
! 	$(CC) $(CFLAGS) -o spmd $(SDIR)/spmd.c $(LFLAGS) $(GLIBS) $(LIBS)
! 	mv spmd $(XDIR)
  
  fspmd: $(SDIR)/spmd.f $(XDIR)
! 	$(F77) $(FFLAGS) -o spmd $(SDIR)/spmd.f $(LFLAGS) $(FLIBS) $(GLIBS) $(LIBS)
! 	mv spmd $(XDIR)
  
! master: $(SDIR)/master1.c $(XDIR)
! 	$(CC) $(CFLAGS) -o master1 $(SDIR)/master1.c $(LFLAGS) $(LIBS)
! 	mv master1 $(XDIR)
  
! slave: $(SDIR)/slave1.c $(XDIR)
! 	$(CC) $(CFLAGS) -o slave1 $(SDIR)/slave1.c $(LFLAGS) $(LIBS)
! 	mv slave1 $(XDIR)
  
! fmaster: $(SDIR)/master1.f $(XDIR)
! 	$(F77) $(FFLAGS) -o master1 $(SDIR)/master1.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv master1 $(XDIR)
  
! fslave: $(SDIR)/slave1.f $(XDIR)
! 	$(F77) $(FFLAGS) -o slave1 $(SDIR)/slave1.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv slave1 $(XDIR)
  
  testall: $(SDIR)/testall.f $(XDIR)
! 	$(F77) $(FFLAGS) -o testall $(SDIR)/testall.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv testall $(XDIR)
  
  hitc: $(SDIR)/hitc.f $(XDIR)
! 	$(F77) $(FFLAGS) -o hitc $(SDIR)/hitc.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv hitc $(XDIR)
  
  hitc_slave: $(SDIR)/hitc_slave.f $(XDIR)
! 	$(F77) $(FFLAGS) -o hitc_slave $(SDIR)/hitc_slave.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv hitc_slave $(XDIR)
  
  gexample: $(SDIR)/gexample.c $(XDIR)
! 	$(CC) $(CFLAGS) -o gexample $(SDIR)/gexample.c $(LFLAGS) $(GLIBS) $(LIBS)
! 	mv gexample $(XDIR)
  
  fgexample: $(SDIR)/gexample.f $(XDIR)
! 	$(F77) $(FFLAGS) -o gexample $(SDIR)/gexample.f $(LFLAGS) $(FLIBS) $(GLIBS) $(LIBS)
! 	mv gexample $(XDIR)
  
  nntime:	$(SDIR)/nntime.c $(XDIR)
! 	$(CC) $(CFLAGS) -D$(PVM_ARCH) -DPVM -o nntime $(SDIR)/nntime.c $(LFLAGS) $(LIBS)
! 	mv nntime $(XDIR)
  
--- 43,108 ----
  	- mkdir $(XDIR)
  
  hello: $(SDIR)/hello.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/hello.c $(LFLAGS) $(LIBS)
! 	mv $@ $(XDIR)
  
  hello_other: $(SDIR)/hello_other.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/hello_other.c $(LFLAGS) $(LIBS)
! 	mv $@ $(XDIR)
  
  timing_slave: $(SDIR)/timing_slave.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/timing_slave.c $(LFLAGS) $(LIBS)
! 	mv $@ $(XDIR)
  
  timing: $(SDIR)/timing.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/timing.c $(LFLAGS) $(LIBS)
! 	mv $@ $(XDIR)
  
  spmd: $(SDIR)/spmd.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/spmd.c $(LFLAGS) $(GLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
  fspmd: $(SDIR)/spmd.f $(XDIR)
! 	$(F77) $(FFLAGS) -o $@ $(SDIR)/spmd.f $(LFLAGS) $(FLIBS) $(GLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
! master1: $(SDIR)/master1.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/master1.c $(LFLAGS) $(LIBS)
! 	mv $@ $(XDIR)
  
! slave1: $(SDIR)/slave1.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/slave1.c $(LFLAGS) $(LIBS)
! 	mv $@ $(XDIR)
  
! fmaster1: $(SDIR)/master1.f $(XDIR)
! 	$(F77) $(FFLAGS) -o $@ $(SDIR)/master1.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
! fslave1: $(SDIR)/slave1.f $(XDIR)
! 	$(F77) $(FFLAGS) -o $@ $(SDIR)/slave1.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
  testall: $(SDIR)/testall.f $(XDIR)
! 	$(F77) $(FFLAGS) -o $@ $(SDIR)/testall.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
  hitc: $(SDIR)/hitc.f $(XDIR)
! 	$(F77) $(FFLAGS) -o $@ $(SDIR)/hitc.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
  hitc_slave: $(SDIR)/hitc_slave.f $(XDIR)
! 	$(F77) $(FFLAGS) -o $@ $(SDIR)/hitc_slave.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
  gexample: $(SDIR)/gexample.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/gexample.c $(LFLAGS) $(GLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
  fgexample: $(SDIR)/gexample.f $(XDIR)
! 	$(F77) $(FFLAGS) -o $@ $(SDIR)/gexample.f $(LFLAGS) $(FLIBS) $(GLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
  nntime:	$(SDIR)/nntime.c $(XDIR)
! 	$(CC) $(CFLAGS) -D$(PVM_ARCH) -DPVM -o $@ $(SDIR)/nntime.c $(LFLAGS) $(GLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
*** ../netlib/pvm3.3.8/examples/Makefile.aimk	Wed May 17 11:32:57 1995
--- examples/Makefile.aimk	Fri Sep  8 11:57:51 1995
***************
*** 18,47 ****
  BDIR	=	$(SDIR)/../bin
  XDIR	=	$(BDIR)/$(PVM_ARCH)
  
- CC	=	cc
  OPTIONS	=	-O
! CFLAGS	=	$(OPTIONS) -I$(PVM_ROOT)/include $(ARCHCFLAGS)
  LIBS	=	-lpvm3 $(ARCHLIB)
  GLIBS	=	-lgpvm3
  
  #F77	=	f77
  FORT = `case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac`
! FFLAGS	=	-g
  FLIBS	=	-lfpvm3
  
! LFLAGS	=	-L$(PVM_ROOT)/lib/$(PVM_ARCH)
  
  default:	hello hello_other
  
  all: c-all f-all
  
! c-all:	gexample hello hello_other master slave spmd timing timing_slave
  
! f-all:	fgexample fmaster fslave fspmd hitc hitc_slave testall
  
  clean:
! 	rm -f *.o gexample hello hello_other hitc hitc_slave master1 slave1 \
! 		spmd testall timing timing_slave
  
  $(XDIR):
  	- mkdir $(BDIR)
--- 18,51 ----
  BDIR	=	$(SDIR)/../bin
  XDIR	=	$(BDIR)/$(PVM_ARCH)
  
  OPTIONS	=	-O
! CFLAGS	=	$(OPTIONS) -I../../include $(ARCHCFLAGS)
! 
  LIBS	=	-lpvm3 $(ARCHLIB)
  GLIBS	=	-lgpvm3
  
  #F77	=	f77
  FORT = `case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac`
! FFLAGS	=	-g $(ARCHFFLAGS)
  FLIBS	=	-lfpvm3
  
! LFLAGS	=	$(LOPT) -L../../lib/$(PVM_ARCH)
  
+ CPROGS	=	gexample hello hello_other master1 slave1 spmd \
+ 			timing timing_slave nntime
+ 
+ FPROGS	=	fgexample fmaster1 fslave1 fspmd hitc hitc_slave testall
+ 
  default:	hello hello_other
  
  all: c-all f-all
  
! c-all:	$(CPROGS)
  
! f-all:	$(FPROGS)
  
  clean:
! 	rm -f *.o $(CPROGS) $(FPROGS)
  
  $(XDIR):
  	- mkdir $(BDIR)
***************
*** 48,113 ****
  	- mkdir $(XDIR)
  
  hello: $(SDIR)/hello.c $(XDIR)
! 	$(CC) $(CFLAGS) -o hello $(SDIR)/hello.c $(LFLAGS) $(LIBS)
! 	mv hello $(XDIR)
  
  hello_other: $(SDIR)/hello_other.c $(XDIR)
! 	$(CC) $(CFLAGS) -o hello_other $(SDIR)/hello_other.c $(LFLAGS) $(LIBS)
! 	mv hello_other $(XDIR)
  
  timing_slave: $(SDIR)/timing_slave.c $(XDIR)
! 	$(CC) $(CFLAGS) -o timing_slave $(SDIR)/timing_slave.c $(LFLAGS) $(LIBS)
! 	mv timing_slave $(XDIR)
  
  timing: $(SDIR)/timing.c $(XDIR)
! 	$(CC) $(CFLAGS) -o timing $(SDIR)/timing.c $(LFLAGS) $(LIBS)
! 	mv timing $(XDIR)
  
  spmd: $(SDIR)/spmd.c $(XDIR)
! 	$(CC) $(CFLAGS) -o spmd $(SDIR)/spmd.c $(LFLAGS) $(GLIBS) $(LIBS)
! 	mv spmd $(XDIR)
  
  fspmd: $(SDIR)/spmd.f $(XDIR)
! 	$(FORT) $(FFLAGS) -o spmd $(SDIR)/spmd.f $(LFLAGS) $(FLIBS) $(GLIBS) $(LIBS)
! 	mv spmd $(XDIR)
  
! master: $(SDIR)/master1.c $(XDIR)
! 	$(CC) $(CFLAGS) -o master1 $(SDIR)/master1.c $(LFLAGS) $(LIBS)
! 	mv master1 $(XDIR)
  
! slave: $(SDIR)/slave1.c $(XDIR)
! 	$(CC) $(CFLAGS) -o slave1 $(SDIR)/slave1.c $(LFLAGS) $(LIBS)
! 	mv slave1 $(XDIR)
  
! fmaster: $(SDIR)/master1.f $(XDIR)
! 	$(FORT) $(FFLAGS) -o master1 $(SDIR)/master1.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv master1 $(XDIR)
  
! fslave: $(SDIR)/slave1.f $(XDIR)
! 	$(FORT) $(FFLAGS) -o slave1 $(SDIR)/slave1.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv slave1 $(XDIR)
  
  testall: $(SDIR)/testall.f $(XDIR)
! 	$(FORT) $(FFLAGS) -o testall $(SDIR)/testall.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv testall $(XDIR)
  
  hitc: $(SDIR)/hitc.f $(XDIR)
! 	$(FORT) $(FFLAGS) -o hitc $(SDIR)/hitc.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv hitc $(XDIR)
  
  hitc_slave: $(SDIR)/hitc_slave.f $(XDIR)
! 	$(FORT) $(FFLAGS) -o hitc_slave $(SDIR)/hitc_slave.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv hitc_slave $(XDIR)
  
  gexample: $(SDIR)/gexample.c $(XDIR)
! 	$(CC) $(CFLAGS) -o gexample $(SDIR)/gexample.c $(LFLAGS) $(GLIBS) $(LIBS)
! 	mv gexample $(XDIR)
  
  fgexample: $(SDIR)/gexample.f $(XDIR)
! 	$(FORT) $(FFLAGS) -o gexample $(SDIR)/gexample.f $(LFLAGS) $(FLIBS) $(GLIBS) $(LIBS)
! 	mv gexample $(XDIR)
  
  nntime:	$(SDIR)/nntime.c $(XDIR)
! 	$(CC) $(CFLAGS) -D$(PVM_ARCH) -DPVM -o nntime $(SDIR)/nntime.c $(LFLAGS) $(LIBS)
! 	mv nntime $(XDIR)
  
--- 52,117 ----
  	- mkdir $(XDIR)
  
  hello: $(SDIR)/hello.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/hello.c $(LFLAGS) $(LIBS)
! 	mv $@ $(XDIR)
  
  hello_other: $(SDIR)/hello_other.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/hello_other.c $(LFLAGS) $(LIBS)
! 	mv $@ $(XDIR)
  
  timing_slave: $(SDIR)/timing_slave.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/timing_slave.c $(LFLAGS) $(LIBS)
! 	mv $@ $(XDIR)
  
  timing: $(SDIR)/timing.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/timing.c $(LFLAGS) $(LIBS)
! 	mv $@ $(XDIR)
  
  spmd: $(SDIR)/spmd.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/spmd.c $(LFLAGS) $(GLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
  fspmd: $(SDIR)/spmd.f $(XDIR)
! 	$(FORT) $(FFLAGS) -o $@ $(SDIR)/spmd.f $(LFLAGS) $(FLIBS) $(GLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
! master1: $(SDIR)/master1.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/master1.c $(LFLAGS) $(LIBS)
! 	mv $@ $(XDIR)
  
! slave1: $(SDIR)/slave1.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/slave1.c $(LFLAGS) $(LIBS)
! 	mv $@ $(XDIR)
  
! fmaster1: $(SDIR)/master1.f $(XDIR)
! 	$(FORT) $(FFLAGS) -o $@ $(SDIR)/master1.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
! fslave1: $(SDIR)/slave1.f $(XDIR)
! 	$(FORT) $(FFLAGS) -o $@ $(SDIR)/slave1.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
  testall: $(SDIR)/testall.f $(XDIR)
! 	$(FORT) $(FFLAGS) -o $@ $(SDIR)/testall.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
  hitc: $(SDIR)/hitc.f $(XDIR)
! 	$(FORT) $(FFLAGS) -o $@ $(SDIR)/hitc.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
  hitc_slave: $(SDIR)/hitc_slave.f $(XDIR)
! 	$(FORT) $(FFLAGS) -o $@ $(SDIR)/hitc_slave.f $(LFLAGS) $(FLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
  gexample: $(SDIR)/gexample.c $(XDIR)
! 	$(CC) $(CFLAGS) -o $@ $(SDIR)/gexample.c $(LFLAGS) $(GLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
  fgexample: $(SDIR)/gexample.f $(XDIR)
! 	$(FORT) $(FFLAGS) -o $@ $(SDIR)/gexample.f $(LFLAGS) $(FLIBS) $(GLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
  nntime:	$(SDIR)/nntime.c $(XDIR)
! 	$(CC) $(CFLAGS) -D$(PVM_ARCH) -DPVM -o $@ $(SDIR)/nntime.c $(LFLAGS) $(GLIBS) $(LIBS)
! 	mv $@ $(XDIR)
  
*** ../netlib/pvm3.3.8/examples/PGON/Makefile	Fri Jun 16 12:17:25 1995
--- examples/PGON/Makefile	Tue Sep  5 15:08:20 1995
***************
*** 48,54 ****
  	- mkdir $(BDIR)
  
  clean:
! 	rm -f *.o gexample timing_slave timing spmd fspmd master slave fmaster fslave testall
  
  timing_slave: $(SDIR)/timing_slave.c  $(XDIR)
  	$(CC) $(CFLAGS) -o timing_slave $(SDIR)/timing_slave.c  $(NODELIBS)
--- 48,54 ----
  	- mkdir $(BDIR)
  
  clean:
! 	rm -f *.o gexample timing_slave timing spmd fspmd master slave fmaster fslave testall nntime
  
  timing_slave: $(SDIR)/timing_slave.c  $(XDIR)
  	$(CC) $(CFLAGS) -o timing_slave $(SDIR)/timing_slave.c  $(NODELIBS)
*** ../netlib/pvm3.3.8/examples/Readme	Wed Nov  9 09:22:40 1994
--- examples/Readme	Fri Sep  8 13:31:23 1995
***************
*** 1,32 ****
  
! PVM version 3 examples
! 05 Mar 1994
  
  ________________________________________________________________________
  
  This directory contains C and FORTRAN example programs using PVM 3
  
! 1.) Hello + hello_other:
  	Two programs that cooperate - shows how to create a new task
  	and pass messages between tasks.
  
! 2.) Master + slave, fmaster + fslave:
  	A master/slave example where the master process creates and
  	directs some number of slave processes that cooperate to do the
  	work.  C and FORTRAN versions.
  
! 3.) Spmd, Fspmd:
  	An SPMD (Single Program Multiple Data) example where a single
  	"hostless" program creates copies of itself and then proceeds
  	to solve a problem in parallel.  Fspmd is identical except
  	written in FORTRAN. Illustrates use of group functions.
  
! 4.) Testall.f:
  	Illustrates the use of most of the available PVM 3 FORTRAN
  	calls and also serves to test which options are implemented at
  	the present time.
  
! 5.) Timing + timing_slave:
  	A simple program to illustrate how to measure network bandwidth
  	and latency.
  
--- 1,32 ----
  
! PVM Version 3 examples
! 07 Sep 1995
  
  ________________________________________________________________________
  
  This directory contains C and FORTRAN example programs using PVM 3
  
! 1.) hello + hello_other:
  	Two programs that cooperate - shows how to create a new task
  	and pass messages between tasks.
  
! 2.) master1 + slave1, fmaster1 + fslave1:
  	A master/slave example where the master process creates and
  	directs some number of slave processes that cooperate to do the
  	work.  C and FORTRAN versions.
  
! 3.) spmd, fspmd:
  	An SPMD (Single Program Multiple Data) example where a single
  	"hostless" program creates copies of itself and then proceeds
  	to solve a problem in parallel.  Fspmd is identical except
  	written in FORTRAN. Illustrates use of group functions.
  
! 4.) testall.f:
  	Illustrates the use of most of the available PVM 3 FORTRAN
  	calls and also serves to test which options are implemented at
  	the present time.
  
! 5.) timing + timing_slave:
  	A simple program to illustrate how to measure network bandwidth
  	and latency.
  
***************
*** 45,51 ****
      and Paragon multiprocessors among others.
  
  To build these examples, use the aimk program ($PVM_ROOT/lib/aimk).
! ******************************************************************************
   Note the fortran examples 'include' ../include/fpvm3.h
   If this file is not there, then just change this line in the example codes
   to point to the actual location. Guaranteed to be in $PVM_ROOT/include/fpvm3.h
--- 45,51 ----
      and Paragon multiprocessors among others.
  
  To build these examples, use the aimk program ($PVM_ROOT/lib/aimk).
! *****************************************************************************
   Note the fortran examples 'include' ../include/fpvm3.h
   If this file is not there, then just change this line in the example codes
   to point to the actual location. Guaranteed to be in $PVM_ROOT/include/fpvm3.h
***************
*** 52,65 ****
  ******************************************************************************
  Just type:
  	aimk hello hello_other    Pair of hello programs
! 	aimk master slave         C version of master/slave example
! 	aimk fmaster fslave       FORTRAN version of master/slave example
  	aimk spmd                 C version of SPMD example
! 	(aimk spmdh spmd          on Paragon/CM5/I860)
  	aimk fspmd                FORTRAN version of SPMD example
  	aimk testall              FORTRAN interface tester
!     aimk gexample             C version of reduce example
!     aimk fgexample            FORTRAN version of reduce example
  	aimk timing timing_slave  timing example in C
  	aimk hitc hitc_slave      dynamic load balance example
  
--- 52,65 ----
  ******************************************************************************
  Just type:
  	aimk hello hello_other    Pair of hello programs
! 	aimk master1 slave1       C version of master/slave example
! 	aimk fmaster1 fslave1     FORTRAN version of master/slave example
  	aimk spmd                 C version of SPMD example
! 	aimk spmdh spmd           SPMD version for Paragon/CM5/I860
  	aimk fspmd                FORTRAN version of SPMD example
  	aimk testall              FORTRAN interface tester
! 	aimk gexample             C version of reduce example
! 	aimk fgexample            FORTRAN version of reduce example
  	aimk timing timing_slave  timing example in C
  	aimk hitc hitc_slave      dynamic load balance example
  
***************
*** 78,89 ****
  simply execute any of the following at any UNIX prompt in the VM
  	hello
  	master1
! 	spmd (spmdh on Paragon/CM5/I860)
  	testall
!     gexample
  	timing
!     hitc
! 	nntime (on Paragon/CM5/I860, from pvm console: spawn -2 nntime)
  
  Step 3 Stop PVM
  When the user is through with the virtual machine 
--- 78,89 ----
  simply execute any of the following at any UNIX prompt in the VM
  	hello
  	master1
! 	spmd      (spmdh on Paragon/CM5/I860)
  	testall
! 	gexample
  	timing
! 	hitc
! 	nntime    (on Paragon/CM5/I860, from pvm console: spawn -2 nntime)
  
  Step 3 Stop PVM
  When the user is through with the virtual machine 
*** ../netlib/pvm3.3.8/examples/gexample.f	Tue Mar 21 14:10:40 1995
--- examples/gexample.f	Fri Sep  8 11:59:04 1995
***************
*** 35,42 ****
  c     Enroll in PVM and join a group
        call pvmfmytid( mytid )
        call pvmfjoingroup( 'matrix', myinst )
!       if( info .lt. 0 ) then
!         call pvmfperror( 'joingroup: ')
          call pvmfexit( info )
          stop
        endif
--- 35,42 ----
  c     Enroll in PVM and join a group
        call pvmfmytid( mytid )
        call pvmfjoingroup( 'matrix', myinst )
!       if( myinst .lt. 0 ) then
!         call pvmfperror( 'joingroup: ', info)
          call pvmfexit( info )
          stop
        endif
***************
*** 63,69 ****
  
  c       Start up more copies of myself
          if(nproc  .gt.  1)  then
!           call pvmfspawn( 'gexample', PVMDEFAULT, '*', 
       >                    nproc -1, tids, ninst ) 
            if( ninst .lt. nproc-1 ) then
              print*, 'Trouble in spawn. Check tids'
--- 63,69 ----
  
  c       Start up more copies of myself
          if(nproc  .gt.  1)  then
!           call pvmfspawn( 'fgexample', PVMDEFAULT, '*', 
       >                    nproc -1, tids, ninst ) 
            if( ninst .lt. nproc-1 ) then
              print*, 'Trouble in spawn. Check tids'
*** ../netlib/pvm3.3.8/examples/master1.f	Thu Mar 10 10:24:03 1994
--- examples/master1.f	Fri Sep  8 11:59:19 1995
***************
*** 32,38 ****
  c
  c     Initiate nproc instances of slave1 program 
  c     If arch is set to '*' then ANY configured machine is acceptable
!       nodename = 'slave1'
        arch = '*'
        call pvmfspawn( nodename, PVMDEFAULT, arch, nproc, tids, numt )
  
--- 32,38 ----
  c
  c     Initiate nproc instances of slave1 program 
  c     If arch is set to '*' then ANY configured machine is acceptable
!       nodename = 'fslave1'
        arch = '*'
        call pvmfspawn( nodename, PVMDEFAULT, arch, nproc, tids, numt )
  
*** ../netlib/pvm3.3.8/examples/nntime.c	Wed May 24 21:32:34 1995
--- examples/nntime.c	Fri Sep  8 12:58:06 1995
***************
*** 7,13 ****
--- 7,17 ----
   */
  
  #include <stdio.h>
+ 
+ #if !defined(CNVX) && !defined(CNVXN)
  #include <memory.h>
+ #endif
+ 
  #ifdef CM5_NODE
  #include <cm/cmmd.h>
  #include <cm/timers.h>
***************
*** 63,74 ****
  
  int mytid, momtid;
  
! main()
  {
! 	int hertid;
  	int ntask = 0, i; 
! 	int phantom = 0;
! 	struct pvmtaskinfo *tasks;
  
  #ifdef PVM
  
--- 67,80 ----
  
  int mytid, momtid;
  
! main(argc, argv)
! int argc;
! char *argv[];
  {
! 	int kidtid;
  	int ntask = 0, i; 
! 	char *grpname;
! 	char **tmp_argv;
  
  #ifdef PVM
  
***************
*** 75,100 ****
  	if ((mytid = pvm_mytid()) < 0)
  		exit(-1);
  	momtid = pvm_parent();
! /* pvm_setopt(PvmDebugMask, 3); 			*/
!  pvm_setopt(PvmRoute, PvmRouteDirect);	
  
! 	pvm_tasks(0, &ntask, &tasks);
! 	if (ntask == 1) {
! 		pvm_spawn("nntime", (char**)0, 0, "", 1, &hertid);
! 		pingpong(hertid);
! 		goto done;
  	}
- 	for (i = 0; i < ntask; i++)
- 		if (tasks[i].ti_tid != mytid && !strcmp(tasks[i].ti_a_out, "nntime")) {
- 			pingpong(tasks[i].ti_tid);		/* both spawned by console */ 
- 			goto done;
- 		}
- 	if (i == ntask && momtid != PvmNoParent)
- 		pingpong(momtid);					/* she's mom */
- 	else
- 		printf("Usage: can't have other tasks running\n");
  
! done:
  	pvm_exit();
  
  #else /*PVM*/
--- 81,121 ----
  	if ((mytid = pvm_mytid()) < 0)
  		exit(-1);
  	momtid = pvm_parent();
! 	pvm_setopt(PvmRoute, PvmRouteDirect);	
  
! /*
!  *  --- Create a unique group name from the PID of the parent.
!  *  --- The parent will pass the group name to the child through cmd line
!  */
! 
! 	if(argc > 1)
! 		grpname = argv[1];
! 	else {
! 		grpname = (char *) malloc (20);
! 		sprintf(grpname,"NNTIME_%d", getpid());
  	}
  
! 	if((ntask = pvm_joingroup(grpname)) < 0) {
! 		pvm_perror("Error joining nntime group");
! 		exit(-1);
! 	}
! 
! 	switch (ntask) {
! 	case 0: 
! 		tmp_argv = (char **) malloc (sizeof (char *)*2);
! 		tmp_argv[0] = grpname;
! 		tmp_argv[1] = 0;
! 		pvm_spawn("nntime", tmp_argv, 0, "", 1, &kidtid);
! 		pingpong(kidtid);
! 		break;
! 	case 1:
! 		pingpong(momtid);                                       /* she's mom */
! 		break;
! 	default:
! 		printf("Too many 'nntime' processes running: %d\n", ntask);
! 	}
! 
! 	pvm_lvgroup(grpname);
  	pvm_exit();
  
  #else /*PVM*/
***************
*** 121,127 ****
  
  #endif /*PVM*/
  
! 	exit();
  }
  
  
--- 142,148 ----
  
  #endif /*PVM*/
  
! 	exit(0);
  }
  
  
***************
*** 151,157 ****
  	int hertid;
  {
  	int n, size;
! 	double data[MAXSIZE];
  	char str[32];
  	int t;
  
--- 172,178 ----
  	int hertid;
  {
  	int n, size;
! 	static double data[MAXSIZE];
  	char str[32];
  	int t;
  
***************
*** 303,309 ****
  int dtid;
  {
  	int i;
! 	double data[MAXSIZE];
  	int t;
  
  #ifdef TIMER_CLEAR
--- 324,330 ----
  int dtid;
  {
  	int i;
! 	static double data[MAXSIZE];
  	int t;
  
  #ifdef TIMER_CLEAR
*** ../netlib/pvm3.3.8/examples/spmd.f	Thu Mar 10 10:24:03 1994
--- examples/spmd.f	Fri Sep  8 12:01:33 1995
***************
*** 21,27 ****
         call pvmfjoingroup( 'foo', me )
         print*,'me =',me, '  mytid =',mytid
         if( me .eq. 0 )  then
!          call pvmfspawn('spmd',PVMDEFAULT,'*',NPROC-1,tids(1),info)
         endif
  c      -----------------------------------------------------
  c      Wait for everyone to startup before proceeding.
--- 21,27 ----
         call pvmfjoingroup( 'foo', me )
         print*,'me =',me, '  mytid =',mytid
         if( me .eq. 0 )  then
!          call pvmfspawn('fspmd',PVMDEFAULT,'*',NPROC-1,tids(1),info)
         endif
  c      -----------------------------------------------------
  c      Wait for everyone to startup before proceeding.
*** ../netlib/pvm3.3.8/examples/testall.f	Mon Oct 24 10:50:53 1994
--- examples/testall.f	Fri Sep  8 12:01:56 1995
***************
*** 10,16 ****
        implicit none
        include '../include/fpvm3.h'
        integer mytid, parentid, nproc, nitem, info
!       integer i, mbuf, oldbuf, err, stid, msgtag, bytes, ntask 
        integer nhost, narch, nobuf
        integer tids(10), sbuf(3), rbuf(2)
        integer htids(10), speeds(10)
--- 10,16 ----
        implicit none
        include '../include/fpvm3.h'
        integer mytid, parentid, nproc, nitem, info
!       integer i, mbuf, oldbuf, err, stid, msgtag, bytes, ntask, j
        integer nhost, narch, nobuf
        integer tids(10), sbuf(3), rbuf(2)
        integer htids(10), speeds(10)
***************
*** 186,195 ****
       >              '-----------------------------------------'
              i = 1
              print *,i, aout(i), ttids(i), ptids(i), htids(i), flag(i)
!             do 234 i=2, ntask
                 CALL PVMFTASKS( iwhich, ntask, ttids(i), ptids(i), 
       >                    htids(i), flag(i), aout(i), info )
!                print *,i, aout(i),ttids(i),ptids(i),htids(i),flag(i)
    234       continue
              print *,' -------------------------',
       >              '-----------------------------------------'
--- 186,195 ----
       >              '-----------------------------------------'
              i = 1
              print *,i, aout(i), ttids(i), ptids(i), htids(i), flag(i)
!             do 234 j=2, ntask
                 CALL PVMFTASKS( iwhich, ntask, ttids(i), ptids(i), 
       >                    htids(i), flag(i), aout(i), info )
!                print *,j, aout(i),ttids(i),ptids(i),htids(i),flag(i)
    234       continue
              print *,' -------------------------',
       >              '-----------------------------------------'
*** ../netlib/pvm3.3.8/gexamples/CSPP/Makefile	Tue Jul 11 15:14:15 1995
--- gexamples/CSPP/Makefile	Fri Sep  8 12:02:24 1995
***************
*** 19,25 ****
  
  PVMIDIR	=	$(PVM_ROOT)/include
  PVMLDIR	=	$(PVM_ROOT)/lib/$(PVM_ARCH)
! PVMLIB	=	-lgpvm3 -lpvm3 $(ARCHLIB)
  
  CC	=	/usr/convex/bin/cc -Wl,+tmspp1
  CFLAGS	=	-cxdb -no -I$(PVMIDIR) -L$(PVMLDIR)
--- 19,25 ----
  
  PVMIDIR	=	$(PVM_ROOT)/include
  PVMLDIR	=	$(PVM_ROOT)/lib/$(PVM_ARCH)
! PVMLIB	=	-Wl,-aarchive -lgpvm3 -lpvm3 $(ARCHLIB)
  
  CC	=	/usr/convex/bin/cc -Wl,+tmspp1
  CFLAGS	=	-cxdb -no -I$(PVMIDIR) -L$(PVMLDIR)
***************
*** 26,32 ****
  
  FORT	=	/usr/convex/bin/fc -Wl,+tmspp1
  FFLAGS	=	-cxdb -no -I$(PVMIDIR) -L$(PVMLDIR)
! PVMFLIB	=	-lfpvm3 $(PVMLIB)
  
  all: joinleave gexamp tst thb tnb ge tjl tjf trsg frsg gs
  
--- 26,32 ----
  
  FORT	=	/usr/convex/bin/fc -Wl,+tmspp1
  FFLAGS	=	-cxdb -no -I$(PVMIDIR) -L$(PVMLDIR)
! PVMFLIB	=	-Wl,-aarchive -lfpvm3 $(PVMLIB)
  
  all: joinleave gexamp tst thb tnb ge tjl tjf trsg frsg gs
  
*** ../netlib/pvm3.3.8/gexamples/Makefile	Mon Oct 24 17:06:52 1994
--- gexamples/Makefile	Wed Sep  6 13:48:49 1995
***************
*** 14,19 ****
--- 14,20 ----
  #PVM_ARCH	=
  #ARCHCFLAGS	=
  
+ SHELL	=	/bin/sh
  PVMIDIR	=	$(PVM_ROOT)/include
  PVMLDIR	=	$(PVM_ROOT)/lib/$(PVM_ARCH)
  PVMLIB	=	-lgpvm3 -lpvm3
*** ../netlib/pvm3.3.8/gexamples/Makefile.aimk	Wed May 24 15:00:02 1995
--- gexamples/Makefile.aimk	Fri Sep  8 12:04:25 1995
***************
*** 14,31 ****
  #PVM_ARCH	=
  #ARCHCFLAGS	=
  
! PVMIDIR	=	$(PVM_ROOT)/include
! PVMLDIR	=	$(PVM_ROOT)/lib/$(PVM_ARCH)
! PVMLIB	=	-lgpvm3 -lpvm3 $(ARCHLIB)
! CFLAGS	=	-g -I$(PVMIDIR) -L$(PVMLDIR) $(ARCHCFLAGS)
  SDIR	=	..
- #BDIR	=	$(HOME)/pvm3/bin
  BDIR	=	../../bin
  XDIR	=	$(BDIR)/$(PVM_ARCH)
  #F77		=	f77
  FORT = `case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac`
! FFLAGS	=	-g -L$(PVMLDIR)
! PVMFLIB	=	-lfpvm3 $(PVMLIB)
  
  all: joinleave gexamp tst thb tnb ge tjl tjf trsg frsg gs
  
--- 14,31 ----
  #PVM_ARCH	=
  #ARCHCFLAGS	=
  
! SHELL	=	/bin/sh
! PVMIDIR	=	../../include
! PVMLDIR	=	../../lib/$(PVM_ARCH)
! PVMLIB	=	$(LOPT) -L$(PVMLDIR) -lgpvm3 -lpvm3 $(ARCHLIB)
! CFLAGS	=	-g -I$(PVMIDIR) $(ARCHCFLAGS)
  SDIR	=	..
  BDIR	=	../../bin
  XDIR	=	$(BDIR)/$(PVM_ARCH)
  #F77		=	f77
  FORT = `case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac`
! FFLAGS	=	-g -I$(PVMIDIR) $(ARCHFFLAGS)
! PVMFLIB	=	$(LOPT) -L$(PVMLDIR) -lfpvm3 $(PVMLIB) $(ARCHLIB)
  
  all: joinleave gexamp tst thb tnb ge tjl tjf trsg frsg gs
  
*** ../netlib/pvm3.3.8/hoster/Makefile.aimk	Mon Jan 24 18:57:45 1994
--- hoster/Makefile.aimk	Wed Sep  6 13:49:02 1995
***************
*** 6,11 ****
--- 6,12 ----
  #  ARCHCFLAGS = special cc flags
  #  ARCHLIB    = special libs needed for daemon
  #
+ SHELL	=	/bin/sh
  PVMIDIR	=	../../include
  PVMLDIR	=	../../lib/$(PVM_ARCH)
  PVMLIB	=	-lpvm3
*** ../netlib/pvm3.3.8/lib/aimk	Wed Jul 19 10:10:30 1995
--- lib/aimk	Tue Sep  5 15:12:58 1995
***************
*** 13,19 ****
  #	2.  Else if ./Makefile.aimk exists,
  #		chdir to $PVM_ARCH and exec make
  #		with -f $PVM_ROOT/conf/$PVM_ARCH.def
! #		and -f ../Makefile.aimk PVM_ARCH=$PVM_ARCH
  #
  #	3.  Else will simply exec make in cwd.
  #
--- 13,20 ----
  #	2.  Else if ./Makefile.aimk exists,
  #		chdir to $PVM_ARCH and exec make
  #		with -f $PVM_ROOT/conf/$PVM_ARCH.def
! #		and -f $AIMK_SRC/Makefile.aimk PVM_ARCH=$PVM_ARCH
! #		$AIMK_SRC is the original working directory before the chdir.
  #
  #	3.  Else will simply exec make in cwd.
  #
***************
*** 71,81 ****
  			mkdir $PVM_ARCH
  		fi
  		echo making in $PVM_ARCH/ for $PVM_ARCH
  		cd $PVM_ARCH
  		if [ "$*" = "" ]; then
! 			exec make -f $PVM_ROOT/conf/$PVM_ARCH.def -f ../Makefile.aimk PVM_ARCH=$PVM_ARCH
  		else
! 			exec make -f $PVM_ROOT/conf/$PVM_ARCH.def -f ../Makefile.aimk PVM_ARCH=$PVM_ARCH "$@"
  		fi
  
  	else
--- 72,84 ----
  			mkdir $PVM_ARCH
  		fi
  		echo making in $PVM_ARCH/ for $PVM_ARCH
+ 		AIMK_SRC=`pwd`
+ 		export AIMK_SRC
  		cd $PVM_ARCH
  		if [ "$*" = "" ]; then
! 			exec make -f $PVM_ROOT/conf/$PVM_ARCH.def -f $AIMK_SRC/Makefile.aimk PVM_ARCH=$PVM_ARCH
  		else
! 			exec make -f $PVM_ROOT/conf/$PVM_ARCH.def -f $AIMK_SRC/Makefile.aimk PVM_ARCH=$PVM_ARCH "$@"
  		fi
  
  	else
*** ../netlib/pvm3.3.8/lib/pvm	Mon Jun 12 12:16:46 1995
--- lib/pvm	Tue Sep  5 15:10:47 1995
***************
*** 1,15 ****
  #!/bin/sh
  #
  #	Start the appropriate pvm console.
! #	If PVM_ROOT is not set in environment, it defaults to ~/pvm3
! #	If PVM_ARCH is not set, try to get it by execing $PVMROOT/lib/pvmgetarch.
  #
  #	09 Apr 1993  Manchek
  #
  
  case "x$PVM_ROOT" in x )
! 	echo pvm: PVM_ROOT not defined >&2
! 	exit 1
  ;; esac
  
  case "x$PVM_ARCH" in x | xUNKNOWN )
--- 1,32 ----
  #!/bin/sh
  #
  #	Start the appropriate pvm console.
! #	If PVM_ROOT is not set in environment,
! #		we try to guess it by combining the working directory with argv[0],
! #		otherwise it defaults to $HOME/pvm3.
! #	If PVM_ARCH is not set,
! #		we get it by execing $PVMROOT/lib/pvmgetarch.
  #
  #	09 Apr 1993  Manchek
  #
  
  case "x$PVM_ROOT" in x )
! 	case "$0" in
! 	/*) PVM_ROOT="$0" ;;
! 	*) PVM_ROOT=`pwd`/"$0" ;;
! 	esac
! 	PVM_ROOT=`echo "$PVM_ROOT" | sed -e 's/\/lib\/pvm//'`
! 	if [ -d $PVM_ROOT ]; then
! 		export PVM_ROOT
! 	else
! 		if [ -d $HOME/pvm3 ]; then
! 			PVM_ROOT=$HOME/pvm3
! 			export PVM_ROOT
! 		else
! 			echo pvm: PVM_ROOT not defined >&2
! 			exit 1
! 		fi
! 	fi
  ;; esac
  
  case "x$PVM_ARCH" in x | xUNKNOWN )
*** ../netlib/pvm3.3.8/lib/pvmd	Mon Jun 12 12:16:51 1995
--- lib/pvmd	Tue Sep  5 15:10:52 1995
***************
*** 3,9 ****
  #	Start the appropriate pvmd3.
  #	If PVM_ROOT is not set in environment,
  #		we try to guess it by combining the working directory with argv[0],
! #		otherwise it defaults to ~/pvm3.
  #	If PVM_ARCH is not set,
  #		we get it by execing $PVMROOT/lib/pvmgetarch.
  #
--- 3,9 ----
  #	Start the appropriate pvmd3.
  #	If PVM_ROOT is not set in environment,
  #		we try to guess it by combining the working directory with argv[0],
! #		otherwise it defaults to $HOME/pvm3.
  #	If PVM_ARCH is not set,
  #		we get it by execing $PVMROOT/lib/pvmgetarch.
  #
*** ../netlib/pvm3.3.8/lib/pvmgetarch	Fri Jul 28 13:01:57 1995
--- lib/pvmgetarch	Tue Sep  5 15:09:02 1995
***************
*** 49,54 ****
--- 49,55 ----
  	*,mips )                ARCH=MIPS ;;
  	*,CRAY-2 )              ARCH=CRAY2 ;;
  	Linux,i[345]86 )        ARCH=LINUX ;;
+ 	BSD/OS,i[345]86 )       ARCH=BSD386 ;;
  	FreeBSD,i386 )          ARCH=FREEBSD ;;
  	SUPER-UX,SX-3 )         ARCH=SX3 ;;
  	uts,* )                 ARCH=UTS2 ;;
*** ../netlib/pvm3.3.8/man/man1/pvm_intro.1	Fri Jul 28 12:59:57 1995
--- man/man1/pvm_intro.1	Tue Sep  5 15:13:43 1995
***************
*** 108,114 ****
  NETBSDHP300
  HP 300 running NetBSD
  .TP
! NETBSD
  80[345]86 running NetBSD
  .TP
  NETBSDMAC68K
--- 108,114 ----
  NETBSDHP300
  HP 300 running NetBSD
  .TP
! NETBSDI386
  80[345]86 running NetBSD
  .TP
  NETBSDMAC68K
*** ../netlib/pvm3.3.8/patches/Contents	Fri Jul 28 12:48:57 1995
--- patches/Contents	Fri Sep  8 13:42:47 1995
***************
*** 1,3 ****
--- 1,72 ----
+ patch #9
+ version:
+     3.3.8 -> 3.3.9
+ files:
+     patch  src/patchlevel.h
+     patch  conf/CNVX.def
+     patch  conf/CSPP.def
+     patch  conf/HPPA.def
+     patch  console/Makefile.aimk
+     patch  console/cmds.c
+     patch  examples/CSPP/Makefile
+     patch  examples/Makefile.aimk
+     patch  examples/PGON/Makefile
+     patch  examples/Readme
+     patch  examples/gexample.f
+     patch  examples/master1.f
+     patch  examples/nntime.c
+     patch  examples/spmd.f
+     patch  examples/testall.f
+     patch  gexamples/CSPP/Makefile
+     patch  gexamples/Makefile
+     patch  gexamples/Makefile.aimk
+     patch  hoster/Makefile.aimk
+     patch  lib/aimk
+     patch  lib/pvm
+     patch  lib/pvmd
+     patch  lib/pvmgetarch
+     patch  man/man1/pvm_intro.1
+     patch  patches/Contents
+     patch  pvmgs/Makefile.aimk
+     patch  pvmgs/Makefile.mimd
+     patch  src/Makefile.aimk
+     patch  src/amem.s
+     patch  src/global.h
+     patch  src/lpvm.c
+     patch  src/lpvmmimd.c
+     patch  src/lpvmpack.c
+     patch  src/lpvmshmem.c
+     patch  src/pvmd.c
+     patch  src/pvmdshmem.c
+     patch  src/pvmshmem.c
+     patch  src/task.c
+     patch  tasker/Makefile.aimk
+     patch  xep/Makefile.aimk
+ what:
+     . packets into the pvmd are copied in shared memory versions, to
+       prevent segfault when accessing them after task disconnects.
+     . WT_DELHOST waits are flushed on task exit, so they don't accumulate.
+     . miscellaneous patches for SP2MPI port so it builds.
+     . fixed test in enc_xdr_long() (pvm_pklong, Default) that sometimes
+       incorrectly flagged positive longs as overflows.
+     . fixed bug in enc_xdr_init() that sometimes caused segfault in
+       pvm_setsbuf(), referencing a bad pointer.
+     . aimk saves the current directory before chdiring to the ARCH dir, uses
+       full path instead of ".." (may be incorrect if ARCH dir is symlink).
+     . lib/pvm script now attempts to guess PVM_ROOT if unset, defaulting
+       to $HOME/pvm3 if it can't.
+     . lib/pvmgetarch detects BSDI (ARCH=BSD386).
+     . change to busy-wait code in shared memory libpvm, giving better
+       performance on overloaded machines.
+     . experimental change to pvm_psend in shared memory verion for better
+       performance (delayed free of send buffer).
+     . typo in pvm_intro man page.
+     . pvmgs/Makefile.mimd uses $(AR_FRONT) instead of ar.
+     . examples/Makefile.aimk shouldn't have defined CC.
+     . fortran and c examples now use different executable names.
+     . fixed spelling in console help text.
+     . pvm_psend,precv return PvmNotImpl instead of PvmBadParam for PVM_STR.
+     . added SHELL=/bin/sh to several makefiles.
  patch #8
  version:
      3.3.7 -> 3.3.8
*** ../netlib/pvm3.3.8/pvmgs/Makefile.aimk	Tue Jul 11 15:16:10 1995
--- pvmgs/Makefile.aimk	Thu Sep  7 13:33:06 1995
***************
*** 23,29 ****
  PVMXDIR	=	$(PVMBDIR)/$(PVM_ARCH)
  PVMLIB	=       $(PVMLDIR)/libpvm3.a	
  CFLAGS	=	-I$(PVMIDIR) $(ARCHCFLAGS)
! LIBS	=	-L$(PVMLDIR) $(PVMLIB) $(ARCHLIB)
  HEADERS =	$(SDIR)/pvmgs_const.h $(SDIR)/pvmgs_decl.h $(SDIR)/pvmgs_ds.h \
  		$(SDIR)/pvmgs_mac.h $(PVMIDIR)/pvm3.h
  
--- 23,29 ----
  PVMXDIR	=	$(PVMBDIR)/$(PVM_ARCH)
  PVMLIB	=       $(PVMLDIR)/libpvm3.a	
  CFLAGS	=	-I$(PVMIDIR) $(ARCHCFLAGS)
! LIBS	=	$(LOPT) -L$(PVMLDIR) $(PVMLIB) $(ARCHLIB)
  HEADERS =	$(SDIR)/pvmgs_const.h $(SDIR)/pvmgs_decl.h $(SDIR)/pvmgs_ds.h \
  		$(SDIR)/pvmgs_mac.h $(PVMIDIR)/pvm3.h
  
*** ../netlib/pvm3.3.8/pvmgs/Makefile.mimd	Mon Jun 12 14:20:57 1995
--- pvmgs/Makefile.mimd	Tue Sep  5 15:14:13 1995
***************
*** 49,55 ****
  
  libgpvm3.a:	$(LOBJ)
  	rm -f libgpvm3.a
! 	ar cr libgpvm3.a $(LOBJ)
  	case x$(HASRANLIB) in xt ) echo ranlib; ranlib libgpvm3.a ;; esac
  
  pvm_gstat: pvm_gstat.o libgpvm3.a
--- 49,55 ----
  
  libgpvm3.a:	$(LOBJ)
  	rm -f libgpvm3.a
! 	$(AR_FRONT) cr libgpvm3.a $(LOBJ)
  	case x$(HASRANLIB) in xt ) echo ranlib; ranlib libgpvm3.a ;; esac
  
  pvm_gstat: pvm_gstat.o libgpvm3.a
*** ../netlib/pvm3.3.8/src/Makefile.aimk	Fri Jul 28 12:42:10 1995
--- src/Makefile.aimk	Thu Sep  7 13:35:30 1995
***************
*** 69,75 ****
  	- mkdir $(LIBDIR)
  
  pvmd3:	$(DOBJ)
! 	$(CC) $(CFLAGS) -o pvmd3 $(DOBJ) $(ARCHDLIB)
  
  libpvm3.a:	$(LOBJ)
  	rm -f libpvm3.a
--- 69,75 ----
  	- mkdir $(LIBDIR)
  
  pvmd3:	$(DOBJ)
! 	$(CC) $(CFLAGS) -o pvmd3 $(DOBJ) $(LOPT) $(ARCHDLIB)
  
  libpvm3.a:	$(LOBJ)
  	rm -f libpvm3.a
*** ../netlib/pvm3.3.8/src/amem.s	Mon Apr 10 11:57:15 1995
--- src/amem.s	Thu Sep  7 13:33:08 1995
***************
*** 1,7 ****
! ; $CHeader: amem.s 1.1 95/03/23 11:08:53 $
  ; Copyright 1992 Convex Computer Corp.
! ;	int __ldcws(void *addr)
! ;	int __read32(void *addr)
  ;
  ;	Note: addr must be on a 16 byte boundary.
  
--- 1,8 ----
! ; $CHeader: amem.s 1.3 1995/08/30 08:47:06 $
  ; Copyright 1992 Convex Computer Corp.
! ;	int __ldcws  (void *addr)
! ;	int __read32 (void *addr)
! ;	int __synch  ()
  ;
  ;	Note: addr must be on a 16 byte boundary.
  
***************
*** 12,17 ****
--- 13,19 ----
          .proc
          .callinfo caller,frame=0
          .entry
+ 	sync
  	ldcws	0(0,%arg0),%ret0
  	nop
  	bv	%r0(%rp)
***************
*** 29,33 ****
--- 31,47 ----
  	bv	%r0(%rp)
  	.exit
  	ldws	0(0,%arg0),%ret0
+         .procend
+ 
+         .space  $TEXT$
+         .subspa $CODE$
+         .export __synch,entry,priv_lev=3,argw0=gr,rtnval=gr
+ __synch
+         .proc
+         .callinfo caller,frame=0
+         .entry
+         bv      %r0(%rp)
+         .exit
+         sync
          .procend
          .end
*** ../netlib/pvm3.3.8/src/global.h	Mon Jul 24 14:24:32 1995
--- src/global.h	Tue Sep  5 15:28:53 1995
***************
*** 32,37 ****
--- 32,40 ----
   *	Generic includes.
   *
  $Log: global.h,v $
+  * Revision 1.19  1995/09/05  19:28:49  manchek
+  * version change
+  *
   * Revision 1.18  1995/07/24  18:24:19  manchek
   * added TIDISHERE macro
   *
***************
*** 91,97 ****
  
  /* release version */
  
! #define	PVM_VER	"3.3.8"
  
  /* UDPMAXLEN should be set to the largest UDP message length
     your system can handle. */
--- 94,100 ----
  
  /* release version */
  
! #define	PVM_VER	"3.3.9"
  
  /* UDPMAXLEN should be set to the largest UDP message length
     your system can handle. */
*** ../netlib/pvm3.3.8/src/lpvm.c	Fri Jul 28 12:40:58 1995
--- src/lpvm.c	Wed Sep  6 13:37:24 1995
***************
*** 32,37 ****
--- 32,43 ----
   *	Libpvm core for unix environment.
   *
  $Log: lpvm.c,v $
+  * Revision 1.31  1995/09/06  17:37:24  manchek
+  * aargh, forgot pvm_precv
+  *
+  * Revision 1.30  1995/09/06  17:30:32  manchek
+  * pvm_psend returns not implemented instead of bad param for string type
+  *
   * Revision 1.29  1995/07/28  16:40:58  manchek
   * wrap HASERRORVARS around errno declarations
   *
***************
*** 333,339 ****
   **           **
   ***************/
  
! static char rcsid[] = "$Id: lpvm.c,v 1.29 1995/07/28 16:40:58 manchek Exp $";
  static int debugmask = 0;				/* which debugging info */
  static int mxfersingle = 1;				/* mxfer returns after single frag */
  static char pvmtxt[512];				/* scratch for error log */
--- 339,345 ----
   **           **
   ***************/
  
! static char rcsid[] = "$Id: lpvm.c,v 1.31 1995/09/06 17:37:24 manchek Exp $";
  static int debugmask = 0;				/* which debugging info */
  static int mxfersingle = 1;				/* mxfer returns after single frag */
  static char pvmtxt[512];				/* scratch for error log */
***************
*** 2963,2968 ****
--- 2969,2978 ----
  		len *= sizeof(double) * 2;
  		break;
  
+ 	case PVM_STR:
+ 		cc = PvmNotImpl;
+ 		break;
+ 
  	default:
  		cc = PvmBadParam;
  		break;
***************
*** 3059,3064 ****
--- 3069,3078 ----
  
  	case PVM_DCPLX:
  		len *= sizeof(double) * 2;
+ 		break;
+ 
+ 	case PVM_STR:
+ 		cc = PvmNotImpl;
  		break;
  
  	default:
*** ../netlib/pvm3.3.8/src/lpvmmimd.c	Fri Jul 28 12:40:59 1995
--- src/lpvmmimd.c	Wed Sep  6 13:37:25 1995
***************
*** 32,37 ****
--- 32,46 ----
   *	Libpvm core for MPP environment.
   *
  $Log: lpvmmimd.c,v $
+  * Revision 1.18  1995/09/06  17:37:25  manchek
+  * aargh, forgot pvm_precv
+  *
+  * Revision 1.17  1995/09/06  17:32:39  manchek
+  * pvm_psend returns not implemented instead of bad param for string type
+  *
+  * Revision 1.16  1995/09/05  19:16:11  manchek
+  * changed some comments
+  *
   * Revision 1.15  1995/07/28  16:40:58  manchek
   * wrap HASERRORVARS around errno declarations
   *
***************
*** 230,236 ****
   **           **
   ***************/
  
! static char rcsid[] = "$Id: lpvmmimd.c,v 1.15 1995/07/28 16:40:58 manchek Exp $";
  static int debugmask = 0;				/* which debugging info */
  static char pvmtxt[512];				/* scratch for error log */
  static struct umbuf *rxfrag = 0;		/* not-assembled incm msgs */
--- 239,245 ----
   **           **
   ***************/
  
! static char rcsid[] = "$Id: lpvmmimd.c,v 1.18 1995/09/06 17:37:25 manchek Exp $";
  static int debugmask = 0;				/* which debugging info */
  static char pvmtxt[512];				/* scratch for error log */
  static struct umbuf *rxfrag = 0;		/* not-assembled incm msgs */
***************
*** 1879,1884 ****
--- 1888,1898 ----
  #endif
  
  
+ /*
+  * receive a message for precv
+  * returns 1 if message is received, 0 if not.
+  * returns -1 on error
+  */
  int
  mpprecv(tid, tag, cp, len, rtid, rtag, rlen)
  	int tid;
***************
*** 2040,2045 ****
--- 2054,2063 ----
  		len *= sizeof(double) * 2;
  		break;
  
+ 	case PVM_STR:
+ 		cc = PvmNotImpl;
+ 		break;
+ 
  	default:
  		cc = PvmBadParam;
  		break;
***************
*** 2128,2133 ****
--- 2146,2155 ----
  		len *= sizeof(double) * 2;
  		break;
  
+ 	case PVM_STR:
+ 		cc = PvmNotImpl;
+ 		break;
+ 
  	default:
  		cc = PvmBadParam;
  		break;
***************
*** 2180,2186 ****
  				/* 
  				 * Psend is really a buffered send. We use async send to
  				 * avoid the overhead of buffering (50%). The behavior of
! 				 * psend is now similar to RouteDirect.
  				 */
  				if (MSGPROBE(MPPANYNODE, MPPANYTAG, info)) {
  					if ((rtag = MSGTAG(info)) != PMTPACK) {
--- 2202,2212 ----
  				/* 
  				 * Psend is really a buffered send. We use async send to
  				 * avoid the overhead of buffering (50%). The behavior of
! 				 * psend is now similar to RouteDirect: the sender blocks
! 				 * until the other party signals its intention to receive,
! 				 * but it can accept incoming messages in the meantime.
! 				 * This avoids deadlock when two tasks send messages to
! 				 * each other at the same time.
  				 */
  				if (MSGPROBE(MPPANYNODE, MPPANYTAG, info)) {
  					if ((rtag = MSGTAG(info)) != PMTPACK) {
*** ../netlib/pvm3.3.8/src/lpvmpack.c	Fri Jul 28 12:04:06 1995
--- src/lpvmpack.c	Tue Sep  5 15:17:30 1995
***************
*** 32,37 ****
--- 32,41 ----
   *	Typed packing/unpacking, message buffer manip.
   *
  $Log: lpvmpack.c,v $
+  * Revision 1.11  1995/09/05  19:17:03  manchek
+  * fp sometimes wasn't set in enc_xdr_init.
+  * overflow test was wrong in enc_xdr_long
+  *
   * Revision 1.10  1995/07/28  16:04:06  manchek
   * switch endian includes on flag, not arch name
   *
***************
*** 117,123 ****
   **           **
   ***************/
  
! static char rcsid[] = "$Id: lpvmpack.c,v 1.10 1995/07/28 16:04:06 manchek Exp $";
  static char pvmtxt[512];				/* scratch for error log */
  
  
--- 121,127 ----
   **           **
   ***************/
  
! static char rcsid[] = "$Id: lpvmpack.c,v 1.11 1995/09/05 19:17:03 manchek Exp $";
  static char pvmtxt[512];				/* scratch for error log */
  
  
***************
*** 771,777 ****
  	struct umbuf *up = midtobuf(pvmsbufmid);
  	struct frag *fp;
  
! 	if (up->ub_frag->fr_link == up->ub_frag) {
  		fp = fr_new(pvmfrgsiz);			/* make a blank frag to write in */
  		fp->fr_dat += MAXHDR;
  		LISTPUTBEFORE(up->ub_frag, fp, fr_link, fr_rlink);
--- 775,781 ----
  	struct umbuf *up = midtobuf(pvmsbufmid);
  	struct frag *fp;
  
! 	if ((fp = up->ub_frag->fr_link) == up->ub_frag) {
  		fp = fr_new(pvmfrgsiz);			/* make a blank frag to write in */
  		fp->fr_dat += MAXHDR;
  		LISTPUTBEFORE(up->ub_frag, fp, fr_link, fr_rlink);
***************
*** 897,903 ****
  
  	for (np = (long*)vp; cnt-- > 0; np += std)
  		if (!xdr_long(xob, np)) {
! 			if ((*np & ~(long)0x7fffffff) != ~(long)0x7fffffff) {
  				cc = PvmOverflow;
  				break;
  			}
--- 901,908 ----
  
  	for (np = (long*)vp; cnt-- > 0; np += std)
  		if (!xdr_long(xob, np)) {
! 			if ((*np & ~(long)0x7fffffff)
! 			&& (*np & ~(long)0x7fffffff) != ~(long)0x7fffffff) {
  				cc = PvmOverflow;
  				break;
  			}
*** ../netlib/pvm3.3.8/src/lpvmshmem.c	Fri Jul 28 12:40:59 1995
--- src/lpvmshmem.c	Fri Sep  8 13:26:08 1995
***************
*** 32,37 ****
--- 32,52 ----
   *	Libpvm core for MPP environment.
   *
  $Log: lpvmshmem.c,v $
+  * Revision 1.37  1995/09/08  17:26:02  manchek
+  * aargh forgot semicolon
+  *
+  * Revision 1.36  1995/09/08  16:56:17  manchek
+  * experimental changes to pvm_psend to improve performance (postpone freebuf)
+  *
+  * Revision 1.35  1995/09/06  17:37:24  manchek
+  * aargh, forgot pvm_precv
+  *
+  * Revision 1.34  1995/09/06  17:31:41  manchek
+  * pvm_psend returns not implemented instead of bad param for string type
+  *
+  * Revision 1.33  1995/09/05  19:20:30  manchek
+  * changes from bigapple to make busywait work better
+  *
   * Revision 1.32  1995/07/28  16:40:59  manchek
   * wrap HASERRORVARS around errno declarations
   *
***************
*** 322,328 ****
   **           **
   ***************/
  
! static char rcsid[] = "$Id: lpvmshmem.c,v 1.32 1995/07/28 16:40:59 manchek Exp $";
  static char pvmtxt[512];				/* scratch for error log */
  static struct umbuf *rxfrag = 0;		/* not-assembled incm msgs */
  static struct frag *rxbuf;				/* buffer for incoming packets */
--- 337,343 ----
   **           **
   ***************/
  
! static char rcsid[] = "$Id: lpvmshmem.c,v 1.37 1995/09/08 17:26:02 manchek Exp $";
  static char pvmtxt[512];				/* scratch for error log */
  static struct umbuf *rxfrag = 0;		/* not-assembled incm msgs */
  static struct frag *rxbuf;				/* buffer for incoming packets */
***************
*** 344,350 ****
  static struct sockaddr_in pvmdsad;		/* address of pvmd socket */
  static int pvmdsock = -1;				/* pvmd socket descriptor */
  static int pvmpolltype = PvmPollSleep;	/* memory polling style */
! static int pvmpolltime = 100000;		/* time value for poll wait */
  
  #ifdef LOG
  static FILE *logfp = 0;					/* my own log file */
--- 359,365 ----
  static struct sockaddr_in pvmdsad;		/* address of pvmd socket */
  static int pvmdsock = -1;				/* pvmd socket descriptor */
  static int pvmpolltype = PvmPollSleep;	/* memory polling style */
! static int pvmpolltime = BUSYWAIT;		/* time value for poll wait */
  
  #ifdef LOG
  static FILE *logfp = 0;					/* my own log file */
***************
*** 512,518 ****
  
  #else	/*USERECVSEMAPHORE*/
  
- 	int cnt = pvmpolltime;
  	struct sembuf sops;
  
  	sops.sem_num = 0;
--- 527,532 ----
***************
*** 519,528 ****
  	sops.sem_op = -1;
  	sops.sem_flg = 0;
  	while (inbp->mb_read == inbp->mb_last) {
- 		if ((pvmpolltype == PvmPollConstant)
- 		|| ((pvmpolltype == PvmPollSleep) && (--cnt > 0)))
- 			continue;
- 
  		if (debugmask & PDMSEM) {
  			sprintf(pvmtxt, "peer_wait(): Waiting on semop id = %d\n", mysemid);
  			pvmlogerror(pvmtxt);
--- 533,538 ----
***************
*** 705,711 ****
  				break;
  		}
  
! 		if (loopcount++ > BUSYWAIT && !txfp && tstop.tv_sec == -1) {
  			PAGELOCK(&inbp->mb_lock);
  			if (inbp->mb_read == inbp->mb_last) {
  				inbp->mb_sleep = 1;
--- 715,722 ----
  				break;
  		}
  
! 		if (pvmpolltype == PvmPollSleep
! 		&& loopcount++ > pvmpolltime && !txfp && tstop.tv_sec == -1) {
  			PAGELOCK(&inbp->mb_lock);
  			if (inbp->mb_read == inbp->mb_last) {
  				inbp->mb_sleep = 1;
***************
*** 2195,2200 ****
--- 2206,2213 ----
  	int *rtag;
  	int *rlen;
  {
+ 	static int last_rbf = 0;
+ 
  	int rbf;
  	int cc = 0;
  	int l;
***************
*** 2236,2241 ****
--- 2249,2258 ----
  		len *= sizeof(double) * 2;
  		break;
  
+ 	case PVM_STR:
+ 		cc = PvmNotImpl;
+ 		break;
+ 
  	default:
  		cc = PvmBadParam;
  		break;
***************
*** 2242,2247 ****
--- 2259,2268 ----
  	}
  
  	if (!cc) {
+ 		if (last_rbf > 0) {
+ 			pvm_freebuf(last_rbf);
+ 			last_rbf = 0;
+ 		}
  		rbf = pvm_setrbuf(0);
  		cc = pvm_recv(tid, tag);
  		if (cc > 0) {
***************
*** 2251,2257 ****
  			if (l < len)
  				len = l;
  			pvm_upkbyte((char *)cp, len, 1);
! 			pvm_freebuf(cc);
  			cc = 0;
  		}
  		pvm_setrbuf(rbf);
--- 2272,2278 ----
  			if (l < len)
  				len = l;
  			pvm_upkbyte((char *)cp, len, 1);
! 			last_rbf = cc;
  			cc = 0;
  		}
  		pvm_setrbuf(rbf);
***************
*** 2367,2372 ****
--- 2388,2397 ----
  
  	case PVM_DCPLX:
  		len *= sizeof(double) * 2;
+ 		break;
+ 
+ 	case PVM_STR:
+ 		cc = PvmNotImpl;
  		break;
  
  	default:
*** ../netlib/pvm3.3.8/src/pvmd.c	Fri Jul 28 16:52:19 1995
--- src/pvmd.c	Tue Sep  5 15:22:20 1995
***************
*** 32,37 ****
--- 32,40 ----
   *	Mr. pvm daemon.
   *
  $Log: pvmd.c,v $
+  * Revision 1.39  1995/09/05  19:22:07  manchek
+  * forgot ifdef for SP2MPI
+  *
   * Revision 1.38  1995/07/28  20:52:01  manchek
   * missed changing src to pk_src in loclinpkt
   *
***************
*** 337,343 ****
   **           **
   ***************/
  
! static char rcsid[] = "$Id: pvmd.c,v 1.38 1995/07/28 20:52:01 manchek Exp $";
  static struct deaddata *deads = 0;	/* circ queue of dead task data */
  static char pvmtxt[512];		/* scratch for error log */
  static int ndead = 0;			/* len of deads */
--- 340,346 ----
   **           **
   ***************/
  
! static char rcsid[] = "$Id: pvmd.c,v 1.39 1995/09/05 19:22:07 manchek Exp $";
  static struct deaddata *deads = 0;	/* circ queue of dead task data */
  static char pvmtxt[512];		/* scratch for error log */
  static int ndead = 0;			/* len of deads */
***************
*** 2352,2358 ****
  		return -1;
  	}
  #endif
! #if defined(IMA_PGON) || defined(IMA_I860) || defined(IMA_CM5)
  	if (TIDISNODE(pp->pk_src))		/* from a node */
  		if (!(tp = task_find(pp->pk_src))) {
  			sprintf(pvmtxt, "loclinpkt() from unknown task t%x\n", pp->pk_src);
--- 2355,2361 ----
  		return -1;
  	}
  #endif
! #if defined(IMA_PGON) || defined(IMA_I860) || defined(IMA_CM5) || defined(IMA_SP2MPI)
  	if (TIDISNODE(pp->pk_src))		/* from a node */
  		if (!(tp = task_find(pp->pk_src))) {
  			sprintf(pvmtxt, "loclinpkt() from unknown task t%x\n", pp->pk_src);
***************
*** 2359,2365 ****
  			pvmlogerror(pvmtxt);
  			goto done;
  		}
! #endif	/*defined(IMA_PGON) || defined(IMA_I860) || defined(IMA_CM5)*/
  
  	/*
  	* if to multicast addr, replicate pkt in each q
--- 2362,2368 ----
  			pvmlogerror(pvmtxt);
  			goto done;
  		}
! #endif	/*defined(IMA_PGON) || defined(IMA_I860) || defined(IMA_CM5) || defined(IMA_SP2MPI)*/
  
  	/*
  	* if to multicast addr, replicate pkt in each q
*** ../netlib/pvm3.3.8/src/pvmdshmem.c	Tue Jul 25 13:37:01 1995
--- src/pvmdshmem.c	Thu Sep  7 13:37:03 1995
***************
*** 32,37 ****
--- 32,43 ----
   * Shared-memory MPP interface.
   *
  $Log: pvmdshmem.c,v $
+  * Revision 1.19  1995/09/05  19:24:05  manchek
+  * mpp_input copies all pages for now (in case sender task exits)
+  *
+  * Revision 1.19  1995/09/05  19:24:05  manchek
+  * mpp_input copies all pages for now (in case sender task exits)
+  *
   * Revision 1.18  1995/07/25  17:35:32  manchek
   * mpp_probe cancels retry to a task if not ready.
   * mpp_output returns success code
***************
*** 174,180 ****
   **           **
   ***************/
  
! static char rcsid[] = "$Id: pvmdshmem.c,v 1.18 1995/07/25 17:35:32 manchek Exp $";
  static char pvmtxt[512];		/* scratch for error log */
  static int inboxsz = 0;			/* size of incoming message buffer */
  static struct pkt *ovfpkts = 0;	/* packets waiting to be delivered */
--- 180,186 ----
   **           **
   ***************/
  
! static char rcsid[] = "$Id: pvmdshmem.c,v 1.19 1995/09/05 19:24:05 manchek Exp $";
  static char pvmtxt[512];		/* scratch for error log */
  static int inboxsz = 0;			/* size of incoming message buffer */
  static struct pkt *ovfpkts = 0;	/* packets waiting to be delivered */
***************
*** 503,514 ****
  		len = inmsgs[next].ph_len;
  
  		/*
! 		* must copy (for now) if forwarding to another local task
! 		* to own the page, even though we have a ph_sdr field.
! 		* sender may exit, taking pidtid entry, making peer_conn in dst fail.
! 		* really, only care if task is shared-memory connected.
  		*/
  		if (TIDISHERE(dst, pvmmytid) && TIDISTASK(dst)) {
  			pp = pk_new(len + MAXHDR);
  			pp->pk_dat += MAXHDR;
  			BCOPY(cp, pp->pk_dat, len);
--- 509,521 ----
  		len = inmsgs[next].ph_len;
  
  		/*
! 		* must copy all packets (for now).
! 		* sender may exit, and we don't check if we have page references
! 		* into a segment before we detach.
  		*/
+ /*
  		if (TIDISHERE(dst, pvmmytid) && TIDISTASK(dst)) {
+ */
  			pp = pk_new(len + MAXHDR);
  			pp->pk_dat += MAXHDR;
  			BCOPY(cp, pp->pk_dat, len);
***************
*** 515,520 ****
--- 522,528 ----
  			da_unref(buf);
  			cp = pp->pk_dat;
  
+ /*
  		} else {
  			pp = pk_new(0);
  			pp->pk_dat = cp;
***************
*** 521,526 ****
--- 529,535 ----
  			pp->pk_buf = buf;
  			pp->pk_max = ourudpmtu;
  		}
+ */
  		pp->pk_len = len;
  		pp->pk_src = src;
  		pp->pk_dst = dst;
*** ../netlib/pvm3.3.8/src/pvmshmem.c	Fri Jul 28 11:43:32 1995
--- src/pvmshmem.c	Thu Sep  7 13:38:30 1995
***************
*** 32,37 ****
--- 32,40 ----
   *  Shared-memory stuff.
   *
  $Log: pvmshmem.c,v $
+  * Revision 1.20  1995/09/07  17:38:27  manchek
+  * Add __synch() when releasing lock.
+  *
   * Revision 1.19  1995/07/28  15:42:45  manchek
   * _touch does all pages, uses PVMTOUCH envar to switch on
   *
***************
*** 153,159 ****
   **           **
   ***************/
  
! static char rcsid[] = "$Id: pvmshmem.c,v 1.19 1995/07/28 15:42:45 manchek Exp $";
  static char pvmtxt[512];			/* scratch for error log */
  static int nxtpage = 0;				/* next free page in outgoing msg buf */
  
--- 156,162 ----
   **           **
   ***************/
  
! static char rcsid[] = "$Id: pvmshmem.c,v 1.20 1995/09/07 17:38:27 manchek Exp $";
  static char pvmtxt[512];			/* scratch for error log */
  static int nxtpage = 0;				/* next free page in outgoing msg buf */
  
***************
*** 694,700 ****
  		sprintf(pvmtxt,"release_lock(): releasing %#x from %s line %d\n", vp,f,l);
  		pvmlogerror(pvmtxt);
  	}
! 
  	*(int *)vp = 1;
  	return 0;
  }
--- 697,703 ----
  		sprintf(pvmtxt,"release_lock(): releasing %#x from %s line %d\n", vp,f,l);
  		pvmlogerror(pvmtxt);
  	}
! 	__synch();
  	*(int *)vp = 1;
  	return 0;
  }
*** ../netlib/pvm3.3.8/src/task.c	Wed May 17 12:53:42 1995
--- src/task.c	Tue Sep  5 15:27:13 1995
***************
*** 32,37 ****
--- 32,40 ----
   *	Task descriptors.
   *
  $Log: task.c,v $
+  * Revision 1.8  1995/09/05  19:26:36  manchek
+  * clear wait WT_HOSTF in task_cleanup
+  *
   * Revision 1.7  1995/05/17  16:53:35  manchek
   * don't need mytid anymore
   *
***************
*** 104,110 ****
   **           **
   ***************/
  
! static char rcsid[] = "$Id: task.c,v 1.7 1995/05/17 16:53:35 manchek Exp $";
  static char pvmtxt[512];		/* scratch for error log */
  
  
--- 107,113 ----
   **           **
   ***************/
  
! static char rcsid[] = "$Id: task.c,v 1.8 1995/09/05 19:26:36 manchek Exp $";
  static char pvmtxt[512];		/* scratch for error log */
  
  
***************
*** 442,447 ****
--- 445,451 ----
  			if (wp->wa_tid == tp->t_tid) {
  				switch (wp->wa_kind) {
  
+ 				case WT_HOSTF:
  				case WT_TASKSTART:
  					wp2 = wp;				/* some kinds we can toss now */
  					wp = wp->wa_rlink;
*** ../netlib/pvm3.3.8/tasker/Makefile.aimk	Tue Jul  5 11:15:56 1994
--- tasker/Makefile.aimk	Wed Sep  6 13:49:05 1995
***************
*** 6,11 ****
--- 6,12 ----
  #  ARCHCFLAGS = special cc flags
  #  ARCHLIB    = special libs needed for daemon
  #
+ SHELL	=	/bin/sh
  PVMIDIR	=	../../include
  PVMLDIR	=	../../lib/$(PVM_ARCH)
  PVMLIB	=	-lpvm3
*** ../netlib/pvm3.3.8/xep/Makefile.aimk	Thu May 26 22:36:37 1994
--- xep/Makefile.aimk	Wed Sep  6 13:49:08 1995
***************
*** 6,11 ****
--- 6,12 ----
  #  ARCHCFLAGS = special cc flags
  #  ARCHLIB    = special libs needed for daemon
  #
+ SHELL	=	/bin/sh
  PVMIDIR	=	../../include
  PVMLDIR	=	../../lib/$(PVM_ARCH)
  PVMLIB	=	-lpvm3
