#! /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 'pvm2.4/Files' <<'END_OF_FILE' XFiles Makefile Readme UpdMakfs aimk chol/cholhost.c chol/cholnode.c chol/makefile doc/Arches doc/FAQ doc/MsgFormats doc/PvmPic doc/Version f2c/CRAY/Makefile f2c/CRAYSMP/Makefile f2c/HP9K/Makefile f2c/I860/Makefile f2c/Makefile.body f2c/Makefile.custom f2c/NEXT/Makefile f2c/PMAX/Makefile f2c/RIOS/Makefile f2c/Readme f2c/SUN3/Makefile f2c/SUN4/Makefile f2c/fbarrier.c f2c/fenroll.c f2c/fgetbytes.c f2c/fgetncplx.c f2c/fgetndcplx.c f2c/fgetndfloat.c f2c/fgetnfloat.c f2c/fgetnint.c f2c/fgetnlong.c f2c/fgetnshort.c f2c/fgetstring.c f2c/fgetstringl.c f2c/finithow.c f2c/finitiate.c f2c/finitiatem.c f2c/finitsend.c f2c/fleave.c f2c/fprobe.c f2c/fprobemulti.c f2c/fpstatus.c f2c/fputbytes.c f2c/fputncplx.c f2c/fputndcplx.c f2c/fputndfloat.c f2c/fputnfloat.c f2c/fputnint.c f2c/fputnlong.c f2c/fputnshort.c f2c/fputstring.c f2c/fputstringl.c f2c/fpvmperror.c f2c/frcv.c f2c/frcvinfo.c f2c/frcvmulti.c f2c/fready.c f2c/fsnd.c f2c/fstatus.c f2c/fterminate.c f2c/fvrcv.c f2c/fvrcvmulti.c f2c/fvsnd.c f2c/fwaituntil.c f2c/fwhoami.c f2c/namefix.h f2c/nulfix.h fort_examp/CRAY/Makefile fort_examp/HP9K/Makefile fort_examp/Makefile.body fort_examp/PMAX/Makefile fort_examp/RIOS/Makefile fort_examp/RT/Makefile fort_examp/Readme fort_examp/SGI/Makefile fort_examp/SUN3/Makefile fort_examp/SUN4/Makefile fort_examp/SYMM/Makefile fort_examp/TITN/fhost.f fort_examp/TITN/makefile fort_examp/TITN/node.f fort_examp/fhost.f fort_examp/node.f libfpvm/BALANCE/BALANCE.m4 libfpvm/BALANCE/Makefile libfpvm/CRAY/CRAY.m4 libfpvm/CRAY/Makefile libfpvm/HP9K/HP9K.m4 libfpvm/HP9K/Makefile libfpvm/I860/I860.m4 libfpvm/I860/Makefile libfpvm/Makefile.body libfpvm/Makefile.custom libfpvm/NEXT/Makefile libfpvm/NEXT/NEXT.m4 libfpvm/PMAX/Makefile libfpvm/PMAX/PMAX.m4 libfpvm/RIOS/Makefile libfpvm/RIOS/RIOS.m4 libfpvm/RT/Makefile libfpvm/RT/RT.m4 libfpvm/Readme libfpvm/SGI/Makefile libfpvm/SGI/SGI.m4 libfpvm/SUN3/Makefile libfpvm/SUN3/SUN3.m4 libfpvm/SUN4/Makefile libfpvm/SUN4/SUN4.m4 libfpvm/SYMM/Makefile libfpvm/SYMM/SYMM.m4 libfpvm/TITN/Makefile libfpvm/TITN/TITN.m4 libfpvm/U370/Makefile libfpvm/U370/U370.m4 libfpvm/UVAX/Makefile libfpvm/UVAX/UVAX.m4 libfpvm/fbarrier.m4 libfpvm/fenroll.m4 libfpvm/fgetbytes.m4 libfpvm/fgetncplx.m4 libfpvm/fgetndcplx.m4 libfpvm/fgetndfloat.m4 libfpvm/fgetnfloat.m4 libfpvm/fgetnint.m4 libfpvm/fgetnlong.m4 libfpvm/fgetnshort.m4 libfpvm/fgetstring.m4 libfpvm/finithow.m4 libfpvm/finitiate.m4 libfpvm/finitiatem.m4 libfpvm/finitsend.m4 libfpvm/fleave.m4 libfpvm/fprobe.m4 libfpvm/fprobemulti.m4 libfpvm/fpstatus.m4 libfpvm/fputbytes.m4 libfpvm/fputncplx.m4 libfpvm/fputndcplx.m4 libfpvm/fputndfloat.m4 libfpvm/fputnfloat.m4 libfpvm/fputnint.m4 libfpvm/fputnlong.m4 libfpvm/fputnshort.m4 libfpvm/fputstring.m4 libfpvm/fpvmperror.m4 libfpvm/frcv.m4 libfpvm/frcvinfo.m4 libfpvm/frcvmulti.m4 libfpvm/fready.m4 libfpvm/fsnd.m4 libfpvm/fstatus.m4 libfpvm/fterminate.m4 libfpvm/ftocstr.c libfpvm/fvrcv.m4 libfpvm/fvrcvmulti.m4 libfpvm/fvsnd.m4 libfpvm/fwaituntil.m4 libfpvm/fwhoami.m4 libfpvm/pvm_consts.h man/MkZeroes man/man1/pvm_intro.1 man/man1/pvmd.1 man/man3/barrier.3 man/man3/enroll.3 man/man3/get.3 man/man3/initiate.3 man/man3/initsend.3 man/man3/leave.3 man/man3/libpvm.3 man/man3/probe.3 man/man3/pstatus.3 man/man3/put.3 man/man3/pvm_mstat.3 man/man3/pvm_perror.3 man/man3/rcv.3 man/man3/rcvinfo.3 man/man3/ready.3 man/man3/snd.3 man/man3/status.3 man/man3/terminate.3 man/man3/vrcv.3 man/man3/vsnd.3 man/man3/waituntil.3 man/man3/whoami.3 mandel/Makefile mandel/Readme mandel/mandel_main.c mandel/mandel_tile.c mandel/xpx.c src/AFX8/Makefile src/ALPHA/Makefile src/BFLY/Makefile src/C2MP/Makefile src/C2MPCXFP/Makefile src/CM2/Makefile src/CM5/Makefile src/CRAY/Makefile src/CRAYSMP/Makefile src/DGAV/Makefile src/HP9K/Makefile src/I386/Makefile src/I860/Makefile src/IPSC/Makefile src/KSR1/Makefile src/Makefile.body src/Makefile.custom src/NEXT/Makefile src/PMAX/Makefile src/RIOS/Makefile src/RT/Makefile src/SGI/Makefile src/SUN3/Makefile src/SUN3_3_5/Makefile src/SUN4/Makefile src/SYMM/Makefile src/TITN/Makefile src/UVAX/Makefile src/VCM2/Makefile src/archequiv.c src/cmd.c src/craypatch.h src/crunch.c src/fdsetpatch.h src/global.h src/host.c src/imalloc.c src/loclcomm.c src/loclcomm.h src/micomm.c src/micomm.h src/netside.c src/proc.c src/proc.h src/putenv.c src/pvmd.c src/pvmd.h src/pvmuser.h src/rem.h src/startup.c src/sunos3patch.h src/titanpatch.h src/ulib.c src/uliberr.c src/uside.c src/util.c src/wait.c src/wait.h src/xenixpatch.h tsts/Makefile tsts/Readme tsts/askinit.c tsts/barrtest.c tsts/check.c tsts/check_slave.c tsts/conf.c tsts/enrolltest.c tsts/timing.c tsts/timing_slave.c tsts/whome.c END_OF_FILE if test 4638 -ne `wc -c <'pvm2.4/Files'`; then echo shar: \"'pvm2.4/Files'\" unpacked with wrong size! fi # end of 'pvm2.4/Files' fi if test -f 'pvm2.4/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/Makefile'\" else echo shar: Extracting \"'pvm2.4/Makefile'\" \(514 characters\) sed "s/^X//" >'pvm2.4/Makefile' <<'END_OF_FILE' X# X# Top-level makefile for PVM X# ARCH = UNKNOWN X default: s f X all: s f oldf X tidy: X cd src ; ../aimk tidy X cd libfpvm ; ../aimk tidy X cd f2c ; ../aimk tidy X clean: X cd src ; ../aimk clean X cd libfpvm ; ../aimk clean X cd f2c ; ../aimk clean X X# X# targets called when running "make" X# X s: X ./aimk -here i_s X f: X ./aimk -here i_f X oldf: X ./aimk -here i_oldf X X# X# targets when running "aimk" (run by make) X# X i_s: $(LIBDIR) X cd src ; ../aimk X i_f: $(LIBDIR) X cd libfpvm ; ../aimk X i_oldf: $(LIBDIR) X cd f2c ; ../aimk X END_OF_FILE if test 514 -ne `wc -c <'pvm2.4/Makefile'`; then echo shar: \"'pvm2.4/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/Makefile' fi if test -f 'pvm2.4/Readme' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/Readme'\" else echo shar: Extracting \"'pvm2.4/Readme'\" \(7891 characters\) sed "s/^X//" >'pvm2.4/Readme' <<'END_OF_FILE' X Readme file for PVM Version 2.4.2 X22 Dec 1992 X PVM - Parallel Virtual Machine University of Tennessee, Knoxville, TN. Oak Ridge National Laboratory, Oak Ridge, TN. XEmory University, Atlanta, GA. X X________________________________________________________________________ NOTE X This version (2.4.2) is semi-compatible with version 2.4.1. Pvmds of the two versions should interoperate correctly. Programs linked with one version of the library will not work with a (local) pvmd of the other however. This is because the libpvm-pvmd protocol has changed. X X________________________________________________________________________ UNPACKING X This directory should be available at ~/pvm. Make a symlink: X X cd ; ln -s pvm2.4 pvm X The doc directory contains a few files describing PVM design and implementation. X The src directory contains source code for the PVM daemon (pvmd) and C programming library (libpvm.a). There are subdirs in src named for machines (SUN4, PMAX, etc), with makefiles for specific architectures. X The libfpvm directory contains code for a Fortran programming library, which when used with the C library allows one to link Fortran programs with PVM. This library should be used instead of the old f2c library. It handles Fortran strings correctly (the trailing '\0' is no longer required). X The f2c directory contains source for the old Fortran library that doesn't work very well, but may still be useful. X The man directory contains source for manual pages on the PVM system and C programming library. The remaining directories contain source for simple example programs. X X________________________________________________________________________ BUILDING X Just type "make" in this directory to build pvmd, libpvm.a, and libfpvm.a. If that doesn't work, keep reading. X Check in the src directory for a subdirectory named for your machine. Check the doc/Arches file if you can't guess the name. If the correct one does not exist, you will have to make a new directory. The name choice is arbitrary, but should be concise and accurate (PVM will be using the name to identify the machine type it is running on). X Note: If you are running on a group of similar machines, but which have different operating system versions installed (f.e. SunOS4.0 vs. X4.1), binary executables may not be compatible across the entire group due to shared library differences or incompatible system calls. In this case you will need to define different architecture names to distinguish the correct executables. So, instead of architecture type X"SUN4" you might have "SUN4-4.0" and "SUN4-4.1". X If you need to make an architecture directory, follow these steps: X X + mkdir NAME X + cp Makefile.generic NAME/Makefile X + cd NAME X + vi Makefile X When customizing the Makefile, the only thing you definitely have to set is the ARCH definition. You may additionally need to define certain switches from the list given, or compiler/loader flags. X To make the PVM daemon (pvmd) and user library (libpvm.a), type X"make" in the appropriate subdirectory of src. X Check out the "aimk" program in this directory. This is a shell script that automatically sets the ARCH environment variable to the appropriate PVM machine type and then calls make. You can use it to build the pvm distribution (by typing only "cd src;aimk"). It can also be used to build your applications without the need for architecture-specific subdirectories or separate makefiles. It also sets the environment variable PVMLFLAGS, which can be used to include libraries needed by libpvm. X X________________________________________________________________________ INSTALLATION X The PVM daemon (pvmd) file should be named "/tmp/pvm/pvmd" so that the master pvmd can find it. If necessary, you can give the master an alternate path to use. Check the manual page for pvmd. X X________________________________________________________________________ WRITING APPLICATIONS X Syntax and semantics of the library functions are described in the manual pages in man/. User code must be linked with libpvm.a (in the machine-architecture src directory), and possibly with other libraries X(check doc/Arches for notes about this). X Your executables should be in directory ~/pvm/NAME/ (where NAME is the PVM name for an architecture) on each host in order for the pvmd to find them. You can change the default path if you wish; check the pvmd manual page. X Check out the makefile in mandel/ for a simple example of how to write a machine-independent makefile to use with "aimk". X In the directories chol/ , fort_examp/ , mandel/ , and tsts/ are some applications that demonstrate how to write simple PVM programs. X X________________________________________________________________________ OPERATION X Before you can run any PVM applications, you must start the pvm daemon(s), one on each machine in the group of hosts you want to use. The "master" pvmd is started manually on one host, and it uses rexec() or rsh to start the "slave" pvmds on the rest. X Make a file called "myhosts" (or whatever) that contains the names of all the hosts in the group, one per line. The host running the "master" pvmd must be the first one in the file. Lines in the host file beginning with '#' are ignored. Host names should be fully qualified DOMAIN names, to avoid confusion, f.e.: X X thud.cs.utk.edu X gus.epm.ornl.gov X You will need to have a .rhosts file on each machine running a slave pvmd. They should contain the hostname of the machine running the master. X Start the pvmds with "/tmp/pvm/pvmd myhosts". The master pvmd will start up all the slaves. X If for some reason, you can't or don't want to use .rhosts files for some of the machines, you will have to type your password when starting up pvm. Append the word 'pw' to entries for those machines in you host file. For example: X X thud.cs.utk.edu X gus.epm.ornl.gov X rx.epm.ornl.gov pw X Once all the pvmds are running you may start pvm client programs. X Normally, pvmd runs in the background, and requires no input once it has started up the slave pvmds. If "-i" is specified on the command line, however, the master pvmd will provide a command mode, which allows the user to interactively monitor and control the pvmd. X To shut off PVM, kill the master pvmd. It will kill the slave daemons, and any processes initiated by them. X Currently, standard out and standard error streams of the slave pvmds (and client programs they initiate) are passed back to the master pvmd and then to its standard out. X X________________________________________________________________________ XFILES AND DIRECTORIES X X Readme This file X aimk Script to determine machine type and run make X doc/Arches List of architecture ports X doc/FAQ Answers to frequently asked questions X doc/PvmPic Sketch of PVM system organization (Postscript) X doc/Version Terse description of changes between releases X man/ Manual pages for Daemon and User Library X src/ Source for the PVM system X f2c/ Fortran user lib interface (old, cruddy) X libfpvm/ A much better Fortran user lib interface X chol/ Example PVM application (Cholesky factorization) X fort_examp/ A simple example in fortran X mandel/ Another example (Mandelbrot set calculation) X tsts/ Some simple test programs X X /tmp/pvm/pvmd The default pvmd executable (installed on every machine) X ~/pvm/ARCH/ Where user executables go (for machine type ARCH) X X________________________________________________________________________ QUESTIONS X If you have problems using PVM, check the FAQ file in doc/FAQ. If this doesn't help, send mail to the address below. X X________________________________________________________________________ CONTACT X Please direct any email (questions, bug fixes, etc) to: X X pvm@msr.EPM.ORNL.GOV. X END_OF_FILE if test 7891 -ne `wc -c <'pvm2.4/Readme'`; then echo shar: \"'pvm2.4/Readme'\" unpacked with wrong size! fi # end of 'pvm2.4/Readme' fi if test -f 'pvm2.4/UpdMakfs' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/UpdMakfs'\" else echo shar: Extracting \"'pvm2.4/UpdMakfs'\" \(298 characters\) sed "s/^X//" >'pvm2.4/UpdMakfs' <<'END_OF_FILE' X#!/bin/csh -f X# X# Rewrite all subdir makefiles with new generic body X set files=(*/Makefile) X foreach x ($files) X echo $x X rm -f $x'-' X mv $x $x'-' X# head -12 $x'-' | cat - Makefile.body > $x X awk '{print}/^# END of custom section/{exit(0)}' $x'-' | \ X cat - Makefile.body > $x X chmod 444 $x end X END_OF_FILE if test 298 -ne `wc -c <'pvm2.4/UpdMakfs'`; then echo shar: \"'pvm2.4/UpdMakfs'\" unpacked with wrong size! fi chmod +x 'pvm2.4/UpdMakfs' # end of 'pvm2.4/UpdMakfs' fi if test -f 'pvm2.4/aimk' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/aimk'\" else echo shar: Extracting \"'pvm2.4/aimk'\" \(3373 characters\) sed "s/^X//" >'pvm2.4/aimk' <<'END_OF_FILE' X#!/bin/csh -fb X# X# aimk [-here] [-nomk] [ make args ... ] X# X# Architecture Dependent Make Facility. Automatically sets PVM X# machine-type for make to use. X# X# This is a heuristic thing that may need to be tuned from time X# to time. I don't know of a real solution to determining the X# machine type. Claims to pick one of: X# ALPHA, AFX8, BFLY, C2MP, CM2, CM5, CRAY, CRAYSMP, HP300, HP9K, I386, I860, X# KSR1, NEXT, PMAX, RIOS, SGI, SUN2, SUN3, SUN4, SYMM, TITN, UVAX, VAX, X# UNKNOWN X# Need to do: X# IPSC X# X# Aimk exports environment variables that can be used in makefiles X# ARCH = the selected architecture X# PVMLFLAGS = loader flags needed when using libpvm X# X# Notes: X# 1. The output of things like uname seems to change from time to time. X# 2. Local people mess with things. X# 3. It's good to try a few things for robustness. X# X# 22 Jul 1991 Robert Manchek manchek@CS.UTK.EDU. X# X set noglob X unset makeincwd unset nomk set found while ($#argv >= 1 && $?found) X switch ("$argv[1]") X case "-here": X set makeincwd X set argv=($argv[2-]) X breaksw X case "-nomk": X set nomk X set argv=($argv[2-]) X breaksw X default: X unset found X breaksw X endsw end X X# X# begin section that may need to be tuned. X# set ARCH=UNKNOWN X if (-x /bin/uname) then X set os="`/bin/uname -s`" X set ht="`/bin/uname -m`" X set osht="$os,$ht" X X switch ("$osht") X case SunOS,sun3*: X set ARCH=SUN3 X breaksw X case SunOS,sun4*: X set ARCH=SUN4 X breaksw X case ULTRIX,RISC: X set ARCH=PMAX X breaksw X case ULTRIX,VAX: X set ARCH=UVAX X breaksw X case AIX,*: X set ARCH=RIOS X breaksw X case *,9000/*: X set ARCH=HP9K X breaksw X case IRIX,*: X case IRIX,*: X set ARCH=SGI X breaksw X case *,alpha: X set ARCH=ALPHA X breaksw X case CRSOS,smp: X set ARCH=CRAYSMP X breaksw X endsw endif X if ($ARCH != UNKNOWN) goto endarch if (-x /bin/arch) then X switch (`/bin/arch`) X case ksr1: X set ARCH=KSR1 X breaksw X case sun2: X set ARCH=SUN2 X breaksw X case sun3: X set ARCH=SUN3 X breaksw X case sun4: X set ARCH=SUN4 X default: X breaksw X endsw endif X if ($ARCH == SUN4 && -e /dev/cm) set ARCH=CM2 if ($ARCH == SUN4 && -e /dev/cmni) set ARCH=CM5 if (-e /usr/bin/getcube) set ARCH=I860 X if ($ARCH != UNKNOWN) goto endarch if (-e /ultrixboot) then X if (-e /pcs750.bin) then X set ARCH=UVAX X else X set ARCH=PMAX X endif else X if (-e /pcs750.bin) set ARCH=VAX endif if (-e /hp-ux) set ARCH=HP300 if (-e /etc/vg) set ARCH=RIOS if (-e /dynix) set ARCH=SYMM if (-e /bin/titan) set ARCH=TITN if (-e /unicos) set ARCH=CRAY if (-e /usr/bin/cluster) set ARCH=BFLY if (-e /usr/bin/asm56000) set ARCH=NEXT if (-e /usr/convex) set ARCH=C2MP if (-e /usr/alliant) set ARCH=AFX8 if (-d /usr/include/caif) set ARCH=RT if (-x /usr/bin/machine) then X switch (`/usr/bin/machine`) X case i386: X set ARCH=I386 X breaksw X default: X breaksw X endsw endif X endarch: X X# X# ugh, done. X# X X# X# get lflags X# X switch ($ARCH) case I386: X setenv PVMLFLAGS -lrpc X breaksw X case I860: case IPSC: X setenv PVMLFLAGS "-lrpc -lsocket" X breaksw X case SGI: X setenv PVMLFLAGS -lsun X breaksw X default: X set PVMLFLAGS endsw X X# X# run make in cwd or subdir if exists. X# X if ($?nomk) then X echo $ARCH X exit 0 endif X if (! $?makeincwd && -d $ARCH) then X echo making in $ARCH/ for $ARCH X (cd $ARCH; make ARCH=$ARCH "PVMLFLAGS=$PVMLFLAGS" $argv) else X echo making in . for $ARCH X make ARCH=$ARCH "PVMLFLAGS=$PVMLFLAGS" $argv endif X echo done. exit 0 X END_OF_FILE if test 3373 -ne `wc -c <'pvm2.4/aimk'`; then echo shar: \"'pvm2.4/aimk'\" unpacked with wrong size! fi chmod +x 'pvm2.4/aimk' # end of 'pvm2.4/aimk' fi if test ! -d 'pvm2.4/chol' ; then echo shar: Creating directory \"'pvm2.4/chol'\" mkdir 'pvm2.4/chol' fi if test -f 'pvm2.4/chol/cholhost.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/chol/cholhost.c'\" else echo shar: Extracting \"'pvm2.4/chol/cholhost.c'\" \(2310 characters\) sed "s/^X//" >'pvm2.4/chol/cholhost.c' <<'END_OF_FILE' X#include X#include X X/* X Host program driver for column Cholesky factorization X of a symmetric matrix partitioned by vertical strips X USAGE: cholhost X*/ X main(argc,argv) int argc; char **argv; X/* host process */ X{ X char temp[32]; X int tmp; X float f0, f1[4], err, secs[4], mflops[3], eff[3] ; X int info[3], *map ; X int me, p, n, blksize, i, j, nprocs; X X if (argc < 4) { X printf("Usage: cholhost #procs N blksize \n"); X exit(0); X } X nprocs = atoi(*++argv); X p = nprocs; X n = atoi(*++argv); X if (n < p) { X printf("Problem size (%d) < nprocs (%d)\n",n,p); X exit(1); X } X blksize = atoi(*++argv); X if (blksize > n/p) blksize = n/p ; X X me = enroll("cholhost"); X for (i=0;i err) err=f0; X } X printf("maxerr\t%e\n", err) ; X X for (i=0;i<4;i++) secs[i]=0.0; X X for (i=0;i secs[j]) secs[j] = f1[j]; X } X X printf(" \t factor\t fsolve\t bsolve\t total\n") ; X printf("secs \t%7.2f\t%7.2f\t%7.2f\t%7.2f\n", secs[0], secs[1], X secs[2], secs[3]) ; X free(map) ; X X leave(); X} END_OF_FILE if test 2310 -ne `wc -c <'pvm2.4/chol/cholhost.c'`; then echo shar: \"'pvm2.4/chol/cholhost.c'\" unpacked with wrong size! fi # end of 'pvm2.4/chol/cholhost.c' fi if test -f 'pvm2.4/chol/cholnode.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/chol/cholnode.c'\" else echo shar: Extracting \"'pvm2.4/chol/cholnode.c'\" \(5165 characters\) sed "s/^X//" >'pvm2.4/chol/cholnode.c' <<'END_OF_FILE' X#include X#include X X/* X Node program for column Cholesky factorization of X a symmetric matrix partitioned by vertical strips X using synchronous fan-out broadcast communication X*/ X main() X/* node process */ X{ X char temp[32]; X int tmp; X long ti[8] ; X int n, i, ncols, p, me, alg, *map, *mycols, info[3] ; X float *b, **col, tm[4], err, maxerr ; X X me=enroll("cholnode"); X X whoami(temp,&tmp); X fprintf(stderr, "I am %s, instance %d\n",temp,tmp); X X#ifdef USE_VC X vrcv(16001); X#else X rcv(16001); X#endif X ti[6] = time(0); X getnint(info,3); X X n = info[0] ; X alg = info[1] ; X p = info[2]; X if (n == 0 || n < p) { X fprintf(stderr,"Node no %d : n=%d; p=%d\n",me,n,p); X exit(1); X } X map = (int *)malloc(n*sizeof(int)) ; X X#ifdef USE_VC X vrcv(16002); X#else X rcv(16002); X#endif X getnint(map,n); X fprintf(stderr, "Received 16002\n"); X X ncols = 0 ; X for ( i = 0 ; i < n; i++ ) if (map[i] == me) ncols++ ; X X /* allocate storage */ X mycols = (int *)malloc(ncols*sizeof(int)) ; X b = (float *)malloc(ncols*sizeof(float)) ; X col = (float * *)malloc(ncols*sizeof(float *)) ; X X /* set up data structures for problem to be solved */ X prob1(me, n, ncols, map, mycols, col, b) ; X X /* Cholesky factorization - fan-out synchronous algorithm */ X ti[0] = time(0); X cholfo(n, ncols, map, mycols, col, me, p) ; X ti[1] = time(0); X X /* forward substitution */ X ti[2] = time(0); X forsub(n, ncols, map, mycols, col, b, me,p) ; X ti[3] = time(0); X X /* back substitution */ X ti[4] = time(0); X backsub(n, ncols, map, mycols, col, b, me,p) ; X ti[5] = time(0); X X /* compute maximum error in solution and send to cholhost */ X maxerr = 0 ; X for ( i = 0 ; i < ncols ; i++ ) { X err = b[i] ; X err -= mycols[i]+1 ; X maxerr = maxerr < fabs(err) ? fabs(err) : maxerr ; X } X initsend(); X putnfloat(&maxerr,1); X#ifdef USE_VC X vsnd("cholhost",0,16003); X#else X snd("cholhost",0,16003); X#endif X X /* send local times to host */ X ti[7] = time(0); X initsend(); X for ( i = 0 ; i < 4 ; i++ ) { X tm[i] = ti[2*i+1]-ti[2*i] ; X putnfloat(&tm[i],1); X } X#ifdef USE_VC X vsnd("cholhost",0,16004); X#else X snd("cholhost",0,16004); X#endif X X /* free storage */ X for ( i = 0 ; i < ncols ; i++ ) free(col[i]) ; X free(col) ; X free(b) ; X free(mycols) ; X free(map) ; X X leave(); X exit(0); X} X X prob1 ( me, n, ncols, map, mycols, col, b ) X int me, n, ncols, *map, *mycols ; X float **col, *b ; X X/* X * Set up data structures for problem to be solved X */ X{ X int i, j, k ; X float *p, t ; X X j = 0 ; X for ( k = 0 ; k < n ; k++ ) X if ( map[k] == me ) { X p = (float *)malloc((n-k)*sizeof(float)) ; X col[j] = p ; X mycols[j] = k ; X j++ ; X if ( k == 0 ) { X t = n ; X *p++ = t*(t+1)/2 ; X for ( i = 1 ; i < n ; i++ ) *p++ = -1 ; X } X else { X *p++ = 2 ; X for ( i = 1 ; i < n-k ; i++ ) *p++ = 0 ; X } X } X for ( i = 0 ; i < ncols ; i++ ) b[i] = 2*mycols[i]+1 ; X} X cholfo ( n, ncols, map, mycols, col ,me,nprocs) X int n, ncols, *map, *mycols ,me; X float **col ; X int nprocs; X X/* synchronous Cholesky factorization */ X{ X int i, j, k ; X float t, *p, *q, *colk ; X X colk = (float *)malloc(n*sizeof(float)) ; X j = 0 ; X for ( k = 0 ; k < n ; k++ ) { X if (map[k] == me) { X t = 1.0/sqrt(*col[j]) ; X for ( p = col[j] , q = colk ; p < col[j]+n-mycols[j] ; X p++ , q++ ) { X *p *= t ; X *q = *p ; X } X j++ ; X } X if (map[k] == me) { X if (nprocs > 1) { X initsend(); X putnfloat(colk,(n-k)); X#ifdef USE_VC X vsnd("cholnode",-1,k); X#else X snd("cholnode",-1,k); X#endif X } X } X else { X#ifdef USE_VC X vrcv(k); X#else X rcv(k); X#endif X getnfloat(colk,(n-k)); X } X X for ( i = j ; i < ncols ; i++ ) { X for ( p = col[i] , q = colk+mycols[i]-k , t = *q ; X p < col[i]+n-mycols[i] ; p++ , q++ ) X *p -= *q * t ; X } X } X free(colk) ; X} X X forsub ( n, ncols, map, mycols, col, b ,me,nprocs) X int me, n, ncols, *map, *mycols ; X float **col, *b ; X int nprocs; X X/* lower triangular forward solve */ X/* column-oriented fan-in algorithm */ X X{ X int i, j, k ; X float t ,t2; X X j = 0 ; X if (map[0] == me) { X b[j] /= *col[j] ; X j++ ; X } X for ( k = 1 ; k < n ; k++ ) { X t = 0 ; X for ( i = 0 ; i < j ; i++ ) t += b[i] * *(col[i]+k-mycols[i]) ; X if (map[k] == me) { X for (i=0;i<(nprocs-1);i++) { X#ifdef USE_VC X vrcv(k); X#else X rcv(k); X#endif X getnfloat(&t2,1); X t+=t2; X } X } X else { X initsend(); X putnfloat(&t,1); X#ifdef USE_VC X vsnd("cholnode",map[k],k); X#else X snd("cholnode",map[k],k); X#endif X } X X if (map[k] == me) { X b[j] -= t ; X b[j] /= *col[j] ; X j++ ; X } X } X} X X backsub ( n, nrows, map, myrows, row, b ,me, nprocs) X int me, n, nrows, *map, *myrows ; X float **row, *b ; X int nprocs; X X/* upper triangular backward solve */ X/* row-oriented fan-out algorithm */ X X{ X int host, dir, i, j, k ; X float x ; X X j = nrows-1 ; X for ( k = n-1 ; k > 0 ; k-- ) { X if (map[k] == me) { X b[j] /= *row[j] ; X x = b[j] ; X j-- ; X } X if (map[k] == me) { X initsend(0); X putnfloat(&x,1); X#ifdef USE_VC X vsnd("cholnode",-1,k); X#else X snd("cholnode",-1,k); X#endif X } X else { X#ifdef USE_VC X vrcv(k); X#else X rcv(k); X#endif X getnfloat(&x,1); X } X for ( i = j ; i >= 0 ; i-- ) b[i] -= x * *(row[i]+k-myrows[i]) ; X } X if (map[0] == me) b[j] /= *row[j] ; X} X END_OF_FILE if test 5165 -ne `wc -c <'pvm2.4/chol/cholnode.c'`; then echo shar: \"'pvm2.4/chol/cholnode.c'\" unpacked with wrong size! fi # end of 'pvm2.4/chol/cholnode.c' fi if test -f 'pvm2.4/chol/makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/chol/makefile'\" else echo shar: Extracting \"'pvm2.4/chol/makefile'\" \(400 characters\) sed "s/^X//" >'pvm2.4/chol/makefile' <<'END_OF_FILE' X# X#ARCH = WHATAMI X PLIB = ../src/$(ARCH)/libpvm.a IDIR = ../$(ARCH) SDIR = . X CC = cc CFLAGS = -g -DUSE_VC X#CFLAGS = LIBS = X all: cholhost cholnode X cholhost: $(SDIR)/cholhost.c $(PLIB) X $(CC) $(CFLAGS) -o cholhost $(SDIR)/cholhost.c $(PLIB) $(LIBS) X mv cholhost $(IDIR) X cholnode: $(SDIR)/cholnode.c $(PLIB) X $(CC) $(CFLAGS) -o cholnode $(SDIR)/cholnode.c $(PLIB) $(LIBS) -lm X mv cholnode $(IDIR) X END_OF_FILE if test 400 -ne `wc -c <'pvm2.4/chol/makefile'`; then echo shar: \"'pvm2.4/chol/makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/chol/makefile' fi if test ! -d 'pvm2.4/doc' ; then echo shar: Creating directory \"'pvm2.4/doc'\" mkdir 'pvm2.4/doc' fi if test -f 'pvm2.4/doc/Arches' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/doc/Arches'\" else echo shar: Extracting \"'pvm2.4/doc/Arches'\" \(2795 characters\) sed "s/^X//" >'pvm2.4/doc/Arches' <<'END_OF_FILE' X Architecture list for PVM Version 2.4.1 X22 Dec 1992 X X________________________________________________________________________ X X PVM name Machine X -------- ------- X AFX8 Alliant FX/8 X ALPHA DEC/Alpha X BFLY BBN Butterfly TC2000 X C2MP Convex using IEEE floating-point X C2MPCXFP Convex using native f.p. X CM2 Thinking Machines CM-2 Sun front [5] X CM5 Thinking Machines CM-5 X CRAY Cray X CRAYSMP Cray S-MP X DGAV Data General Aviion [7] X HP9K HP 9000 (Snake) X KSR1 Kendall Square X I386 80[34]86 running BSDI [6] X I860 Intel RX Hypercube [4] X IPSC Intel IPSC/2 X NEXT NeXT X PMAX DEC/Mips arch (3100, 5000, etc.) X RIOS IBM/RS6000 X RT IBM/RT X SGI Silicon Graphics IRIS [3] X SUN3 Sun 3 [2] X SUN4 Sun 4, 4c, sparc, etc. X SYMM Sequent Symmetry X TITN Stardent Titan [1] X UVAX DEC/Microvax X VCM2 Thinking Machines CM-2 Vax front [5] X X[7] I'm told it works with DG/UX 5.4.1, haven't seen it in person. X X[6] Add "-lrpc" to loader libs when using libpvm. X - rexec() doesn't exist, so startup is restricted to the rsh method. X - XDR routines for floats and double floats don't exist, so they X were faked using the one for long ints. This should work. X X[5] In v2.4.1, equated CM2 (SUN4) data format to all other IEEE machines. X X[4] Add "-lrpc -lsocket" to loader libs when using libpvm. X X[3] Add "-lsun" to loader libs when using libpvm. X If using YP, may have to add "-lsun" to ARCHDLIBS in Makefile. X X[2] Works fine under SunOS 4.[01] X Had some problems with 3.x and ran out of time, so the stuff X isn't officially included. X X Problems were: X - h_addr_list[0] should change to h_addr in pvmd.c This is X backwards compatible on most machines so could be left that X way. X X - can't setsockopt(SO_SNDBUF), and the man page for udp(4) X says that changing the buffer size via ioctl() isn't X supported. :-) So just #ifdef it out in pvmd.c and ulib.c. X X[1] Now 'ported', but very untested. Have fun. X The f2c library probably will not work, as Fortran string args X are not compatible with C on a Titan. X X Problems were: X - rexec() doesn't exist, so startup is restricted to the rsh X method. Had to #ifdef out the rexec stuff in pvmd.c X X - Couldn't get setsockopt() to work. #ifdef'ed it out in X pvmd.c and ulib.c. X X - select() is somewhat broken. If you call it with X FD_SETSIZE you lose. Solution was to find the max X open fd and use that as the size. X END_OF_FILE if test 2795 -ne `wc -c <'pvm2.4/doc/Arches'`; then echo shar: \"'pvm2.4/doc/Arches'\" unpacked with wrong size! fi # end of 'pvm2.4/doc/Arches' fi if test -f 'pvm2.4/doc/FAQ' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/doc/FAQ'\" else echo shar: Extracting \"'pvm2.4/doc/FAQ'\" \(12071 characters\) sed "s/^X//" >'pvm2.4/doc/FAQ' <<'END_OF_FILE' X PVM/Frequently Asked Questions X18 Aug 1992 X X________________________________________________________________________ X Questions: X X1. What happened to XPVM? X2. What happened to the shared memory extensions? X3. What does the message "initiate: No such File" mean? X4. I can't get pvmd to start up. X5. How do I look at the output of the mandel demo? X6. Why don't I see output from certain processes right away or at all? X7. What does "xfermess() frg out of order" mean? X8. What do messages like "resend to seq=223, retry=9" mean? X9. Will PVM automatically use the individual processors on my X {Hypercube, N-Cube, CM-2, Sequent}? X10. Is the PICL/PVM library available? X X________________________________________________________________________ X1. What happened to XPVM? X X XPVM was an X windows interface (primarily) for administrative X tasks such as virtual machine configuration, multiple initiates, X and primitive debugging. It was developed for PVM1.0, and never X ported to PVM2.x, and therefore was never released. Many of the X functions supported by XPVM are now included in HeNCE. X X________________________________________________________________________ X2. What happened to the shared memory extensions? X X A distributed-shared memory facility was tried in PVM1.0; some X preliminary results and experiences on this may be found in the X "Concurrency: Practice and Experience (December 1990)" paper. X Since an overwhelming majority of PVM use was, and was anticipated X to be, based on message passing, shared-memory support was never X implemented in the released versions of PVM. However, there have X been recent efforts to incorporate a shared-address space model, X using objects and C++ interfaces, into PVM. For more details, X please contact vss@mathcs.emory.edu. X X________________________________________________________________________ X3. What does the message "initiate: No such File" mean? X X It means that a pvmd failed to find a file in response to an X initiate() call. X X By default, pvmd searches the directory $HOME/pvm/ARCH (where ARCH X is the PVM architecture name for a host) when initiating processes. X You can change this by using the "ep=" option in the pvm hosts file. X X Note that if you don't specify the host on which to initiate a X component PVM will pick one. The file must be available on that X host, as PVM will not try another once it has decided. X X________________________________________________________________________ X4. I can't get pvmd to start up. X X PVM can fail to start up for a number of reasons. Besides those X out of your control, such as a host or network being down, the X following are the most common. X X When a pvmd fails to start up, you may not get the entire error X message. Try running pvm on the remote host by hand by typing (to X the shell): X X rsh hostname /tmp/pvm/pvmd X X On some machines, you need to use "remsh" rather than "rsh". X X * If you get "Permission denied", it probably means that your .rhosts X file on the remote machine doesn't include your local host name. X You need to add a line like: X X local-host local-user-name X X to your .rhosts file on the remote machine. X X Sometimes a machine has more than one name, and the remote machine X may think your local machine has a different name than you do. To X find out what the remote machine thinks is the name of your local X machine, log in to the remote machine and type: X X who am i X X This will show you what the remote host thinks is the name of the X local host (it may be truncated to 16 characters). Make sure you X put this name (in full, not truncated) in your .rhosts file on the X remote machine. Some older machines will insist that you spell the X name exactly the same, including getting the case right; newer X machines will let you spell it in either upper or lower case. X X * If you get "Login incorrect", it probably means that there isn't an X account on the remote machine with the same login name you're using X the local machine. You need to add a "lo=username" option to your X pvm hosts file. X X If you get something like X X pvmd version <2.4.1> arch maxml <4096> X X then pvmd is starting up fine on the remote machine. However, make X sure that the version number of the remote pvmd matches the version X of the local pvmd. If the two pvmd's aren't the same version, they X will refuse to talk to each other. X X * If you get a message like: X X /tmp/pvm/pvmd: No Such File X X the master pvmd is reaching the remote host but can't start the X slave pvmd. Make sure the executable file is installed in X /tmp/pvm/pvmd or use the "dx=" option in the pvm hosts file to X choose a different pathname. X X * If you get something else, or *any* other output appears before the X "pvmd version" line, make sure your .cshrc on the remote machine X isn't either (a) printing something out when you log in, or (b) X trying to set your terminal characteristics (e.g. erase key) (usually X with the "stty" or "tset" commands). Doing either of these things X in your .cshrc is generally a Bad Idea. X X If you want to print out stuff when you log in, you should either X do it in your .login script or put the commands in an if statement X to ensure that stuff only gets printed when you are logging in X interactively, not when you're running a csh commands script. X Something like this should do the trick: X X if ( { tty -s } && $?prompt ) then X echo terminal type is $TERM X stty erase '^?' kill '^u' intr '^c' echo X endif X X________________________________________________________________________ X5. How do I look at the output of the mandel demo? X X Compile and use the 'xpx' program in the mandel directory. We X haven't previously included this file, but everyone has been X wanting it. X X________________________________________________________________________ X6. Why don't I see output from certain processes right away or at all? X X The stdio library (fgets, printf, etc.) buffers input and output X for efficiency whenever possible. That is, it tries to reduce the X frequency of actual read() or write() system calls. It decides X whether to buffer by looking at the underlying file descriptor of a X stream. If the descriptor is for a tty, it buffers only a line at X a time, that is, the buffer is flushed whenever the character '\n' X is encountered. If the descriptor is a file, pipe, or socket, X however, stdio buffers up much more, like 4k bytes. X X The processes started by pvmd on the 'master' machine inherit its X stdout/err files and so their stdio libs decide to flush output X every line. Processes started by other ('slave') pvmds inherit X their stdout/err files, which are sockets back to the master pvmd. X Thus their stdio libs buffer more than a line before writing to the X socket (because they don't know they're talking to a human). X X There are a few ways to see your output at the correct time. You X can put "fflush(stdout);" after each printf(). Or, change the X buffering mode of stdout to line-oriented for the entire program by X putting: X X setlinebuf(stdout); X X near the top of the program. X X________________________________________________________________________ X7. What does "xfermess() frg out of order" mean? X X This is the message fragment reassembly code in libpvm X complaining. Xfermess() is called by rcv(), rcvmulti(), and X probe(). Messages longer than 4k bytes (sometimes other values X depending on what host types you're using) are fragmented in X the originating process for transmission, then reassembled in X the receiving process. X X This used to happen a lot, mostly due to bugs in libpvm, but X the code has been cleaned up, and we haven't seen the problem X in quite a while, except when caused by... X X One mistake PVM users commonly make is to give a byte count X instead of object count to a function like getnint(). This X can result in two, four, or eight times too many bytes being X unpacked, thus writing off the end of the space reserved for X the data. X X If the buffer was obtained by malloc and you scribble past the X end of it, you may corrupt the contents of other malloc'd space X or housekeeping information. Libpvm functions, especially X snd() and rcv(), make extensive use of malloc when buffering X messages. There is almost no code in the library to do sanity X checking, mostly because there's no good way to do it. Of X course, the side effects are chaotic and may come and go X seemingly randomly. X X There's no good solution, other than to carefully check your X code. If you're interested, there is an instrumented malloc X library that can detect problems like overwriting buffers, X accessing buffers after freeing them, and so on. To use it, X replace all calls to malloc(), realloc() or free() in your code X with i_malloc(), i_realloc(), and i_free(). Then link with X imalloc.c (found in the PVM src directory). X X________________________________________________________________________ X8. What do messages like "resend to seq=223, retry=9" mean? X X These are pvmd-to-pvmd packets being resent. Packets are sometimes X dropped either by the network or the destination host due to X glitches or lack of resources. X X While they do impact the performance somewhat, messages like the X above are no cause for alarm unless the retry count gets down to or X near zero. Each packet is allowed ten retries, after which it is X discarded. When packets get discarded, things will start to hang X or break. X X________________________________________________________________________ X9. Will PVM automatically use the individual processors on my X {Hypercube, N-Cube, CM-2, Sequent}? X X PVM can only manage Unix processes right now, that is, a PVM X 'process' is required to be a Unix process, with all its X resources. In addition, PVM treats each host as a single machine, X and does not consider underlying structure. X X * On a Sequent, for example, the Unix process scheduler assigns X processes to each of the physical processors in order to balance X the load. Thus, simply starting multiple processes gives X parallelism. X X * On other types of machines, such as Alliants and CM-2s, the X programmer must write code to take advantage of the parallel X features of the machine. The PVM system will simply think it's X managing normal processes. X X * On machines like Hypercubes, however, node processors present a X restricted environment (without sockets or file access for example) X that PVM can not deal with. When using these machines, the user is X usually required to write both 'host' and 'node' programs. The X host program links with libpvm and the manufacturer's custom X library and provides communication between the PVM machine and the X node program, as well as any special control, such as allocating a X partition. The node program then does the calculation. X X Future versions of PVM will in fact be able to manage PVM 'tasks' X that are not full-fledged Unix processes, in some host-specific X way. X X________________________________________________________________________ X10. Is the PICL/PVM library available? X X There was a PICL library that worked with an old version of PVM, X but was never ported to version 2 (the first one released to the X world). The PICL model is intended for a homogeneous environment, X and so is more limited than PVM. More importantly, since the X clocks on a group of workstations are not synchronized, the trace X files produced by PICL cannot be reliably displayed using X ParaGraph. X X We have a package called 'xab' that can be linked with user code to X generate trace files usable with ParaGraph. X END_OF_FILE if test 12071 -ne `wc -c <'pvm2.4/doc/FAQ'`; then echo shar: \"'pvm2.4/doc/FAQ'\" unpacked with wrong size! fi # end of 'pvm2.4/doc/FAQ' fi if test -f 'pvm2.4/doc/MsgFormats' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/doc/MsgFormats'\" else echo shar: Extracting \"'pvm2.4/doc/MsgFormats'\" \(7169 characters\) sed "s/^X//" >'pvm2.4/doc/MsgFormats' <<'END_OF_FILE' X Message Formats for PVM 2.4.0 X22 Dec 1992 X X________________________________________________________________________ BETWEEN MASTER PVMD AND EACH SLAVE AT STARTUP TIME X XFrom From Slave Master X X[Phase 1 connect to each host and establish arch, address, port] X X"pvmd version <2.3.4> arch maxml <4096>" X X[The following two are used if starting up via rsh instead of rexec] X X "reconnect addr <%08x> port <%04x>" X X[On the new socket now] X"pvmd version <2.3.4> arch maxml <4096>" X X "nhosts <%d> yourhost <%d>" X "name <%s> addr <%08x>" [for each host in the grp] X ... X X"myport <%04x>" X X[Phase 2 complete the config/host table for all slaves] X X "maxml <%d>" X "port <%04x> arch <%s> epath <%s>" [for each host in the grp] X ... X X"ok nhosts <%d> im <%d>" X X________________________________________________________________________ BETWEEN PVMDs X Message Header - 12 bytes, all multibyte values are nbo (most sig first) X X Byte 0 1 2 3 X +---------------+---------------+---------------+---------------+ X | Type | Flags | Broadcast Root | X +---------------+---------------+---------------+---------------+ X | Sequence Number | X +---------------+---------------+---------------+---------------+ X | Remote Wait Channel | X +---------------+---------------+---------------+---------------+ X Message body formats - miint data type is a 4 byte integer X X1 FORUSER // pass user message X string name // process name to X miint inum // process inum to X string name // process name from X miint inum // process inum from X [message] X X2 INUMGET // query pvmd[0] instance number for new process X string name // process name to create X X3 INUMACK // return instance number new process X miint inum // given instance number X X4 INOTIFY // notify everyone of existence of new process X string name // process name X miint inum // instance X X5 XNOTIFY // notify everyone of process exit X string name // process name X miint inum // instance X X6 ISPROC // query pvmd[0] of existence and location of a process X string name X miint inum X X7 LOCATE // return process location X string name X miint inum X miint host X miint flags X X8 INIT // create a process X string name X XXX This message needs to be extended X X9 HOSTGET // query where to initiate new process X string arch // requested architecture or NULL X X10 HOSTACK // reply where to initiate new process X miint host X X11 READY // user has signaled with ready() X string name // channel name X X12 EPOCH // pvmd[0] signalling to reset procs, barriers, etc. X X13 TERM // command to terminate a process X string name // process name X miint inum // instance number X X14 BARRIER // user has called barrier() X string name // channel name X int quorum // number needed to meet X X15 PS // request for local process list X X16 PSACK // reply to PS X int num // number of entries X { X string name // process name X int inum // instance number X int flags // process flags X } [num] X X17 CNT // get num of instances of process X string name // process name X X18 CNTACK // num of instances of proc X string name X miint count X X19 VCNOT // announce virt ckt addr for proc X string name // process name X miint inum // process instance X miint addr // ip address XXX scary to use int? X miint port // port X X________________________________________________________________________ XFROM CLIENT TO PVMD X X(Values are in machine-specific format) X Header X int pid // user proc id X int type // message type X int seq // sequence number X int flags X X1 UMC_ENROLL // enroll this process X string name // requested process name X X2 UMC_INIT // initiate another process X // specify UF_IN, UF_OUT, UF_ERR X string name // requested process name X string arch // maybe null X string host // maybe null X string stdin // optional if set in flags Not Implemented X string stdout // optional if set in flags Not Implemented X string stderr // optional if set in flags Not Implemented X int argc // arg count Not Implemented X string argv[] // optional if argc > 0 Not Implemented X X3 UMC_TERM // terminate a process X string name // process name X int inum // process inum X X4 UMC_WHOAMI // get name and instance of this process X no body X X5 UMC_LEAVE // exit this process from pvm X no body X X6 UMC_SEND // send message to a process or broadcast X string proc // process name X int inum // instance or -1 to broadcast X [data] X X7 UMC_RECV // download queued messages to this process X // specify UF_BLOCK X X8 UMC_BARR // participate in barrier X // specify UF_BARR, UF_RDY X string name // barrier/semaphore name X int count // optional how many if flags&barrier X X9 UMC_STAT // get status of a process X string name // process name X int inum // instance X X10 UMC_PSTAT // get virtual machine params X no body X X11 UMC_INST // get max instance of process name X string name // process name X X12 UMC_GETVC // get virt ckt addr for a process X string name // process name X int inum // instance X X13 UMC_SETVC // set the virt ckt addr of this process X sockaddr_in addr // the address X X14 UMC_VERSION // compare rev levels with pvmd X string version // ulib version X X15 UMC_MSTAT // get more virtual machine params X no body X X________________________________________________________________________ X XFROM PVMD TO CLIENT PROCESS X X(Values are in machine-specific format) X Header X int pid // user proc id - not used X int type // message type - not used X int seq // sequence number - matches request X int flags // command modifiers/return status bits X X1 UMC_ENROLL X // status in UF_ACK and UF_ALRDY X int inum // if ACK&!ALRDY X int maxmsglength // if ACK&!ALRDY X in_addr ad // if ACK&!ALRDY, our IP address X X2 UMC_INIT X // status in UF_ACK, UF_NEXE, UF_NHOST X int inum // if ACK X X3 UMC_TERM X // status in UF_ACK, UF_NPROC X X4 UMC_WHOAMI X // status in UF_ACK X string name // optional if ACK X int inum // optional if ACK X int maxmsglength // if ACK X in_addr ad // if ACK, our IP address X X5 UMC_LEAVE X X6 UMC_SEND X // status in UF_ACK, UF_NPROC X X7 UMC_RECV X // status in UF_ACK, UF_NMSG X string fromname X int frominum X uuheader X [data] // if ACK, !NMSG X X8 UMC_BARR X // status in UF_ACK X X9 UMC_STAT X // status in UF_ACK, UF_RUN X X10 UMC_PSTAT X // status in UF_ACK X int ncpus // optional if ACK X int nclasses // optional if ACK X X11 UMC_INST X int max // optional if ACK, 0 = no instances X X12 UMC_GETVC X sockaddr_in addr // optional if ACK and !NPROC X X13 UMC_SETVC X // status in UF_ACK X X14 UMC_VERSION X // status in UF_ACK X string version // pvmd version whether ack or not X int ndf // our native data format X X15 UMC_MSTAT X // status in UF_ACK X int ncpus // optional if ACK X int mycpu // host number X { X int stat // 0 if no procs running, 1 if any procs running X string name // host name X string arch // host architecture X } [ncpus] X X________________________________________________________________________ X END_OF_FILE if test 7169 -ne `wc -c <'pvm2.4/doc/MsgFormats'`; then echo shar: \"'pvm2.4/doc/MsgFormats'\" unpacked with wrong size! fi # end of 'pvm2.4/doc/MsgFormats' fi if test -f 'pvm2.4/doc/PvmPic' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/doc/PvmPic'\" else echo shar: Extracting \"'pvm2.4/doc/PvmPic'\" \(38246 characters\) sed "s/^X//" >'pvm2.4/doc/PvmPic' <<'END_OF_FILE' X%!PS-Adobe-2.0 EPSF-1.2 X%%DocumentFonts: Courier Times-Roman X%%Pages: 1 X%%BoundingBox: 44 59 513 725 X%%EndComments X X/arrowHeight 10 def X/arrowWidth 5 def X X/IdrawDict 52 dict def IdrawDict begin X X/reencodeISO { dup dup findfont dup length dict begin X{ 1 index /FID ne { def }{ pop pop } ifelse } forall X/Encoding ISOLatin1Encoding def currentdict end definefont X} def X X/ISOLatin1Encoding [ X/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef X/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef X/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef X/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef X/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright X/parenleft/parenright/asterisk/plus/comma/minus/period/slash X/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon X/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N X/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright X/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m X/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde X/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef X/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef X/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve X/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut X/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar X/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot X/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior X/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine X/guillemotright/onequarter/onehalf/threequarters/questiondown X/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla X/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex X/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis X/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute X/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis X/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave X/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex X/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis X/yacute/thorn/ydieresis X] def X/Courier reencodeISO def X/Times-Roman reencodeISO def X X/none null def X/numGraphicParameters 17 def X/stringLimit 65535 def X X/Begin { save numGraphicParameters dict begin X} def X X/End { end restore X} def X X/SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef X} { X/brushDashOffset idef X/brushDashArray idef X0 ne /brushRightArrow idef X0 ne /brushLeftArrow idef X/brushWidth idef false /brushNone idef X} ifelse X} def X X/SetCFg { X/fgblue idef X/fggreen idef X/fgred idef X} def X X/SetCBg { X/bgblue idef X/bggreen idef X/bgred idef X} def X X/SetF { X/printSize idef X/printFont idef X} def X X/SetP { dup type /nulltype eq { pop true /patternNone idef X} { dup -1 eq { X/patternGrayLevel idef X/patternString idef X} { X/patternGrayLevel idef X} ifelse false /patternNone idef X} ifelse X} def X X/BSpl { X0 begin storexyn newpath n 1 gt { X0 0 0 0 0 0 1 1 true subspline n 2 gt { X0 0 0 0 1 1 2 2 false subspline X1 1 n 3 sub { X/i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline X} for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline X} if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if X0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow X} if end X} dup 0 4 dict put def X X/Circ { newpath X0 360 arc patternNone not { ifill } if brushNone not { istroke } if X} def X X/CBSpl { X0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline X1 1 n 3 sub { X/i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline X} for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if X} { Poly X} ifelse end X} dup 0 4 dict put def X X/Elli { X0 begin newpath X4 2 roll translate scale X0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end X} dup 0 1 dict put def X X/Line { X0 begin X2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if X0 0 1 1 leftarrow X0 0 1 1 rightarrow end X} dup 0 4 dict put def X X/MLine { X0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto X1 1 n 1 sub { X/i exch def x i get y i get lineto X} for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if X0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow X} if end X} dup 0 4 dict put def X X/Poly { X3 1 roll newpath moveto X-1 add X{ lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if X} def X X/Rect { X0 begin X/t exch def X/r exch def X/b exch def X/l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end X} dup 0 4 dict put def X X/Text { ishow X} def X X/idef { dup where { pop pop pop } { exch def } ifelse X} def X X/ifill { X0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill X} { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def X/w r l sub ceiling cvi def X/h t b sub ceiling cvi def X/imageByteWidth w 8 div ceiling cvi def X/imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask X} if X} ifelse grestore end X} dup 0 8 dict put def X X/istroke { gsave brushDashOffset -1 eq { X[] 0 setdash X1 setgray X} { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor X} ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore X} def X X/ishow { X0 begin gsave fgred fggreen fgblue setrgbcolor X/fontDict printFont printSize scalefont dup setfont def X/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def X/vertoffset 1 printSize sub descender sub def { X0 vertoffset moveto show X/vertoffset vertoffset printSize sub def X} forall grestore end X} dup 0 3 dict put def X/patternproc { X0 begin X/patternByteLength patternString length def X/patternHeight patternByteLength 8 mul sqrt cvi def X/patternWidth patternHeight def X/patternByteWidth patternWidth 8 idiv def X/imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def X/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def X/imageHeight imageHeight imageMaxHeight sub store X/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def X0 1 imageMaxHeight 1 sub { X/y exch def X/patternRow y patternByteWidth mul patternByteLength mod def X/patternRowString patternString patternRow patternByteWidth getinterval def X/imageRow y imageByteWidth mul def X0 patternByteWidth imageByteWidth 1 sub { X/x exch def imageString imageRow x add patternRowString putinterval X} for X} for imageString end X} dup 0 12 dict put def X X/min { dup 3 2 roll dup 4 3 roll lt { exch } if pop X} def X X/max { dup 3 2 roll dup 4 3 roll gt { exch } if pop X} def X X/midpoint { X0 begin X/y1 exch def X/x1 exch def X/y0 exch def X/x0 exch def x0 x1 add 2 div y0 y1 add 2 div end X} dup 0 4 dict put def X X/thirdpoint { X0 begin X/y1 exch def X/x1 exch def X/y0 exch def X/x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end X} dup 0 4 dict put def X X/subspline { X0 begin X/movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint X/p1y exch def X/p1x exch def x2 y2 x1 y1 thirdpoint X/p2y exch def X/p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint X/p0y exch def X/p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint X/p3y exch def X/p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end X} dup 0 17 dict put def X X/storexyn { X/n exch def X/y n array def X/x n array def n 1 sub -1 0 { X/i exch def y i 3 2 roll put x i 3 2 roll put X} for X} def X X%%EndProlog X X%%BeginIdrawPrologue X/arrowhead { X0 begin transform originalCTM itransform X/taily exch def X/tailx exch def transform originalCTM itransform X/tipy exch def X/tipx exch def X/dy tipy taily sub def X/dx tipx tailx sub def X/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath arrowHeight neg arrowWidth 2 div moveto X0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto patternNone not { originalCTM setmatrix X/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def X/padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill X} if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke X} if grestore end X} dup 0 9 dict put def X X/arrowheadpath { newpath arrowHeight neg arrowWidth 2 div moveto X0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto X} def X X/leftarrow { X0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end X} dup 0 4 dict put def X X/rightarrow { X0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end X} dup 0 4 dict put def X X%%EndIdrawPrologue X X%I Idraw 10 Grid 8 8 X X%%Page: 1 1 X Begin X%I b u X%I cfg u X%I cbg u X%I f u X%I p u X%I t X[ 0.799705 0 0 0.799705 0 0 ] concat X/originalCTM matrix currentmatrix def X Begin %I Poly X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 0 0 0.5 371.5 392 ] concat X%I 6 X150 392 X214 392 X247 343 X215 296 X150 296 X119 344 X6 Poly XEnd X Begin %I Poly X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 0 0 0.5 252.5 480.5 ] concat X%I 6 X150 392 X214 392 X247 343 X215 296 X150 296 X119 344 X6 Poly XEnd X Begin %I Poly X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 0 0 0.5 264 253 ] concat X%I 6 X150 392 X214 392 X247 343 X215 296 X150 296 X119 344 X6 Poly XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 274 470 ] concat X%I X281 633 281 569 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 274 418.5 ] concat X%I X312 181 312 121 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 217 404 ] concat X%I X216 621 285 620 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 294.25 418.5 ] concat X%I X546 582 477 582 Line X%I 4 XEnd X Begin %I Line X%I b 65520 X2 0 0 [12 4] 17 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 213.25 315.25 ] concat X%I X262 569 279 326 Line X%I 2 XEnd X Begin %I Line X%I b 65520 X2 0 0 [12 4] 17 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 213.25 315.25 ] concat X%I X292 322 376 483 Line X%I 2 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 294.25 315.5 ] concat X%I X237 341 237 278 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 294.25 315.5 ] concat X%I X105 158 82 125 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 294.25 315.5 ] concat X%I X286 159 295 127 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 294.25 315.5 ] concat X%I X494 143 546 99 Line X%I 4 XEnd X Begin %I Line X%I b 65520 X2 0 0 [12 4] 17 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 294.25 315.5 ] concat X%I X128 183 203 245 Line X%I 4 XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-courier-medium-r-*-80-* Courier 8 SetF X%I t X[ 1 0 0 1 446 575 ] concat X%I X[ X(pvmd 3) X(rhubarb) X(UVAX) X] Text XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-courier-medium-r-*-80-* Courier 8 SetF X%I t X[ 1 0 0 1 330 663 ] concat X%I X[ X(pvmd 0) X(thud) X(SUN4) X] Text XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-courier-medium-r-*-80-* Courier 8 SetF X%I t X[ 1 0 0 1 224 572 ] concat X%I X[ X(pvmd 1) X(tonka) X(SYMM) X] Text XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-courier-medium-r-*-80-* Courier 8 SetF X%I t X[ 1 0 0 1 341 437 ] concat X%I X[ X(pvmd 2) X(speedy) X(RIOS) X] Text XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-120-* Times-Roman 12 SetF X%I t X[ 1 0 0 1 136 195 ] concat X%I X[ X(UDP socket) X] Text XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-120-* Times-Roman 12 SetF X%I t X[ 1 0 0 1 136 177 ] concat X%I X[ X(UDP traffic) X] Text XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-courier-medium-r-*-80-* Courier 8 SetF X%I t X[ 1 0 0 1 352 620 ] concat X%I X[ X(128.169.201.228:5001) X] Text XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1.18539 -0 -0 0.489779 232.121 161.613 ] concat X%I X87 329 134 378 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1.18539 -0 -0 0.489779 328.121 166.613 ] concat X%I X87 329 134 378 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1.18539 -0 -0 0.489779 165.621 161.613 ] concat X%I X87 329 134 378 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1.18539 -0 -0 0.489779 184.121 582.113 ] concat X%I X87 329 134 378 Rect XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-courier-medium-r-*-80-* Courier 8 SetF X%I t X[ 1 0 0 1 274 341.5 ] concat X%I X[ X(factor,0) X] Text XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-courier-medium-r-*-80-* Courier 8 SetF X%I t X[ 1 0 0 1 340.5 342 ] concat X%I X[ X(factor,1) X] Text XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-courier-medium-r-*-80-* Courier 8 SetF X%I t X[ 1 0 0 1 440 345 ] concat X%I X[ X(factor,2) X] Text XEnd X Begin %I Poly X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.144458 0 0 0.144458 81.814 103.807 ] concat X%I 6 X150 392 X214 392 X247 343 X215 296 X150 296 X119 344 X6 Poly XEnd X Begin %I Poly X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 0 0 0.5 147.5 388 ] concat X%I 6 X150 392 X214 392 X247 343 X215 296 X150 296 X119 344 X6 Poly XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-120-* Times-Roman 12 SetF X%I t X[ 1 0 0 1 136.5 158.75 ] concat X%I X[ X(PVM Daemon) X] Text XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.346096 -0.00635404 0.00635403 0.346096 337.582 287.373 ] concat X%I X41 272 30 11 Elli XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.254448 0.234688 -0.234688 0.254448 468.153 274.668 ] concat X%I X41 272 30 11 Elli XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.346145 -0.00246215 0.00246215 0.346145 350.138 265.199 ] concat X%I X41 272 30 11 Elli XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.30496 -0.163775 0.163775 0.30496 265.7 282.016 ] concat X%I X41 272 30 11 Elli XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.346153 0.000932626 -0.000932623 0.346153 338.061 374.308 ] concat X%I X41 272 30 11 Elli XEnd X Begin %I Line X%I b 65520 X2 0 0 [12 4] 17 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 253.75 315.5 ] concat X%I X415 240 432 198 Line X%I 4 XEnd X Begin %I Line X%I b 65520 X2 0 0 [12 4] 17 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 274 315.5 ] concat X%I X364 248 537 167 Line X%I 4 XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ -0.0242888 -0.345301 0.345301 -0.0242888 199.824 580.514 ] concat X%I X41 272 30 11 Elli XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.00910097 -0.346034 0.346034 0.00910097 315.506 575.962 ] concat X%I X41 272 30 11 Elli XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.346023 -0.00950985 0.00950985 0.346023 90.726 96.397 ] concat X%I X41 272 30 11 Elli XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.346133 -0.00379276 0.00379275 0.346133 329.027 514.007 ] concat X%I X41 272 30 11 Elli XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-courier-medium-r-*-80-* Courier 8 SetF X%I t X[ 1 0 0 1 425.5 366.75 ] concat X%I X[ X(/tmp/pvmu.2505) X] Text XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.344916 0.029244 -0.029244 0.344916 315.313 625.984 ] concat X%I X41 272 30 11 Elli XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 243.625 560.125 ] concat X%I X292 733 307 661 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 243.625 560.125 ] concat X%I X391 530 391 467 Line X%I 4 XEnd X Begin %I Line X%I b 65520 X2 0 0 [12 4] 17 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 243.625 560.125 ] concat X%I X331 617 365 570 Line X%I 4 XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-courier-medium-r-*-80-* Courier 8 SetF X%I t X[ 1 0 0 1 294.5 761 ] concat X%I X[ X(main,0) X] Text XEnd X Begin %I Line X%I b 65520 X2 0 0 [12 4] 17 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 162.625 456.875 ] concat X%I X346 287 285 227 Line X%I 2 XEnd X Begin %I Line X%I b 65520 X2 0 0 [12 4] 17 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 162.625 456.875 ] concat X%I X277 187 367 39 Line X%I 2 XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.346152 -0.00109666 0.00109667 0.346152 327.009 602.142 ] concat X%I X41 272 30 11 Elli XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-120-* Times-Roman 12 SetF X%I t X[ 1 0 0 1 136 139.75 ] concat X%I X[ X(TCP socket) X] Text XEnd X Begin %I Line X%I b 65535 X1 1 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 64.875 97.125 ] concat X%I X114 97 243 97 Line X%I 4 XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-120-* Times-Roman 12 SetF X%I t X[ 1 0 0 1 136 124.75 ] concat X%I X[ X(TCP connection) X] Text XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.14531 -0.203433 0.203433 0.14531 342.541 457.171 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.214694 0.128088 -0.128088 0.214694 369.098 621.837 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 352.625 616.125 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 430.125 564.125 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 200.625 557.625 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.202772 0.146231 -0.146231 0.202772 296.696 582.612 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I BSpl X%I b 65535 X1 1 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 162.625 302.375 ] concat X%I 3 X274 660 X204 650 X168 605 X3 BSpl X%I 2 XEnd X Begin %I BSpl X%I b 65535 X1 1 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 243.625 302.375 ] concat X%I 3 X324 699 X478 706 X461 619 X3 BSpl X%I 2 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 324.625 482.875 ] concat X%I X172 727 228 758 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 324.625 482.875 ] concat X%I X207 676 259 676 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 324.625 482.875 ] concat X%I X587 454 587 421 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 203.125 482.875 ] concat X%I X152 427 152 428 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 203.125 482.875 ] concat X%I X153 429 153 404 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 203.125 482.875 ] concat X%I X436 623 463 640 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 284.125 405.625 ] concat X%I X433 149 387 115 Line X%I 4 XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-courier-medium-r-*-80-* Courier 8 SetF X%I t X[ 1 0 0 1 366.5 390.5 ] concat X%I X[ X(/tmp/pvmd.manchek) X] Text XEnd X Begin %I BSpl X%I b 65535 X1 1 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 243.625 173.625 ] concat X%I 5 X296 516 X358 454 X531 437 X531 342 X494 336 X5 BSpl X%I 2 XEnd X Begin %I BSpl X%I b 65535 X1 1 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 243.625 173.625 ] concat X%I 6 X306 519 X380 477 X556 445 X562 258 X302 270 X288 292 X6 BSpl X%I 2 XEnd X Begin %I BSpl X%I b 65535 X1 1 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 243.625 173.625 ] concat X%I 6 X319 525 X455 479 X567 466 X590 226 X147 266 X144 293 X6 BSpl X%I 2 XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-120-* Times-Roman 12 SetF X%I t X[ 1 0 0 1 523 461 ] concat X%I X[ X(inherited) X(stdout/err) X(streams) X] Text XEnd X Begin %I Line X%I b 65520 X2 0 0 [12 4] 17 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 162.625 276.625 ] concat X%I X283 566 476 575 Line X%I 2 XEnd X Begin %I Line X%I b 65520 X2 0 0 [12 4] 17 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 162.625 276.625 ] concat X%I X379 649 480 592 Line X%I 2 XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-120-* Times-Roman 12 SetF X%I t X[ 1 0 0 1 136 502 ] concat X%I X[ X(inter-pvmd) X(control, data) X(traffic) X] Text XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-120-* Times-Roman 12 SetF X%I t X[ 1 0 0 1 150 416 ] concat X%I X[ X(client-pvmd) X(control, data) X(traffic) X] Text XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-120-* Times-Roman 12 SetF X%I t X[ 1 0 0 1 414 755 ] concat X%I X[ X(control/debugging) X(streams) X(\(one per slave host\)) X] Text XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.533959 -0 -0 0.220621 51.6042 23.7604 ] concat X%I X87 329 134 378 Rect XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-120-* Times-Roman 12 SetF X%I t X[ 1 0 0 1 137 106.5 ] concat X%I X[ X(Client process) X] Text XEnd X Begin %I BSpl X%I b 65535 X1 1 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 36 79 ] concat X%I 4 X360 599 X481 621 X512 432 X370 372 X4 BSpl X%I 1 XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 68.625 98.625 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 296.625 752.625 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 281.625 752.625 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 268.625 752.625 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 245.625 752.625 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 431.625 247.625 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 336.625 250.625 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 255.625 264.625 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 404.625 247.625 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 310.625 250.625 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.25 -0 -0 0.25 233.625 264.625 ] concat X%I X147 130 180 162 Rect XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 123 389.5 ] concat X%I X336 756 328 791 Line X%I 2 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 123 389.5 ] concat X%I X374 755 374 791 Line X%I 2 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 123 389.5 ] concat X%I X400 756 400 791 Line X%I 2 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 123 389.5 ] concat X%I X430 756 430 790 Line X%I 2 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 166 235 ] concat X%I X217 176 217 140 Line X%I 2 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 166 235 ] concat X%I X261 175 261 140 Line X%I 2 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 166 235 ] concat X%I X370 175 370 113 Line X%I 2 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 166 235 ] concat X%I X423 176 423 112 Line X%I 2 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 166 235 ] concat X%I X558 185 558 107 Line X%I 2 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 166 235 ] concat X%I X613 186 613 106 Line X%I 2 XEnd X Begin %I BSpl X%I b 65535 X1 1 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -7 27.5 ] concat X%I 7 X349 772 X375 793 X584 774 X609 509 X604 230 X486 223 X482 249 X7 BSpl X%I 1 XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -7 27.5 ] concat X%I X522 103 51 26 Elli XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -7 27.5 ] concat X%I X189 371 49 26 Elli XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -7 27.5 ] concat X%I X172 459 44 27 Elli XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -32 49.5 ] concat X%I X493 687 64 29 Elli XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -21 79.5 ] concat X%I X567 365 33 25 Elli XEnd X Begin %I Line X%I b 65535 X0 0 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -7 27.5 ] concat X%I X522 427 484 393 Line X%I 1 XEnd X Begin %I Line X%I b 65535 X0 0 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -7 27.5 ] concat X%I X475 114 508 191 Line X%I 1 XEnd X Begin %I Line X%I b 65535 X0 0 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -7 27.5 ] concat X%I X227 388 330 350 Line X%I 1 XEnd X Begin %I Line X%I b 65535 X0 0 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -7 27.5 ] concat X%I X190 484 313 488 Line X%I 1 XEnd X Begin %I BSpl X%I b 65535 X1 1 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -7 27.5 ] concat X%I 7 X332 772 X353 816 X611 786 X621 475 X625 212 X407 205 X387 252 X7 BSpl X%I 1 XEnd X Begin %I BSpl X%I b 65535 X1 1 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -7 27.5 ] concat X%I 7 X317 772 X340 823 X609 812 X647 490 X627 161 X318 226 X305 264 X7 BSpl X%I 1 XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-120-* Times-Roman 12 SetF X%I t X[ 1 0 0 1 257 896 ] concat X%I X[ X(socket to) X(accept new) X(connections) X] Text XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 116 147.5 ] concat X%I X168 731 41 26 Elli XEnd X Begin %I Line X%I b 65535 X0 0 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 36 79 ] concat X%I X490 655 484 570 Line X%I 1 XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-120-* Times-Roman 12 SetF X%I t X[ 1 0 0 1 481 148 ] concat X%I X[ X(client-client) X(message) X(virtual circuits) X] Text XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-140-* Times-Roman 14 SetF X%I t X[ 1 0 0 1 309 104 ] concat X%I X[ X(PVM 2.4.0 System) X(December 1991) X] Text XEnd X Begin %I Pict X%I b u X%I cfg u X%I cbg u X%I f u X%I p u X%I t X[ 0.646941 0 0 0.646941 24.2236 421.391 ] concat X Begin %I Poly X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.495203 -0 -0 0.581834 49.7395 348.094 ] concat X%I 4 X137 519 X277 519 X277 607 X137 607 X4 Poly XEnd X Begin %I Poly X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.498715 -0 -0 0.498715 48.732 391.114 ] concat X%I 8 X143 492 X106 468 X123 468 X115 463 X172 463 X178 467 X218 467 X255 492 X8 Poly XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.249357 -0 -0 0.249357 70.2223 520.239 ] concat X%I X346 387 346 358 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.249357 -0 -0 0.249357 70.231 520.32 ] concat X%I X223 498 496 498 Line X%I 4 XEnd X Begin %I MLine X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.249357 -0 -0 0.249357 70.1796 520.294 ] concat X%I 5 X61 388 X346 388 X498 498 X498 528 X470 520 X5 MLine X%I 4 XEnd X Begin %I MLine X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.249357 -0 -0 0.249357 70.2075 520.348 ] concat X%I 8 X470 725 X586 656 X586 494 X346 358 X60 358 X60 388 X222 498 X222 516 X8 MLine X%I 4 XEnd X Begin %I CBSpl X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.249357 -0 -0 0.249357 70.2123 520.4 ] concat X%I 8 X204 695 X227 713 X429 714 X456 696 X457 552 X431 533 X225 533 X204 550 X8 CBSpl XEnd X XEnd %I eop X Begin %I Pict X%I b u X%I cfg u X%I cbg u X%I f u X%I p u X%I t X[ 0.646941 0 0 0.646941 3.22363 257.391 ] concat X Begin %I Poly X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.495203 -0 -0 0.581834 49.7395 348.094 ] concat X%I 4 X137 519 X277 519 X277 607 X137 607 X4 Poly XEnd X Begin %I Poly X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.498715 -0 -0 0.498715 48.732 391.114 ] concat X%I 8 X143 492 X106 468 X123 468 X115 463 X172 463 X178 467 X218 467 X255 492 X8 Poly XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.249357 -0 -0 0.249357 70.2223 520.239 ] concat X%I X346 387 346 358 Line X%I 4 XEnd X Begin %I Line X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.249357 -0 -0 0.249357 70.231 520.32 ] concat X%I X223 498 496 498 Line X%I 4 XEnd X Begin %I MLine X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.249357 -0 -0 0.249357 70.1796 520.294 ] concat X%I 5 X61 388 X346 388 X498 498 X498 528 X470 520 X5 MLine X%I 4 XEnd X Begin %I MLine X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.249357 -0 -0 0.249357 70.2075 520.348 ] concat X%I 8 X470 725 X586 656 X586 494 X346 358 X60 358 X60 388 X222 498 X222 516 X8 MLine X%I 4 XEnd X Begin %I CBSpl X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.249357 -0 -0 0.249357 70.2123 520.4 ] concat X%I 8 X204 695 X227 713 X429 714 X456 696 X457 552 X431 533 X225 533 X204 550 X8 CBSpl XEnd X XEnd %I eop X Begin %I Line X%I b 65535 X0 0 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -4.875 105.75 ] concat X%I X249 767 285 693 Line X%I 1 XEnd X Begin %I BSpl X%I b 65535 X1 0 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -4.875 105.75 ] concat X%I 3 X279 664 X208 732 X174 726 X3 BSpl X%I 1 XEnd X Begin %I BSpl X%I b 65535 X1 0 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -4.875 105.75 ] concat X%I 3 X277 651 X199 722 X163 717 X3 BSpl X%I 1 XEnd X Begin %I BSpl X%I b 65535 X1 0 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -4.875 105.75 ] concat X%I 3 X153 712 X245 633 X281 640 X3 BSpl X%I 1 XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-120-* Times-Roman 12 SetF X%I t X[ 1 0 0 1 75 640 ] concat X%I X[ X(PVM) X(console) X] Text XEnd X Begin %I BSpl X%I b 65535 X1 0 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -4.875 208.75 ] concat X%I 3 X156 468 X287 438 X314 451 X3 BSpl X%I 1 XEnd X Begin %I BSpl X%I b 65535 X1 0 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -4.875 208.75 ] concat X%I 3 X322 469 X183 509 X154 491 X3 BSpl X%I 1 XEnd X Begin %I BSpl X%I b 65535 X1 0 1 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -4.875 208.75 ] concat X%I 3 X318 461 X183 496 X155 479 X3 BSpl X%I 1 XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 13.125 205.75 ] concat X%I X79 424 33 18 Elli XEnd X Begin %I Text X%I cfg Black X0 0 0 SetCFg X%I f *-times-medium-r-*-120-* Times-Roman 12 SetF X%I t X[ 1 0 0 1 86 802 ] concat X%I X[ X(application) X(console) X] Text XEnd X Begin %I Elli X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 -17.875 92.75 ] concat X%I X127 698 39 18 Elli XEnd X Begin %I Rect X%I b 65535 X0 0 0 [] 0 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 1 -0 -0 1 32 79 ] concat X%I X55 9 190 127 Rect XEnd X Begin %I Line X%I b 65520 X2 0 0 [12 4] 17 SetB X%I cfg Black X0 0 0 SetCFg X%I cbg White X1 1 1 SetCBg none SetP %I p n X%I t X[ 0.5 -0 -0 0.5 -10.5 29 ] concat X%I X206 283 262 283 Line X%I 2 XEnd X XEnd %I eop X showpage X X%%Trailer X end END_OF_FILE if test 38246 -ne `wc -c <'pvm2.4/doc/PvmPic'`; then echo shar: \"'pvm2.4/doc/PvmPic'\" unpacked with wrong size! fi # end of 'pvm2.4/doc/PvmPic' fi if test -f 'pvm2.4/doc/Version' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/doc/Version'\" else echo shar: Extracting \"'pvm2.4/doc/Version'\" \(4306 characters\) sed "s/^X//" >'pvm2.4/doc/Version' <<'END_OF_FILE' X Version info for PVM 2.4.2 X22 Dec 1992 X X________________________________________________________________________ PVM 2.4.2 [compatible with version 2.4.1 pvmds (*)] X + ALPHA port X + top-level makefile X . fixed libfpvm to truncate trailing spaces in strings X . fixed a few man pages X . moved C2MP arch to IEEE machine class, X . pvm_mstat now returns host index as it should X (*) created new class C2MPCXFP for native floating point. PVM 2.4.1 Patch 2 [never released] X + new fortran library libfpvm, much groovier. X + added DGAV arch class. X . pvmd doesn't catch already ignored signals (useful with bourne shell). PVM 2.4.1 Patch 1 X Improvements X + I386 port. X + 'aimk' sets variable PVMLFLAGS to correct loader flags for ARCH. X Fixes X . cleaned up src for better linting. X . lots of man pages. X . added to host.c. PVM 2.4.1 X Improvements X + KSR1 port. X + TITN port, untested and scary. X + CM5 port. X + pvmuser.h has extern "C" declaration for C++. X + can use pvm_mstat() to find host names, types, and status. X + can use pvm_inithow() to specify raw (non-XDR) message packing, X rcv() can return BadMsg if rx a raw msg from other host data class. X Fixes X . broke CM2 into CM2 and VCM2. X . pvmuser.h has check for multiple include. X . ep= default in host file now works correctly. X . unknown arch types now handled, i.e. pvm can still be homogeneous. X PVM 2.4.0 X Improvements X + added '-o' flag to pvmd ps command. X + user lib now prints error messages by default, turned off by pvm_aerr X + can now specify 'ep=path:path...' for each host in hostfile. X + hostnames (for initiateM, etc) now match the first part X in addition to the fully-qualified name, 'ps' shows short names. X + version checking between pvmd and user lib to prevent running X incompatible code X + direct-connect tcp message mech. available through vsnd() X and vrcv(). X + user lib returns error codes that can be compared to symbols X in "pvmuser.h". X + pvm_perror() function available to print error message. X + 'ps' command now queries remote pvmds to get more information. X + switched to defines for malloc, etc to allow instrumenting heap. X + better hostfile checking: multiple occ of a host, no master host, X master host not first, host '*' to set defaults X + Convex, HP Snake ports X Fixes X . user lib returns error code instead of exiting in case of X fatal error. X . whoami returns PvmNoComp instead of Syserr if process X not enrolled. X . implemented probemulti(). X . made rsh path absolute (/usr/ucb). X . improved signal handling, added arg to reap() and catch(). X . slave pvmd startup talks on stdout now and ignores stderr. X . added lread() function to read complete lines at slave startup. X . added u->u msg seq nos. to allow reassembly when >1 msg X from same process X PVM 2.3.4 X Improvements X + Silicon Graphics IRIS port X + pvmds negotiate maximum udp message length at startup. X Fixes X . fixed f2c f{get,put}n{short,long}() function names. X . removed static limitation on number of hosts (used to be 40). X PVM 2.3.3 X Improvements X + 'barr' command to check barrier/ready status X + pstatus() user call to return size of virtual machine X Fixes X . fixed fortran problem with closed stdin X . fixed malloc bug on process enroll X PVM 2.3.2 X Improvements X + password-less startup via rsh/rcmd X + per-host options in hostfile to X ask for password X specify alternate loginname X specify alternate pvmd executable path X + daemon-daemon version control to prevent mixed versions running X + added f{get,put}n{short,long}() to f2c library X + 'reset' pvmd command to reset the vm. X + can specify "." as host to initiateM() to create on localhost X Fixes X . fixed f{get,put}bytes() X . added status arg to frcv() X . added nulfix for mc in finitiate() X . closed many many fds that got left open before X . fixed incomplete lprocs caused by late messages X . now works with new (sun_family is a bit field X so can't use sizeof) X . fixed frag-out-of-order problem in ulib X PVM 2.2 X + XDR based pvmd-pvmd messages - totally non 2.1 compatible X + get*(), put*() --> getn*(), putn*() X + bcast() --> deprecated X + initiate*() --> initiate() X PVM 2.1 X + XDR based user messages - totally non 2.0 compatible X + initsend() now has no arg X + vestigial command mode on master pvmd X PVM 2.0 X + Complete rewrite X END_OF_FILE if test 4306 -ne `wc -c <'pvm2.4/doc/Version'`; then echo shar: \"'pvm2.4/doc/Version'\" unpacked with wrong size! fi # end of 'pvm2.4/doc/Version' fi if test ! -d 'pvm2.4/f2c' ; then echo shar: Creating directory \"'pvm2.4/f2c'\" mkdir 'pvm2.4/f2c' fi if test ! -d 'pvm2.4/f2c/CRAY' ; then echo shar: Creating directory \"'pvm2.4/f2c/CRAY'\" mkdir 'pvm2.4/f2c/CRAY' fi if test -f 'pvm2.4/f2c/CRAY/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/CRAY/Makefile'\" else echo shar: Extracting \"'pvm2.4/f2c/CRAY/Makefile'\" \(4222 characters\) sed "s/^X//" >'pvm2.4/f2c/CRAY/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Cray X# ARCH = CRAY ARCHCFLAGS = HASRANLIB = f X# END of custom section - leave this line here X# X# Generic half makefile for Fortran to C lib for PVM. X# X# makefile to generate Fortran to C interface library for PVM (generic) X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X fgetstringl.o \ X finitiate.o \ X finitiatem.o \ X finithow.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fputstringl.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o X libf2c.a: $(LOBS) X ar cr libf2c.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libf2c.a ;; esac X clean: X rm -f $(LOBS) libf2c.a X tidy: X rm -f $(LOBS) X fbarrier.o: $(SDIR)/fbarrier.c X $(CC) $(CFLAGS) $(SDIR)/fbarrier.c fenroll.o: $(SDIR)/fenroll.c X $(CC) $(CFLAGS) $(SDIR)/fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.c X $(CC) $(CFLAGS) $(SDIR)/fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.c X $(CC) $(CFLAGS) $(SDIR)/fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.c X $(CC) $(CFLAGS) $(SDIR)/fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.c X $(CC) $(CFLAGS) $(SDIR)/fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.c X $(CC) $(CFLAGS) $(SDIR)/fgetstring.c fgetstringl.o: $(SDIR)/fgetstringl.c X $(CC) $(CFLAGS) $(SDIR)/fgetstringl.c finitiate.o: $(SDIR)/finitiate.c X $(CC) $(CFLAGS) $(SDIR)/finitiate.c finitiatem.o: $(SDIR)/finitiatem.c X $(CC) $(CFLAGS) $(SDIR)/finitiatem.c finithow.o: $(SDIR)/finithow.c X $(CC) $(CFLAGS) $(SDIR)/finithow.c finitsend.o: $(SDIR)/finitsend.c X $(CC) $(CFLAGS) $(SDIR)/finitsend.c fleave.o: $(SDIR)/fleave.c X $(CC) $(CFLAGS) $(SDIR)/fleave.c fprobe.o: $(SDIR)/fprobe.c X $(CC) $(CFLAGS) $(SDIR)/fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.c X $(CC) $(CFLAGS) $(SDIR)/fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.c X $(CC) $(CFLAGS) $(SDIR)/fpstatus.c fputbytes.o: $(SDIR)/fputbytes.c X $(CC) $(CFLAGS) $(SDIR)/fputbytes.c fputncplx.o: $(SDIR)/fputncplx.c X $(CC) $(CFLAGS) $(SDIR)/fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputnfloat.c fputnint.o: $(SDIR)/fputnint.c X $(CC) $(CFLAGS) $(SDIR)/fputnint.c fputnlong.o: $(SDIR)/fputnlong.c X $(CC) $(CFLAGS) $(SDIR)/fputnlong.c fputnshort.o: $(SDIR)/fputnshort.c X $(CC) $(CFLAGS) $(SDIR)/fputnshort.c fputstring.o: $(SDIR)/fputstring.c X $(CC) $(CFLAGS) $(SDIR)/fputstring.c fputstringl.o: $(SDIR)/fputstringl.c X $(CC) $(CFLAGS) $(SDIR)/fputstringl.c fpvmperror.o: $(SDIR)/fpvmperror.c X $(CC) $(CFLAGS) $(SDIR)/fpvmperror.c frcv.o: $(SDIR)/frcv.c X $(CC) $(CFLAGS) $(SDIR)/frcv.c frcvinfo.o: $(SDIR)/frcvinfo.c X $(CC) $(CFLAGS) $(SDIR)/frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/frcvmulti.c fready.o: $(SDIR)/fready.c X $(CC) $(CFLAGS) $(SDIR)/fready.c fsnd.o: $(SDIR)/fsnd.c X $(CC) $(CFLAGS) $(SDIR)/fsnd.c fstatus.o: $(SDIR)/fstatus.c X $(CC) $(CFLAGS) $(SDIR)/fstatus.c fterminate.o: $(SDIR)/fterminate.c X $(CC) $(CFLAGS) $(SDIR)/fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.c X $(CC) $(CFLAGS) $(SDIR)/fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.c X $(CC) $(CFLAGS) $(SDIR)/fwhoami.c fvrcv.o: $(SDIR)/fvrcv.c X $(CC) $(CFLAGS) $(SDIR)/fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.c X $(CC) $(CFLAGS) $(SDIR)/fvsnd.c X END_OF_FILE if test 4222 -ne `wc -c <'pvm2.4/f2c/CRAY/Makefile'`; then echo shar: \"'pvm2.4/f2c/CRAY/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/CRAY/Makefile' fi if test ! -d 'pvm2.4/f2c/CRAYSMP' ; then echo shar: Creating directory \"'pvm2.4/f2c/CRAYSMP'\" mkdir 'pvm2.4/f2c/CRAYSMP' fi if test -f 'pvm2.4/f2c/CRAYSMP/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/CRAYSMP/Makefile'\" else echo shar: Extracting \"'pvm2.4/f2c/CRAYSMP/Makefile'\" \(4230 characters\) sed "s/^X//" >'pvm2.4/f2c/CRAYSMP/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Cray S-MP X# ARCH = CRAYSMP ARCHCFLAGS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for Fortran to C lib for PVM. X# X# makefile to generate Fortran to C interface library for PVM (generic) X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X fgetstringl.o \ X finitiate.o \ X finitiatem.o \ X finithow.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fputstringl.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o X libf2c.a: $(LOBS) X ar cr libf2c.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libf2c.a ;; esac X clean: X rm -f $(LOBS) libf2c.a X tidy: X rm -f $(LOBS) X fbarrier.o: $(SDIR)/fbarrier.c X $(CC) $(CFLAGS) $(SDIR)/fbarrier.c fenroll.o: $(SDIR)/fenroll.c X $(CC) $(CFLAGS) $(SDIR)/fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.c X $(CC) $(CFLAGS) $(SDIR)/fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.c X $(CC) $(CFLAGS) $(SDIR)/fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.c X $(CC) $(CFLAGS) $(SDIR)/fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.c X $(CC) $(CFLAGS) $(SDIR)/fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.c X $(CC) $(CFLAGS) $(SDIR)/fgetstring.c fgetstringl.o: $(SDIR)/fgetstringl.c X $(CC) $(CFLAGS) $(SDIR)/fgetstringl.c finitiate.o: $(SDIR)/finitiate.c X $(CC) $(CFLAGS) $(SDIR)/finitiate.c finitiatem.o: $(SDIR)/finitiatem.c X $(CC) $(CFLAGS) $(SDIR)/finitiatem.c finithow.o: $(SDIR)/finithow.c X $(CC) $(CFLAGS) $(SDIR)/finithow.c finitsend.o: $(SDIR)/finitsend.c X $(CC) $(CFLAGS) $(SDIR)/finitsend.c fleave.o: $(SDIR)/fleave.c X $(CC) $(CFLAGS) $(SDIR)/fleave.c fprobe.o: $(SDIR)/fprobe.c X $(CC) $(CFLAGS) $(SDIR)/fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.c X $(CC) $(CFLAGS) $(SDIR)/fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.c X $(CC) $(CFLAGS) $(SDIR)/fpstatus.c fputbytes.o: $(SDIR)/fputbytes.c X $(CC) $(CFLAGS) $(SDIR)/fputbytes.c fputncplx.o: $(SDIR)/fputncplx.c X $(CC) $(CFLAGS) $(SDIR)/fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputnfloat.c fputnint.o: $(SDIR)/fputnint.c X $(CC) $(CFLAGS) $(SDIR)/fputnint.c fputnlong.o: $(SDIR)/fputnlong.c X $(CC) $(CFLAGS) $(SDIR)/fputnlong.c fputnshort.o: $(SDIR)/fputnshort.c X $(CC) $(CFLAGS) $(SDIR)/fputnshort.c fputstring.o: $(SDIR)/fputstring.c X $(CC) $(CFLAGS) $(SDIR)/fputstring.c fputstringl.o: $(SDIR)/fputstringl.c X $(CC) $(CFLAGS) $(SDIR)/fputstringl.c fpvmperror.o: $(SDIR)/fpvmperror.c X $(CC) $(CFLAGS) $(SDIR)/fpvmperror.c frcv.o: $(SDIR)/frcv.c X $(CC) $(CFLAGS) $(SDIR)/frcv.c frcvinfo.o: $(SDIR)/frcvinfo.c X $(CC) $(CFLAGS) $(SDIR)/frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/frcvmulti.c fready.o: $(SDIR)/fready.c X $(CC) $(CFLAGS) $(SDIR)/fready.c fsnd.o: $(SDIR)/fsnd.c X $(CC) $(CFLAGS) $(SDIR)/fsnd.c fstatus.o: $(SDIR)/fstatus.c X $(CC) $(CFLAGS) $(SDIR)/fstatus.c fterminate.o: $(SDIR)/fterminate.c X $(CC) $(CFLAGS) $(SDIR)/fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.c X $(CC) $(CFLAGS) $(SDIR)/fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.c X $(CC) $(CFLAGS) $(SDIR)/fwhoami.c fvrcv.o: $(SDIR)/fvrcv.c X $(CC) $(CFLAGS) $(SDIR)/fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.c X $(CC) $(CFLAGS) $(SDIR)/fvsnd.c X END_OF_FILE if test 4230 -ne `wc -c <'pvm2.4/f2c/CRAYSMP/Makefile'`; then echo shar: \"'pvm2.4/f2c/CRAYSMP/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/CRAYSMP/Makefile' fi if test ! -d 'pvm2.4/f2c/HP9K' ; then echo shar: Creating directory \"'pvm2.4/f2c/HP9K'\" mkdir 'pvm2.4/f2c/HP9K' fi if test -f 'pvm2.4/f2c/HP9K/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/HP9K/Makefile'\" else echo shar: Extracting \"'pvm2.4/f2c/HP9K/Makefile'\" \(4229 characters\) sed "s/^X//" >'pvm2.4/f2c/HP9K/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/HP Snakeage X# ARCH = HP9K ARCHCFLAGS = HASRANLIB = f X# END of custom section - leave this line here X# X# Generic half makefile for Fortran to C lib for PVM. X# X# makefile to generate Fortran to C interface library for PVM (generic) X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X fgetstringl.o \ X finitiate.o \ X finitiatem.o \ X finithow.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fputstringl.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o X libf2c.a: $(LOBS) X ar cr libf2c.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libf2c.a ;; esac X clean: X rm -f $(LOBS) libf2c.a X tidy: X rm -f $(LOBS) X fbarrier.o: $(SDIR)/fbarrier.c X $(CC) $(CFLAGS) $(SDIR)/fbarrier.c fenroll.o: $(SDIR)/fenroll.c X $(CC) $(CFLAGS) $(SDIR)/fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.c X $(CC) $(CFLAGS) $(SDIR)/fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.c X $(CC) $(CFLAGS) $(SDIR)/fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.c X $(CC) $(CFLAGS) $(SDIR)/fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.c X $(CC) $(CFLAGS) $(SDIR)/fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.c X $(CC) $(CFLAGS) $(SDIR)/fgetstring.c fgetstringl.o: $(SDIR)/fgetstringl.c X $(CC) $(CFLAGS) $(SDIR)/fgetstringl.c finitiate.o: $(SDIR)/finitiate.c X $(CC) $(CFLAGS) $(SDIR)/finitiate.c finitiatem.o: $(SDIR)/finitiatem.c X $(CC) $(CFLAGS) $(SDIR)/finitiatem.c finithow.o: $(SDIR)/finithow.c X $(CC) $(CFLAGS) $(SDIR)/finithow.c finitsend.o: $(SDIR)/finitsend.c X $(CC) $(CFLAGS) $(SDIR)/finitsend.c fleave.o: $(SDIR)/fleave.c X $(CC) $(CFLAGS) $(SDIR)/fleave.c fprobe.o: $(SDIR)/fprobe.c X $(CC) $(CFLAGS) $(SDIR)/fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.c X $(CC) $(CFLAGS) $(SDIR)/fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.c X $(CC) $(CFLAGS) $(SDIR)/fpstatus.c fputbytes.o: $(SDIR)/fputbytes.c X $(CC) $(CFLAGS) $(SDIR)/fputbytes.c fputncplx.o: $(SDIR)/fputncplx.c X $(CC) $(CFLAGS) $(SDIR)/fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputnfloat.c fputnint.o: $(SDIR)/fputnint.c X $(CC) $(CFLAGS) $(SDIR)/fputnint.c fputnlong.o: $(SDIR)/fputnlong.c X $(CC) $(CFLAGS) $(SDIR)/fputnlong.c fputnshort.o: $(SDIR)/fputnshort.c X $(CC) $(CFLAGS) $(SDIR)/fputnshort.c fputstring.o: $(SDIR)/fputstring.c X $(CC) $(CFLAGS) $(SDIR)/fputstring.c fputstringl.o: $(SDIR)/fputstringl.c X $(CC) $(CFLAGS) $(SDIR)/fputstringl.c fpvmperror.o: $(SDIR)/fpvmperror.c X $(CC) $(CFLAGS) $(SDIR)/fpvmperror.c frcv.o: $(SDIR)/frcv.c X $(CC) $(CFLAGS) $(SDIR)/frcv.c frcvinfo.o: $(SDIR)/frcvinfo.c X $(CC) $(CFLAGS) $(SDIR)/frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/frcvmulti.c fready.o: $(SDIR)/fready.c X $(CC) $(CFLAGS) $(SDIR)/fready.c fsnd.o: $(SDIR)/fsnd.c X $(CC) $(CFLAGS) $(SDIR)/fsnd.c fstatus.o: $(SDIR)/fstatus.c X $(CC) $(CFLAGS) $(SDIR)/fstatus.c fterminate.o: $(SDIR)/fterminate.c X $(CC) $(CFLAGS) $(SDIR)/fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.c X $(CC) $(CFLAGS) $(SDIR)/fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.c X $(CC) $(CFLAGS) $(SDIR)/fwhoami.c fvrcv.o: $(SDIR)/fvrcv.c X $(CC) $(CFLAGS) $(SDIR)/fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.c X $(CC) $(CFLAGS) $(SDIR)/fvsnd.c X END_OF_FILE if test 4229 -ne `wc -c <'pvm2.4/f2c/HP9K/Makefile'`; then echo shar: \"'pvm2.4/f2c/HP9K/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/HP9K/Makefile' fi if test ! -d 'pvm2.4/f2c/I860' ; then echo shar: Creating directory \"'pvm2.4/f2c/I860'\" mkdir 'pvm2.4/f2c/I860' fi if test -f 'pvm2.4/f2c/I860/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/I860/Makefile'\" else echo shar: Extracting \"'pvm2.4/f2c/I860/Makefile'\" \(4227 characters\) sed "s/^X//" >'pvm2.4/f2c/I860/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Intel 860 X# ARCH = I860 ARCHCFLAGS = HASRANLIB = f X# END of custom section - leave this line here X# X# Generic half makefile for Fortran to C lib for PVM. X# X# makefile to generate Fortran to C interface library for PVM (generic) X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X fgetstringl.o \ X finitiate.o \ X finitiatem.o \ X finithow.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fputstringl.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o X libf2c.a: $(LOBS) X ar cr libf2c.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libf2c.a ;; esac X clean: X rm -f $(LOBS) libf2c.a X tidy: X rm -f $(LOBS) X fbarrier.o: $(SDIR)/fbarrier.c X $(CC) $(CFLAGS) $(SDIR)/fbarrier.c fenroll.o: $(SDIR)/fenroll.c X $(CC) $(CFLAGS) $(SDIR)/fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.c X $(CC) $(CFLAGS) $(SDIR)/fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.c X $(CC) $(CFLAGS) $(SDIR)/fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.c X $(CC) $(CFLAGS) $(SDIR)/fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.c X $(CC) $(CFLAGS) $(SDIR)/fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.c X $(CC) $(CFLAGS) $(SDIR)/fgetstring.c fgetstringl.o: $(SDIR)/fgetstringl.c X $(CC) $(CFLAGS) $(SDIR)/fgetstringl.c finitiate.o: $(SDIR)/finitiate.c X $(CC) $(CFLAGS) $(SDIR)/finitiate.c finitiatem.o: $(SDIR)/finitiatem.c X $(CC) $(CFLAGS) $(SDIR)/finitiatem.c finithow.o: $(SDIR)/finithow.c X $(CC) $(CFLAGS) $(SDIR)/finithow.c finitsend.o: $(SDIR)/finitsend.c X $(CC) $(CFLAGS) $(SDIR)/finitsend.c fleave.o: $(SDIR)/fleave.c X $(CC) $(CFLAGS) $(SDIR)/fleave.c fprobe.o: $(SDIR)/fprobe.c X $(CC) $(CFLAGS) $(SDIR)/fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.c X $(CC) $(CFLAGS) $(SDIR)/fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.c X $(CC) $(CFLAGS) $(SDIR)/fpstatus.c fputbytes.o: $(SDIR)/fputbytes.c X $(CC) $(CFLAGS) $(SDIR)/fputbytes.c fputncplx.o: $(SDIR)/fputncplx.c X $(CC) $(CFLAGS) $(SDIR)/fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputnfloat.c fputnint.o: $(SDIR)/fputnint.c X $(CC) $(CFLAGS) $(SDIR)/fputnint.c fputnlong.o: $(SDIR)/fputnlong.c X $(CC) $(CFLAGS) $(SDIR)/fputnlong.c fputnshort.o: $(SDIR)/fputnshort.c X $(CC) $(CFLAGS) $(SDIR)/fputnshort.c fputstring.o: $(SDIR)/fputstring.c X $(CC) $(CFLAGS) $(SDIR)/fputstring.c fputstringl.o: $(SDIR)/fputstringl.c X $(CC) $(CFLAGS) $(SDIR)/fputstringl.c fpvmperror.o: $(SDIR)/fpvmperror.c X $(CC) $(CFLAGS) $(SDIR)/fpvmperror.c frcv.o: $(SDIR)/frcv.c X $(CC) $(CFLAGS) $(SDIR)/frcv.c frcvinfo.o: $(SDIR)/frcvinfo.c X $(CC) $(CFLAGS) $(SDIR)/frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/frcvmulti.c fready.o: $(SDIR)/fready.c X $(CC) $(CFLAGS) $(SDIR)/fready.c fsnd.o: $(SDIR)/fsnd.c X $(CC) $(CFLAGS) $(SDIR)/fsnd.c fstatus.o: $(SDIR)/fstatus.c X $(CC) $(CFLAGS) $(SDIR)/fstatus.c fterminate.o: $(SDIR)/fterminate.c X $(CC) $(CFLAGS) $(SDIR)/fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.c X $(CC) $(CFLAGS) $(SDIR)/fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.c X $(CC) $(CFLAGS) $(SDIR)/fwhoami.c fvrcv.o: $(SDIR)/fvrcv.c X $(CC) $(CFLAGS) $(SDIR)/fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.c X $(CC) $(CFLAGS) $(SDIR)/fvsnd.c X END_OF_FILE if test 4227 -ne `wc -c <'pvm2.4/f2c/I860/Makefile'`; then echo shar: \"'pvm2.4/f2c/I860/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/I860/Makefile' fi if test -f 'pvm2.4/f2c/Makefile.body' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/Makefile.body'\" else echo shar: Extracting \"'pvm2.4/f2c/Makefile.body'\" \(4007 characters\) sed "s/^X//" >'pvm2.4/f2c/Makefile.body' <<'END_OF_FILE' X# X# Generic half makefile for Fortran to C lib for PVM. X# X# makefile to generate Fortran to C interface library for PVM (generic) X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X fgetstringl.o \ X finitiate.o \ X finitiatem.o \ X finithow.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fputstringl.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o X libf2c.a: $(LOBS) X ar cr libf2c.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libf2c.a ;; esac X clean: X rm -f $(LOBS) libf2c.a X tidy: X rm -f $(LOBS) X fbarrier.o: $(SDIR)/fbarrier.c X $(CC) $(CFLAGS) $(SDIR)/fbarrier.c fenroll.o: $(SDIR)/fenroll.c X $(CC) $(CFLAGS) $(SDIR)/fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.c X $(CC) $(CFLAGS) $(SDIR)/fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.c X $(CC) $(CFLAGS) $(SDIR)/fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.c X $(CC) $(CFLAGS) $(SDIR)/fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.c X $(CC) $(CFLAGS) $(SDIR)/fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.c X $(CC) $(CFLAGS) $(SDIR)/fgetstring.c fgetstringl.o: $(SDIR)/fgetstringl.c X $(CC) $(CFLAGS) $(SDIR)/fgetstringl.c finitiate.o: $(SDIR)/finitiate.c X $(CC) $(CFLAGS) $(SDIR)/finitiate.c finitiatem.o: $(SDIR)/finitiatem.c X $(CC) $(CFLAGS) $(SDIR)/finitiatem.c finithow.o: $(SDIR)/finithow.c X $(CC) $(CFLAGS) $(SDIR)/finithow.c finitsend.o: $(SDIR)/finitsend.c X $(CC) $(CFLAGS) $(SDIR)/finitsend.c fleave.o: $(SDIR)/fleave.c X $(CC) $(CFLAGS) $(SDIR)/fleave.c fprobe.o: $(SDIR)/fprobe.c X $(CC) $(CFLAGS) $(SDIR)/fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.c X $(CC) $(CFLAGS) $(SDIR)/fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.c X $(CC) $(CFLAGS) $(SDIR)/fpstatus.c fputbytes.o: $(SDIR)/fputbytes.c X $(CC) $(CFLAGS) $(SDIR)/fputbytes.c fputncplx.o: $(SDIR)/fputncplx.c X $(CC) $(CFLAGS) $(SDIR)/fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputnfloat.c fputnint.o: $(SDIR)/fputnint.c X $(CC) $(CFLAGS) $(SDIR)/fputnint.c fputnlong.o: $(SDIR)/fputnlong.c X $(CC) $(CFLAGS) $(SDIR)/fputnlong.c fputnshort.o: $(SDIR)/fputnshort.c X $(CC) $(CFLAGS) $(SDIR)/fputnshort.c fputstring.o: $(SDIR)/fputstring.c X $(CC) $(CFLAGS) $(SDIR)/fputstring.c fputstringl.o: $(SDIR)/fputstringl.c X $(CC) $(CFLAGS) $(SDIR)/fputstringl.c fpvmperror.o: $(SDIR)/fpvmperror.c X $(CC) $(CFLAGS) $(SDIR)/fpvmperror.c frcv.o: $(SDIR)/frcv.c X $(CC) $(CFLAGS) $(SDIR)/frcv.c frcvinfo.o: $(SDIR)/frcvinfo.c X $(CC) $(CFLAGS) $(SDIR)/frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/frcvmulti.c fready.o: $(SDIR)/fready.c X $(CC) $(CFLAGS) $(SDIR)/fready.c fsnd.o: $(SDIR)/fsnd.c X $(CC) $(CFLAGS) $(SDIR)/fsnd.c fstatus.o: $(SDIR)/fstatus.c X $(CC) $(CFLAGS) $(SDIR)/fstatus.c fterminate.o: $(SDIR)/fterminate.c X $(CC) $(CFLAGS) $(SDIR)/fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.c X $(CC) $(CFLAGS) $(SDIR)/fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.c X $(CC) $(CFLAGS) $(SDIR)/fwhoami.c fvrcv.o: $(SDIR)/fvrcv.c X $(CC) $(CFLAGS) $(SDIR)/fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.c X $(CC) $(CFLAGS) $(SDIR)/fvsnd.c X END_OF_FILE if test 4007 -ne `wc -c <'pvm2.4/f2c/Makefile.body'`; then echo shar: \"'pvm2.4/f2c/Makefile.body'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/Makefile.body' fi if test -f 'pvm2.4/f2c/Makefile.custom' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/Makefile.custom'\" else echo shar: Extracting \"'pvm2.4/f2c/Makefile.custom'\" \(238 characters\) sed "s/^X//" >'pvm2.4/f2c/Makefile.custom' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/ X# ARCH = UNKNOWN ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here END_OF_FILE if test 238 -ne `wc -c <'pvm2.4/f2c/Makefile.custom'`; then echo shar: \"'pvm2.4/f2c/Makefile.custom'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/Makefile.custom' fi if test ! -d 'pvm2.4/f2c/NEXT' ; then echo shar: Creating directory \"'pvm2.4/f2c/NEXT'\" mkdir 'pvm2.4/f2c/NEXT' fi if test -f 'pvm2.4/f2c/NEXT/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/NEXT/Makefile'\" else echo shar: Extracting \"'pvm2.4/f2c/NEXT/Makefile'\" \(4222 characters\) sed "s/^X//" >'pvm2.4/f2c/NEXT/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/NeXT X# ARCH = NEXT ARCHCFLAGS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for Fortran to C lib for PVM. X# X# makefile to generate Fortran to C interface library for PVM (generic) X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X fgetstringl.o \ X finitiate.o \ X finitiatem.o \ X finithow.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fputstringl.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o X libf2c.a: $(LOBS) X ar cr libf2c.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libf2c.a ;; esac X clean: X rm -f $(LOBS) libf2c.a X tidy: X rm -f $(LOBS) X fbarrier.o: $(SDIR)/fbarrier.c X $(CC) $(CFLAGS) $(SDIR)/fbarrier.c fenroll.o: $(SDIR)/fenroll.c X $(CC) $(CFLAGS) $(SDIR)/fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.c X $(CC) $(CFLAGS) $(SDIR)/fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.c X $(CC) $(CFLAGS) $(SDIR)/fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.c X $(CC) $(CFLAGS) $(SDIR)/fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.c X $(CC) $(CFLAGS) $(SDIR)/fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.c X $(CC) $(CFLAGS) $(SDIR)/fgetstring.c fgetstringl.o: $(SDIR)/fgetstringl.c X $(CC) $(CFLAGS) $(SDIR)/fgetstringl.c finitiate.o: $(SDIR)/finitiate.c X $(CC) $(CFLAGS) $(SDIR)/finitiate.c finitiatem.o: $(SDIR)/finitiatem.c X $(CC) $(CFLAGS) $(SDIR)/finitiatem.c finithow.o: $(SDIR)/finithow.c X $(CC) $(CFLAGS) $(SDIR)/finithow.c finitsend.o: $(SDIR)/finitsend.c X $(CC) $(CFLAGS) $(SDIR)/finitsend.c fleave.o: $(SDIR)/fleave.c X $(CC) $(CFLAGS) $(SDIR)/fleave.c fprobe.o: $(SDIR)/fprobe.c X $(CC) $(CFLAGS) $(SDIR)/fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.c X $(CC) $(CFLAGS) $(SDIR)/fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.c X $(CC) $(CFLAGS) $(SDIR)/fpstatus.c fputbytes.o: $(SDIR)/fputbytes.c X $(CC) $(CFLAGS) $(SDIR)/fputbytes.c fputncplx.o: $(SDIR)/fputncplx.c X $(CC) $(CFLAGS) $(SDIR)/fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputnfloat.c fputnint.o: $(SDIR)/fputnint.c X $(CC) $(CFLAGS) $(SDIR)/fputnint.c fputnlong.o: $(SDIR)/fputnlong.c X $(CC) $(CFLAGS) $(SDIR)/fputnlong.c fputnshort.o: $(SDIR)/fputnshort.c X $(CC) $(CFLAGS) $(SDIR)/fputnshort.c fputstring.o: $(SDIR)/fputstring.c X $(CC) $(CFLAGS) $(SDIR)/fputstring.c fputstringl.o: $(SDIR)/fputstringl.c X $(CC) $(CFLAGS) $(SDIR)/fputstringl.c fpvmperror.o: $(SDIR)/fpvmperror.c X $(CC) $(CFLAGS) $(SDIR)/fpvmperror.c frcv.o: $(SDIR)/frcv.c X $(CC) $(CFLAGS) $(SDIR)/frcv.c frcvinfo.o: $(SDIR)/frcvinfo.c X $(CC) $(CFLAGS) $(SDIR)/frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/frcvmulti.c fready.o: $(SDIR)/fready.c X $(CC) $(CFLAGS) $(SDIR)/fready.c fsnd.o: $(SDIR)/fsnd.c X $(CC) $(CFLAGS) $(SDIR)/fsnd.c fstatus.o: $(SDIR)/fstatus.c X $(CC) $(CFLAGS) $(SDIR)/fstatus.c fterminate.o: $(SDIR)/fterminate.c X $(CC) $(CFLAGS) $(SDIR)/fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.c X $(CC) $(CFLAGS) $(SDIR)/fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.c X $(CC) $(CFLAGS) $(SDIR)/fwhoami.c fvrcv.o: $(SDIR)/fvrcv.c X $(CC) $(CFLAGS) $(SDIR)/fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.c X $(CC) $(CFLAGS) $(SDIR)/fvsnd.c X END_OF_FILE if test 4222 -ne `wc -c <'pvm2.4/f2c/NEXT/Makefile'`; then echo shar: \"'pvm2.4/f2c/NEXT/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/NEXT/Makefile' fi if test ! -d 'pvm2.4/f2c/PMAX' ; then echo shar: Creating directory \"'pvm2.4/f2c/PMAX'\" mkdir 'pvm2.4/f2c/PMAX' fi if test -f 'pvm2.4/f2c/PMAX/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/PMAX/Makefile'\" else echo shar: Extracting \"'pvm2.4/f2c/PMAX/Makefile'\" \(4226 characters\) sed "s/^X//" >'pvm2.4/f2c/PMAX/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Dec Pmax X# ARCH = PMAX ARCHCFLAGS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for Fortran to C lib for PVM. X# X# makefile to generate Fortran to C interface library for PVM (generic) X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X fgetstringl.o \ X finitiate.o \ X finitiatem.o \ X finithow.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fputstringl.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o X libf2c.a: $(LOBS) X ar cr libf2c.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libf2c.a ;; esac X clean: X rm -f $(LOBS) libf2c.a X tidy: X rm -f $(LOBS) X fbarrier.o: $(SDIR)/fbarrier.c X $(CC) $(CFLAGS) $(SDIR)/fbarrier.c fenroll.o: $(SDIR)/fenroll.c X $(CC) $(CFLAGS) $(SDIR)/fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.c X $(CC) $(CFLAGS) $(SDIR)/fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.c X $(CC) $(CFLAGS) $(SDIR)/fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.c X $(CC) $(CFLAGS) $(SDIR)/fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.c X $(CC) $(CFLAGS) $(SDIR)/fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.c X $(CC) $(CFLAGS) $(SDIR)/fgetstring.c fgetstringl.o: $(SDIR)/fgetstringl.c X $(CC) $(CFLAGS) $(SDIR)/fgetstringl.c finitiate.o: $(SDIR)/finitiate.c X $(CC) $(CFLAGS) $(SDIR)/finitiate.c finitiatem.o: $(SDIR)/finitiatem.c X $(CC) $(CFLAGS) $(SDIR)/finitiatem.c finithow.o: $(SDIR)/finithow.c X $(CC) $(CFLAGS) $(SDIR)/finithow.c finitsend.o: $(SDIR)/finitsend.c X $(CC) $(CFLAGS) $(SDIR)/finitsend.c fleave.o: $(SDIR)/fleave.c X $(CC) $(CFLAGS) $(SDIR)/fleave.c fprobe.o: $(SDIR)/fprobe.c X $(CC) $(CFLAGS) $(SDIR)/fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.c X $(CC) $(CFLAGS) $(SDIR)/fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.c X $(CC) $(CFLAGS) $(SDIR)/fpstatus.c fputbytes.o: $(SDIR)/fputbytes.c X $(CC) $(CFLAGS) $(SDIR)/fputbytes.c fputncplx.o: $(SDIR)/fputncplx.c X $(CC) $(CFLAGS) $(SDIR)/fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputnfloat.c fputnint.o: $(SDIR)/fputnint.c X $(CC) $(CFLAGS) $(SDIR)/fputnint.c fputnlong.o: $(SDIR)/fputnlong.c X $(CC) $(CFLAGS) $(SDIR)/fputnlong.c fputnshort.o: $(SDIR)/fputnshort.c X $(CC) $(CFLAGS) $(SDIR)/fputnshort.c fputstring.o: $(SDIR)/fputstring.c X $(CC) $(CFLAGS) $(SDIR)/fputstring.c fputstringl.o: $(SDIR)/fputstringl.c X $(CC) $(CFLAGS) $(SDIR)/fputstringl.c fpvmperror.o: $(SDIR)/fpvmperror.c X $(CC) $(CFLAGS) $(SDIR)/fpvmperror.c frcv.o: $(SDIR)/frcv.c X $(CC) $(CFLAGS) $(SDIR)/frcv.c frcvinfo.o: $(SDIR)/frcvinfo.c X $(CC) $(CFLAGS) $(SDIR)/frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/frcvmulti.c fready.o: $(SDIR)/fready.c X $(CC) $(CFLAGS) $(SDIR)/fready.c fsnd.o: $(SDIR)/fsnd.c X $(CC) $(CFLAGS) $(SDIR)/fsnd.c fstatus.o: $(SDIR)/fstatus.c X $(CC) $(CFLAGS) $(SDIR)/fstatus.c fterminate.o: $(SDIR)/fterminate.c X $(CC) $(CFLAGS) $(SDIR)/fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.c X $(CC) $(CFLAGS) $(SDIR)/fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.c X $(CC) $(CFLAGS) $(SDIR)/fwhoami.c fvrcv.o: $(SDIR)/fvrcv.c X $(CC) $(CFLAGS) $(SDIR)/fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.c X $(CC) $(CFLAGS) $(SDIR)/fvsnd.c X END_OF_FILE if test 4226 -ne `wc -c <'pvm2.4/f2c/PMAX/Makefile'`; then echo shar: \"'pvm2.4/f2c/PMAX/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/PMAX/Makefile' fi if test ! -d 'pvm2.4/f2c/RIOS' ; then echo shar: Creating directory \"'pvm2.4/f2c/RIOS'\" mkdir 'pvm2.4/f2c/RIOS' fi if test -f 'pvm2.4/f2c/RIOS/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/RIOS/Makefile'\" else echo shar: Extracting \"'pvm2.4/f2c/RIOS/Makefile'\" \(4228 characters\) sed "s/^X//" >'pvm2.4/f2c/RIOS/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/IBM RS6000 X# ARCH = RIOS ARCHCFLAGS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for Fortran to C lib for PVM. X# X# makefile to generate Fortran to C interface library for PVM (generic) X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X fgetstringl.o \ X finitiate.o \ X finitiatem.o \ X finithow.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fputstringl.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o X libf2c.a: $(LOBS) X ar cr libf2c.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libf2c.a ;; esac X clean: X rm -f $(LOBS) libf2c.a X tidy: X rm -f $(LOBS) X fbarrier.o: $(SDIR)/fbarrier.c X $(CC) $(CFLAGS) $(SDIR)/fbarrier.c fenroll.o: $(SDIR)/fenroll.c X $(CC) $(CFLAGS) $(SDIR)/fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.c X $(CC) $(CFLAGS) $(SDIR)/fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.c X $(CC) $(CFLAGS) $(SDIR)/fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.c X $(CC) $(CFLAGS) $(SDIR)/fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.c X $(CC) $(CFLAGS) $(SDIR)/fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.c X $(CC) $(CFLAGS) $(SDIR)/fgetstring.c fgetstringl.o: $(SDIR)/fgetstringl.c X $(CC) $(CFLAGS) $(SDIR)/fgetstringl.c finitiate.o: $(SDIR)/finitiate.c X $(CC) $(CFLAGS) $(SDIR)/finitiate.c finitiatem.o: $(SDIR)/finitiatem.c X $(CC) $(CFLAGS) $(SDIR)/finitiatem.c finithow.o: $(SDIR)/finithow.c X $(CC) $(CFLAGS) $(SDIR)/finithow.c finitsend.o: $(SDIR)/finitsend.c X $(CC) $(CFLAGS) $(SDIR)/finitsend.c fleave.o: $(SDIR)/fleave.c X $(CC) $(CFLAGS) $(SDIR)/fleave.c fprobe.o: $(SDIR)/fprobe.c X $(CC) $(CFLAGS) $(SDIR)/fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.c X $(CC) $(CFLAGS) $(SDIR)/fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.c X $(CC) $(CFLAGS) $(SDIR)/fpstatus.c fputbytes.o: $(SDIR)/fputbytes.c X $(CC) $(CFLAGS) $(SDIR)/fputbytes.c fputncplx.o: $(SDIR)/fputncplx.c X $(CC) $(CFLAGS) $(SDIR)/fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputnfloat.c fputnint.o: $(SDIR)/fputnint.c X $(CC) $(CFLAGS) $(SDIR)/fputnint.c fputnlong.o: $(SDIR)/fputnlong.c X $(CC) $(CFLAGS) $(SDIR)/fputnlong.c fputnshort.o: $(SDIR)/fputnshort.c X $(CC) $(CFLAGS) $(SDIR)/fputnshort.c fputstring.o: $(SDIR)/fputstring.c X $(CC) $(CFLAGS) $(SDIR)/fputstring.c fputstringl.o: $(SDIR)/fputstringl.c X $(CC) $(CFLAGS) $(SDIR)/fputstringl.c fpvmperror.o: $(SDIR)/fpvmperror.c X $(CC) $(CFLAGS) $(SDIR)/fpvmperror.c frcv.o: $(SDIR)/frcv.c X $(CC) $(CFLAGS) $(SDIR)/frcv.c frcvinfo.o: $(SDIR)/frcvinfo.c X $(CC) $(CFLAGS) $(SDIR)/frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/frcvmulti.c fready.o: $(SDIR)/fready.c X $(CC) $(CFLAGS) $(SDIR)/fready.c fsnd.o: $(SDIR)/fsnd.c X $(CC) $(CFLAGS) $(SDIR)/fsnd.c fstatus.o: $(SDIR)/fstatus.c X $(CC) $(CFLAGS) $(SDIR)/fstatus.c fterminate.o: $(SDIR)/fterminate.c X $(CC) $(CFLAGS) $(SDIR)/fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.c X $(CC) $(CFLAGS) $(SDIR)/fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.c X $(CC) $(CFLAGS) $(SDIR)/fwhoami.c fvrcv.o: $(SDIR)/fvrcv.c X $(CC) $(CFLAGS) $(SDIR)/fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.c X $(CC) $(CFLAGS) $(SDIR)/fvsnd.c X END_OF_FILE if test 4228 -ne `wc -c <'pvm2.4/f2c/RIOS/Makefile'`; then echo shar: \"'pvm2.4/f2c/RIOS/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/RIOS/Makefile' fi if test -f 'pvm2.4/f2c/Readme' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/Readme'\" else echo shar: Extracting \"'pvm2.4/f2c/Readme'\" \(1020 characters\) sed "s/^X//" >'pvm2.4/f2c/Readme' <<'END_OF_FILE' X XFORTRAN interface info for PVM X29 Aug 1991 X X________________________________________________________________________ This directory contains the source to a FORTRAN to C interface that allows FORTRAN programs to access the functionality of pvm user routines. X XFORTRAN routines are prepended with an 'f' and are called like a FORTRAN subroutine. For example, call fsnd(proc,instance,msgid) X XFORTRAN subroutines do not return values so the C return values are returned as arguments. For example, call fenroll(proc,inum) and call fstatus(proc,inum,istatus) X There are some questions about how to map Fortran data types into C. The following table gives the appropriate names for the most common case: X X fortran name putn, getn... X ____________ __________ X LOGICAL int X CHARACTER string, stringl X INTEGER int X INTEGER*2 short X REAL float X REAL*8 dfloat X COMPLEX cplx X COMPLEX*16 dcplx X END_OF_FILE if test 1020 -ne `wc -c <'pvm2.4/f2c/Readme'`; then echo shar: \"'pvm2.4/f2c/Readme'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/Readme' fi if test ! -d 'pvm2.4/f2c/SUN3' ; then echo shar: Creating directory \"'pvm2.4/f2c/SUN3'\" mkdir 'pvm2.4/f2c/SUN3' fi if test -f 'pvm2.4/f2c/SUN3/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/SUN3/Makefile'\" else echo shar: Extracting \"'pvm2.4/f2c/SUN3/Makefile'\" \(4223 characters\) sed "s/^X//" >'pvm2.4/f2c/SUN3/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Sun-3 X# ARCH = SUN3 ARCHCFLAGS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for Fortran to C lib for PVM. X# X# makefile to generate Fortran to C interface library for PVM (generic) X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X fgetstringl.o \ X finitiate.o \ X finitiatem.o \ X finithow.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fputstringl.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o X libf2c.a: $(LOBS) X ar cr libf2c.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libf2c.a ;; esac X clean: X rm -f $(LOBS) libf2c.a X tidy: X rm -f $(LOBS) X fbarrier.o: $(SDIR)/fbarrier.c X $(CC) $(CFLAGS) $(SDIR)/fbarrier.c fenroll.o: $(SDIR)/fenroll.c X $(CC) $(CFLAGS) $(SDIR)/fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.c X $(CC) $(CFLAGS) $(SDIR)/fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.c X $(CC) $(CFLAGS) $(SDIR)/fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.c X $(CC) $(CFLAGS) $(SDIR)/fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.c X $(CC) $(CFLAGS) $(SDIR)/fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.c X $(CC) $(CFLAGS) $(SDIR)/fgetstring.c fgetstringl.o: $(SDIR)/fgetstringl.c X $(CC) $(CFLAGS) $(SDIR)/fgetstringl.c finitiate.o: $(SDIR)/finitiate.c X $(CC) $(CFLAGS) $(SDIR)/finitiate.c finitiatem.o: $(SDIR)/finitiatem.c X $(CC) $(CFLAGS) $(SDIR)/finitiatem.c finithow.o: $(SDIR)/finithow.c X $(CC) $(CFLAGS) $(SDIR)/finithow.c finitsend.o: $(SDIR)/finitsend.c X $(CC) $(CFLAGS) $(SDIR)/finitsend.c fleave.o: $(SDIR)/fleave.c X $(CC) $(CFLAGS) $(SDIR)/fleave.c fprobe.o: $(SDIR)/fprobe.c X $(CC) $(CFLAGS) $(SDIR)/fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.c X $(CC) $(CFLAGS) $(SDIR)/fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.c X $(CC) $(CFLAGS) $(SDIR)/fpstatus.c fputbytes.o: $(SDIR)/fputbytes.c X $(CC) $(CFLAGS) $(SDIR)/fputbytes.c fputncplx.o: $(SDIR)/fputncplx.c X $(CC) $(CFLAGS) $(SDIR)/fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputnfloat.c fputnint.o: $(SDIR)/fputnint.c X $(CC) $(CFLAGS) $(SDIR)/fputnint.c fputnlong.o: $(SDIR)/fputnlong.c X $(CC) $(CFLAGS) $(SDIR)/fputnlong.c fputnshort.o: $(SDIR)/fputnshort.c X $(CC) $(CFLAGS) $(SDIR)/fputnshort.c fputstring.o: $(SDIR)/fputstring.c X $(CC) $(CFLAGS) $(SDIR)/fputstring.c fputstringl.o: $(SDIR)/fputstringl.c X $(CC) $(CFLAGS) $(SDIR)/fputstringl.c fpvmperror.o: $(SDIR)/fpvmperror.c X $(CC) $(CFLAGS) $(SDIR)/fpvmperror.c frcv.o: $(SDIR)/frcv.c X $(CC) $(CFLAGS) $(SDIR)/frcv.c frcvinfo.o: $(SDIR)/frcvinfo.c X $(CC) $(CFLAGS) $(SDIR)/frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/frcvmulti.c fready.o: $(SDIR)/fready.c X $(CC) $(CFLAGS) $(SDIR)/fready.c fsnd.o: $(SDIR)/fsnd.c X $(CC) $(CFLAGS) $(SDIR)/fsnd.c fstatus.o: $(SDIR)/fstatus.c X $(CC) $(CFLAGS) $(SDIR)/fstatus.c fterminate.o: $(SDIR)/fterminate.c X $(CC) $(CFLAGS) $(SDIR)/fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.c X $(CC) $(CFLAGS) $(SDIR)/fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.c X $(CC) $(CFLAGS) $(SDIR)/fwhoami.c fvrcv.o: $(SDIR)/fvrcv.c X $(CC) $(CFLAGS) $(SDIR)/fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.c X $(CC) $(CFLAGS) $(SDIR)/fvsnd.c X END_OF_FILE if test 4223 -ne `wc -c <'pvm2.4/f2c/SUN3/Makefile'`; then echo shar: \"'pvm2.4/f2c/SUN3/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/SUN3/Makefile' fi if test ! -d 'pvm2.4/f2c/SUN4' ; then echo shar: Creating directory \"'pvm2.4/f2c/SUN4'\" mkdir 'pvm2.4/f2c/SUN4' fi if test -f 'pvm2.4/f2c/SUN4/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/SUN4/Makefile'\" else echo shar: Extracting \"'pvm2.4/f2c/SUN4/Makefile'\" \(4236 characters\) sed "s/^X//" >'pvm2.4/f2c/SUN4/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Sun-4, Sun-4c, etc X# ARCH = SUN4 ARCHCFLAGS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for Fortran to C lib for PVM. X# X# makefile to generate Fortran to C interface library for PVM (generic) X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X fgetstringl.o \ X finitiate.o \ X finitiatem.o \ X finithow.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fputstringl.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o X libf2c.a: $(LOBS) X ar cr libf2c.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libf2c.a ;; esac X clean: X rm -f $(LOBS) libf2c.a X tidy: X rm -f $(LOBS) X fbarrier.o: $(SDIR)/fbarrier.c X $(CC) $(CFLAGS) $(SDIR)/fbarrier.c fenroll.o: $(SDIR)/fenroll.c X $(CC) $(CFLAGS) $(SDIR)/fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.c X $(CC) $(CFLAGS) $(SDIR)/fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.c X $(CC) $(CFLAGS) $(SDIR)/fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.c X $(CC) $(CFLAGS) $(SDIR)/fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.c X $(CC) $(CFLAGS) $(SDIR)/fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.c X $(CC) $(CFLAGS) $(SDIR)/fgetstring.c fgetstringl.o: $(SDIR)/fgetstringl.c X $(CC) $(CFLAGS) $(SDIR)/fgetstringl.c finitiate.o: $(SDIR)/finitiate.c X $(CC) $(CFLAGS) $(SDIR)/finitiate.c finitiatem.o: $(SDIR)/finitiatem.c X $(CC) $(CFLAGS) $(SDIR)/finitiatem.c finithow.o: $(SDIR)/finithow.c X $(CC) $(CFLAGS) $(SDIR)/finithow.c finitsend.o: $(SDIR)/finitsend.c X $(CC) $(CFLAGS) $(SDIR)/finitsend.c fleave.o: $(SDIR)/fleave.c X $(CC) $(CFLAGS) $(SDIR)/fleave.c fprobe.o: $(SDIR)/fprobe.c X $(CC) $(CFLAGS) $(SDIR)/fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.c X $(CC) $(CFLAGS) $(SDIR)/fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.c X $(CC) $(CFLAGS) $(SDIR)/fpstatus.c fputbytes.o: $(SDIR)/fputbytes.c X $(CC) $(CFLAGS) $(SDIR)/fputbytes.c fputncplx.o: $(SDIR)/fputncplx.c X $(CC) $(CFLAGS) $(SDIR)/fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.c X $(CC) $(CFLAGS) $(SDIR)/fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.c X $(CC) $(CFLAGS) $(SDIR)/fputnfloat.c fputnint.o: $(SDIR)/fputnint.c X $(CC) $(CFLAGS) $(SDIR)/fputnint.c fputnlong.o: $(SDIR)/fputnlong.c X $(CC) $(CFLAGS) $(SDIR)/fputnlong.c fputnshort.o: $(SDIR)/fputnshort.c X $(CC) $(CFLAGS) $(SDIR)/fputnshort.c fputstring.o: $(SDIR)/fputstring.c X $(CC) $(CFLAGS) $(SDIR)/fputstring.c fputstringl.o: $(SDIR)/fputstringl.c X $(CC) $(CFLAGS) $(SDIR)/fputstringl.c fpvmperror.o: $(SDIR)/fpvmperror.c X $(CC) $(CFLAGS) $(SDIR)/fpvmperror.c frcv.o: $(SDIR)/frcv.c X $(CC) $(CFLAGS) $(SDIR)/frcv.c frcvinfo.o: $(SDIR)/frcvinfo.c X $(CC) $(CFLAGS) $(SDIR)/frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/frcvmulti.c fready.o: $(SDIR)/fready.c X $(CC) $(CFLAGS) $(SDIR)/fready.c fsnd.o: $(SDIR)/fsnd.c X $(CC) $(CFLAGS) $(SDIR)/fsnd.c fstatus.o: $(SDIR)/fstatus.c X $(CC) $(CFLAGS) $(SDIR)/fstatus.c fterminate.o: $(SDIR)/fterminate.c X $(CC) $(CFLAGS) $(SDIR)/fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.c X $(CC) $(CFLAGS) $(SDIR)/fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.c X $(CC) $(CFLAGS) $(SDIR)/fwhoami.c fvrcv.o: $(SDIR)/fvrcv.c X $(CC) $(CFLAGS) $(SDIR)/fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.c X $(CC) $(CFLAGS) $(SDIR)/fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.c X $(CC) $(CFLAGS) $(SDIR)/fvsnd.c X END_OF_FILE if test 4236 -ne `wc -c <'pvm2.4/f2c/SUN4/Makefile'`; then echo shar: \"'pvm2.4/f2c/SUN4/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/SUN4/Makefile' fi if test -f 'pvm2.4/f2c/fbarrier.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fbarrier.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fbarrier.c'\" \(294 characters\) sed "s/^X//" >'pvm2.4/f2c/fbarrier.c' <<'END_OF_FILE' X#include "namefix.h" X#include "nulfix.h" X X#if NAMESTYLE == UPPERCASENAME XFBARRIER(name,n,info) X#endif X#if NAMESTYLE == PLAINNAME fbarrier(name,n,info) X#endif X#if NAMESTYLE == NAMEBAR fbarrier_( name,n,info ) X#endif X char *name ; X int *n, *info; X{ X NULFIX(name); X *info = barrier( name,*n ) ; X} END_OF_FILE if test 294 -ne `wc -c <'pvm2.4/f2c/fbarrier.c'`; then echo shar: \"'pvm2.4/f2c/fbarrier.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fbarrier.c' fi if test -f 'pvm2.4/f2c/fenroll.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fenroll.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fenroll.c'\" \(269 characters\) sed "s/^X//" >'pvm2.4/f2c/fenroll.c' <<'END_OF_FILE' X#include "namefix.h" X#include "nulfix.h" X X#if NAMESTYLE == UPPERCASENAME XFENROLL(name,num) X#endif X#if NAMESTYLE == PLAINNAME fenroll(name,num) X#endif X#if NAMESTYLE == NAMEBAR fenroll_( name,num ) X#endif X int *num; X char *name ; X{ X NULFIX(name); X *num = enroll(name); X} END_OF_FILE if test 269 -ne `wc -c <'pvm2.4/f2c/fenroll.c'`; then echo shar: \"'pvm2.4/f2c/fenroll.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fenroll.c' fi if test -f 'pvm2.4/f2c/fgetbytes.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fgetbytes.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fgetbytes.c'\" \(264 characters\) sed "s/^X//" >'pvm2.4/f2c/fgetbytes.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFGETBYTES(p,len,info) X#endif X#if NAMESTYLE == PLAINNAME fgetbytes(p,len,info) X#endif X#if NAMESTYLE == NAMEBAR fgetbytes_(p,len,info) X#endif X int *len, *info ; X char *p ; X{ X *info = getbytes( p, *len ) ; X} END_OF_FILE if test 264 -ne `wc -c <'pvm2.4/f2c/fgetbytes.c'`; then echo shar: \"'pvm2.4/f2c/fgetbytes.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fgetbytes.c' fi if test -f 'pvm2.4/f2c/fgetncplx.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fgetncplx.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fgetncplx.c'\" \(258 characters\) sed "s/^X//" >'pvm2.4/f2c/fgetncplx.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFGETNCPLX(xp,num,info) X#endif X#if NAMESTYLE == PLAINNAME fgetncplx(xp,num,info) X#endif X#if NAMESTYLE == NAMEBAR fgetncplx_(xp,num,info) X#endif X float *xp; X int *num, *info; X{ X *info = getncplx(xp, *num); X} END_OF_FILE if test 258 -ne `wc -c <'pvm2.4/f2c/fgetncplx.c'`; then echo shar: \"'pvm2.4/f2c/fgetncplx.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fgetncplx.c' fi if test -f 'pvm2.4/f2c/fgetndcplx.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fgetndcplx.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fgetndcplx.c'\" \(263 characters\) sed "s/^X//" >'pvm2.4/f2c/fgetndcplx.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFGETNDCPLX(zp,num,info) X#endif X#if NAMESTYLE == PLAINNAME fgetndcplx(zp,num,info) X#endif X#if NAMESTYLE == NAMEBAR fgetndcplx_(zp,num,info) X#endif X double *zp; X int *num, *info; X{ X *info = getndcplx(zp, *num); X} END_OF_FILE if test 263 -ne `wc -c <'pvm2.4/f2c/fgetndcplx.c'`; then echo shar: \"'pvm2.4/f2c/fgetndcplx.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fgetndcplx.c' fi if test -f 'pvm2.4/f2c/fgetndfloat.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fgetndfloat.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fgetndfloat.c'\" \(267 characters\) sed "s/^X//" >'pvm2.4/f2c/fgetndfloat.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFGETNDFLOAT(dp,num,info) X#endif X#if NAMESTYLE == PLAINNAME fgetndfloat(dp,num,info) X#endif X#if NAMESTYLE == NAMEBAR fgetndfloat_(dp,num,info) X#endif X double *dp; X int *num, *info; X{ X *info = getndfloat(dp, *num); X} END_OF_FILE if test 267 -ne `wc -c <'pvm2.4/f2c/fgetndfloat.c'`; then echo shar: \"'pvm2.4/f2c/fgetndfloat.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fgetndfloat.c' fi if test -f 'pvm2.4/f2c/fgetnfloat.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fgetnfloat.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fgetnfloat.c'\" \(262 characters\) sed "s/^X//" >'pvm2.4/f2c/fgetnfloat.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFGETNFLOAT(fp,num,info) X#endif X#if NAMESTYLE == PLAINNAME fgetnfloat(fp,num,info) X#endif X#if NAMESTYLE == NAMEBAR fgetnfloat_(fp,num,info) X#endif X float *fp; X int *num, *info; X{ X *info = getnfloat(fp, *num); X} END_OF_FILE if test 262 -ne `wc -c <'pvm2.4/f2c/fgetnfloat.c'`; then echo shar: \"'pvm2.4/f2c/fgetnfloat.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fgetnfloat.c' fi if test -f 'pvm2.4/f2c/fgetnint.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fgetnint.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fgetnint.c'\" \(247 characters\) sed "s/^X//" >'pvm2.4/f2c/fgetnint.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFGETNINT(np,num,info) X#endif X#if NAMESTYLE == PLAINNAME fgetnint(np,num,info) X#endif X#if NAMESTYLE == NAMEBAR fgetnint_(np,num,info) X#endif X int *np, *num, *info; X{ X *info = getnint(np, *num); X} END_OF_FILE if test 247 -ne `wc -c <'pvm2.4/f2c/fgetnint.c'`; then echo shar: \"'pvm2.4/f2c/fgetnint.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fgetnint.c' fi if test -f 'pvm2.4/f2c/fgetnlong.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fgetnlong.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fgetnlong.c'\" \(257 characters\) sed "s/^X//" >'pvm2.4/f2c/fgetnlong.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFGETNLONG(np,num,info) X#endif X#if NAMESTYLE == PLAINNAME fgetnlong(np,num,info) X#endif X#if NAMESTYLE == NAMEBAR fgetnlong_(np,num,info) X#endif X long *np; X int *num, *info; X{ X *info = getnlong(np, *num); X} END_OF_FILE if test 257 -ne `wc -c <'pvm2.4/f2c/fgetnlong.c'`; then echo shar: \"'pvm2.4/f2c/fgetnlong.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fgetnlong.c' fi if test -f 'pvm2.4/f2c/fgetnshort.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fgetnshort.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fgetnshort.c'\" \(262 characters\) sed "s/^X//" >'pvm2.4/f2c/fgetnshort.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFGETNSHORT(np,num,info) X#endif X#if NAMESTYLE == PLAINNAME fgetnshort(np,num,info) X#endif X#if NAMESTYLE == NAMEBAR fgetnshort_(np,num,info) X#endif X short *np; X int *num, *info; X{ X *info = getnshort(np, *num); X} END_OF_FILE if test 262 -ne `wc -c <'pvm2.4/f2c/fgetnshort.c'`; then echo shar: \"'pvm2.4/f2c/fgetnshort.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fgetnshort.c' fi if test -f 'pvm2.4/f2c/fgetstring.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fgetstring.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fgetstring.c'\" \(245 characters\) sed "s/^X//" >'pvm2.4/f2c/fgetstring.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFGETSTRING(p,info) X#endif X#if NAMESTYLE == PLAINNAME fgetstring(p,info) X#endif X#if NAMESTYLE == NAMEBAR fgetstring_( p,info ) X#endif X int *info ; X char *p ; X{ X *info = getstring( p ) ; X} END_OF_FILE if test 245 -ne `wc -c <'pvm2.4/f2c/fgetstring.c'`; then echo shar: \"'pvm2.4/f2c/fgetstring.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fgetstring.c' fi if test -f 'pvm2.4/f2c/fgetstringl.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fgetstringl.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fgetstringl.c'\" \(441 characters\) sed "s/^X//" >'pvm2.4/f2c/fgetstringl.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFGETSTRINGL(p, len,info) X#endif X#if NAMESTYLE == PLAINNAME fgetstringl(p,len,info) X#endif X#if NAMESTYLE == NAMEBAR fgetstringl_(p,len,info) X#endif X char *p; X int *len, *info; X{ X static char *q = 0; X static int ql = 0; X int l = 2 * *len; X X if (!q) X q = (char*)malloc(ql = l); X else X if (l > ql) { X free(q); X q = (char*)malloc(ql = l); X } X *info = getstring(q); X bcopy(q, p, *len); X} END_OF_FILE if test 441 -ne `wc -c <'pvm2.4/f2c/fgetstringl.c'`; then echo shar: \"'pvm2.4/f2c/fgetstringl.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fgetstringl.c' fi if test -f 'pvm2.4/f2c/frcv.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/frcv.c'\" else echo shar: Extracting \"'pvm2.4/f2c/frcv.c'\" \(219 characters\) sed "s/^X//" >'pvm2.4/f2c/frcv.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFRCV(type,stat) X#endif X#if NAMESTYLE == PLAINNAME frcv(type,stat) X#endif X#if NAMESTYLE == NAMEBAR frcv_(type,stat) X#endif X int *type, *stat; X{ X *stat = rcv(*type); X} X END_OF_FILE if test 219 -ne `wc -c <'pvm2.4/f2c/frcv.c'`; then echo shar: \"'pvm2.4/f2c/frcv.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/frcv.c' fi if test -f 'pvm2.4/f2c/finithow.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/finithow.c'\" else echo shar: Extracting \"'pvm2.4/f2c/finithow.c'\" \(237 characters\) sed "s/^X//" >'pvm2.4/f2c/finithow.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFINITHOW(how, info) X#endif X#if NAMESTYLE == PLAINNAME finithow(how, info) X#endif X#if NAMESTYLE == NAMEBAR finithow_(how, info) X#endif X int *how, *info; X{ X *info = pvm_inithow(*how); X} X END_OF_FILE if test 237 -ne `wc -c <'pvm2.4/f2c/finithow.c'`; then echo shar: \"'pvm2.4/f2c/finithow.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/finithow.c' fi if test -f 'pvm2.4/f2c/finitiate.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/finitiate.c'\" else echo shar: Extracting \"'pvm2.4/f2c/finitiate.c'\" \(321 characters\) sed "s/^X//" >'pvm2.4/f2c/finitiate.c' <<'END_OF_FILE' X#include "namefix.h" X#include "nulfix.h" X X#if NAMESTYLE == UPPERCASENAME XFINITIATE(aout, mc, inc) X#endif X#if NAMESTYLE == PLAINNAME finitiate(aout, mc, inc) X#endif X#if NAMESTYLE == NAMEBAR finitiate_(aout, mc, inc) X#endif X char *aout, *mc; X int *inc; X{ X NULFIX(aout); X if (mc) X NULFIX(mc); X *inc = initiate(aout, mc); X} END_OF_FILE if test 321 -ne `wc -c <'pvm2.4/f2c/finitiate.c'`; then echo shar: \"'pvm2.4/f2c/finitiate.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/finitiate.c' fi if test -f 'pvm2.4/f2c/finitiatem.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/finitiatem.c'\" else echo shar: Extracting \"'pvm2.4/f2c/finitiatem.c'\" \(325 characters\) sed "s/^X//" >'pvm2.4/f2c/finitiatem.c' <<'END_OF_FILE' X#include "namefix.h" X#include "nulfix.h" X X#if NAMESTYLE == UPPERCASENAME XFINITIATEM(aout, mc, inc) X#endif X#if NAMESTYLE == PLAINNAME finitiatem(aout, mc, inc) X#endif X#if NAMESTYLE == NAMEBAR finitiatem_(aout, mc, inc) X#endif X char *aout, *mc; X int *inc; X{ X NULFIX(aout); X if (mc) X NULFIX(mc); X *inc = initiateM(aout, mc); X} END_OF_FILE if test 325 -ne `wc -c <'pvm2.4/f2c/finitiatem.c'`; then echo shar: \"'pvm2.4/f2c/finitiatem.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/finitiatem.c' fi if test -f 'pvm2.4/f2c/finitsend.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/finitsend.c'\" else echo shar: Extracting \"'pvm2.4/f2c/finitsend.c'\" \(182 characters\) sed "s/^X//" >'pvm2.4/f2c/finitsend.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFINITSEND() X#endif X#if NAMESTYLE == PLAINNAME finitsend() X#endif X#if NAMESTYLE == NAMEBAR finitsend_() X#endif X{ X initsend() ; X} END_OF_FILE if test 182 -ne `wc -c <'pvm2.4/f2c/finitsend.c'`; then echo shar: \"'pvm2.4/f2c/finitsend.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/finitsend.c' fi if test -f 'pvm2.4/f2c/fleave.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fleave.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fleave.c'\" \(170 characters\) sed "s/^X//" >'pvm2.4/f2c/fleave.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFLEAVE() X#endif X#if NAMESTYLE == PLAINNAME fleave() X#endif X#if NAMESTYLE == NAMEBAR fleave_() X#endif X{ X leave() ; X} END_OF_FILE if test 170 -ne `wc -c <'pvm2.4/f2c/fleave.c'`; then echo shar: \"'pvm2.4/f2c/fleave.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fleave.c' fi if test -f 'pvm2.4/f2c/fprobe.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fprobe.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fprobe.c'\" \(236 characters\) sed "s/^X//" >'pvm2.4/f2c/fprobe.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFPROBE(type,status) X#endif X#if NAMESTYLE == PLAINNAME fprobe(type,status) X#endif X#if NAMESTYLE == NAMEBAR fprobe_(type,status) X#endif X int *type, *status; X{ X *status = probe(*type); X} END_OF_FILE if test 236 -ne `wc -c <'pvm2.4/f2c/fprobe.c'`; then echo shar: \"'pvm2.4/f2c/fprobe.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fprobe.c' fi if test -f 'pvm2.4/f2c/fprobemulti.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fprobemulti.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fprobemulti.c'\" \(269 characters\) sed "s/^X//" >'pvm2.4/f2c/fprobemulti.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFPROBEMULTI(n,typs,type) X#endif X#if NAMESTYLE == PLAINNAME fprobemulti(n,typs,type) X#endif X#if NAMESTYLE == NAMEBAR fprobemulti_(n,typs,type) X#endif X int *n; X int *typs; X int *type; X{ X *type = probemulti(*n, typs); X} END_OF_FILE if test 269 -ne `wc -c <'pvm2.4/f2c/fprobemulti.c'`; then echo shar: \"'pvm2.4/f2c/fprobemulti.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fprobemulti.c' fi if test -f 'pvm2.4/f2c/fpstatus.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fpstatus.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fpstatus.c'\" \(279 characters\) sed "s/^X//" >'pvm2.4/f2c/fpstatus.c' <<'END_OF_FILE' X#include "namefix.h" X X#if NAMESTYLE == UPPERCASENAME XFPSTATUS(nproc, mixed, info) X#endif X#if NAMESTYLE == PLAINNAME fpstatus(nproc, mixed, info) X#endif X#if NAMESTYLE == NAMEBAR fpstatus_(nproc, mixed, info) X#endif X int *nproc, *mixed, *info; X{ X *info = pstatus(nproc, mixed); X} X END_OF_FILE if test 279 -ne `wc -c <'pvm2.4/f2c/fpstatus.c'`; then echo shar: \"'pvm2.4/f2c/fpstatus.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fpstatus.c' fi if test -f 'pvm2.4/f2c/fputbytes.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fputbytes.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fputbytes.c'\" \(264 characters\) sed "s/^X//" >'pvm2.4/f2c/fputbytes.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFPUTBYTES(p,len,info) X#endif X#if NAMESTYLE == PLAINNAME fputbytes(p,len,info) X#endif X#if NAMESTYLE == NAMEBAR fputbytes_(p,len,info) X#endif X int *len, *info ; X char *p ; X{ X *info = putbytes( p, *len ) ; X} END_OF_FILE if test 264 -ne `wc -c <'pvm2.4/f2c/fputbytes.c'`; then echo shar: \"'pvm2.4/f2c/fputbytes.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fputbytes.c' fi if test -f 'pvm2.4/f2c/fputncplx.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fputncplx.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fputncplx.c'\" \(258 characters\) sed "s/^X//" >'pvm2.4/f2c/fputncplx.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFPUTNCPLX(xp,num,info) X#endif X#if NAMESTYLE == PLAINNAME fputncplx(xp,num,info) X#endif X#if NAMESTYLE == NAMEBAR fputncplx_(xp,num,info) X#endif X float *xp; X int *num, *info; X{ X *info = putncplx(xp, *num); X} END_OF_FILE if test 258 -ne `wc -c <'pvm2.4/f2c/fputncplx.c'`; then echo shar: \"'pvm2.4/f2c/fputncplx.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fputncplx.c' fi if test -f 'pvm2.4/f2c/fputndcplx.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fputndcplx.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fputndcplx.c'\" \(263 characters\) sed "s/^X//" >'pvm2.4/f2c/fputndcplx.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFPUTNDCPLX(zp,num,info) X#endif X#if NAMESTYLE == PLAINNAME fputndcplx(zp,num,info) X#endif X#if NAMESTYLE == NAMEBAR fputndcplx_(zp,num,info) X#endif X double *zp; X int *num, *info; X{ X *info = putndcplx(zp, *num); X} END_OF_FILE if test 263 -ne `wc -c <'pvm2.4/f2c/fputndcplx.c'`; then echo shar: \"'pvm2.4/f2c/fputndcplx.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fputndcplx.c' fi if test -f 'pvm2.4/f2c/fputndfloat.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fputndfloat.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fputndfloat.c'\" \(267 characters\) sed "s/^X//" >'pvm2.4/f2c/fputndfloat.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFPUTNDFLOAT(dp,num,info) X#endif X#if NAMESTYLE == PLAINNAME fputndfloat(dp,num,info) X#endif X#if NAMESTYLE == NAMEBAR fputndfloat_(dp,num,info) X#endif X double *dp; X int *num, *info; X{ X *info = putndfloat(dp, *num); X} END_OF_FILE if test 267 -ne `wc -c <'pvm2.4/f2c/fputndfloat.c'`; then echo shar: \"'pvm2.4/f2c/fputndfloat.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fputndfloat.c' fi if test -f 'pvm2.4/f2c/fputnfloat.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fputnfloat.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fputnfloat.c'\" \(262 characters\) sed "s/^X//" >'pvm2.4/f2c/fputnfloat.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFPUTNFLOAT(fp,num,info) X#endif X#if NAMESTYLE == PLAINNAME fputnfloat(fp,num,info) X#endif X#if NAMESTYLE == NAMEBAR fputnfloat_(fp,num,info) X#endif X float *fp; X int *num, *info; X{ X *info = putnfloat(fp, *num); X} END_OF_FILE if test 262 -ne `wc -c <'pvm2.4/f2c/fputnfloat.c'`; then echo shar: \"'pvm2.4/f2c/fputnfloat.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fputnfloat.c' fi if test -f 'pvm2.4/f2c/fputnint.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fputnint.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fputnint.c'\" \(248 characters\) sed "s/^X//" >'pvm2.4/f2c/fputnint.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFPUTNINT(np,num,info) X#endif X#if NAMESTYLE == PLAINNAME fputnint(np,num,info) X#endif X#if NAMESTYLE == NAMEBAR fputnint_(np,num,info) X#endif X int *np, *num, *info ; X{ X *info = putnint(np, *num); X} END_OF_FILE if test 248 -ne `wc -c <'pvm2.4/f2c/fputnint.c'`; then echo shar: \"'pvm2.4/f2c/fputnint.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fputnint.c' fi if test -f 'pvm2.4/f2c/fputnlong.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fputnlong.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fputnlong.c'\" \(258 characters\) sed "s/^X//" >'pvm2.4/f2c/fputnlong.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFPUTNLONG(np,num,info) X#endif X#if NAMESTYLE == PLAINNAME fputnlong(np,num,info) X#endif X#if NAMESTYLE == NAMEBAR fputnlong_(np,num,info) X#endif X long *np; X int *num, *info ; X{ X *info = putnlong(np, *num); X} END_OF_FILE if test 258 -ne `wc -c <'pvm2.4/f2c/fputnlong.c'`; then echo shar: \"'pvm2.4/f2c/fputnlong.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fputnlong.c' fi if test -f 'pvm2.4/f2c/fputnshort.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fputnshort.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fputnshort.c'\" \(263 characters\) sed "s/^X//" >'pvm2.4/f2c/fputnshort.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFPUTNSHORT(np,num,info) X#endif X#if NAMESTYLE == PLAINNAME fputnshort(np,num,info) X#endif X#if NAMESTYLE == NAMEBAR fputnshort_(np,num,info) X#endif X short *np; X int *num, *info ; X{ X *info = putnshort(np, *num); X} END_OF_FILE if test 263 -ne `wc -c <'pvm2.4/f2c/fputnshort.c'`; then echo shar: \"'pvm2.4/f2c/fputnshort.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fputnshort.c' fi if test -f 'pvm2.4/f2c/fputstring.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fputstring.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fputstring.c'\" \(279 characters\) sed "s/^X//" >'pvm2.4/f2c/fputstring.c' <<'END_OF_FILE' X#include "namefix.h" X#include "nulfix.h" X X#if NAMESTYLE == UPPERCASENAME XFPUTSTRING(p,info) X#endif X#if NAMESTYLE == PLAINNAME fputstring(p,info) X#endif X#if NAMESTYLE == NAMEBAR fputstring_( p,info ) X#endif X int *info ; X char *p ; X{ X NULFIX(p); X *info = putstring( p ) ; X} END_OF_FILE if test 279 -ne `wc -c <'pvm2.4/f2c/fputstring.c'`; then echo shar: \"'pvm2.4/f2c/fputstring.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fputstring.c' fi if test -f 'pvm2.4/f2c/fputstringl.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fputstringl.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fputstringl.c'\" \(457 characters\) sed "s/^X//" >'pvm2.4/f2c/fputstringl.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFPUTSTRINGL(p,len,info) X#endif X#if NAMESTYLE == PLAINNAME fputstringl(p,len,info) X#endif X#if NAMESTYLE == NAMEBAR fputstringl_(p,len,info) X#endif X char *p; X int *len, *info; X{ X static char *q = 0; X static int ql = 0; X int l = *len + 1; X X if (!q) X q = (char*)malloc(ql = l); X else X if (l > ql) { X free(q); X q = (char*)malloc(ql = l); X } X bcopy(p, q, --l); X *(q + l) = '\0'; X *info = putstring(q); X} END_OF_FILE if test 457 -ne `wc -c <'pvm2.4/f2c/fputstringl.c'`; then echo shar: \"'pvm2.4/f2c/fputstringl.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fputstringl.c' fi if test -f 'pvm2.4/f2c/fpvmperror.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fpvmperror.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fpvmperror.c'\" \(232 characters\) sed "s/^X//" >'pvm2.4/f2c/fpvmperror.c' <<'END_OF_FILE' X#include "namefix.h" X#include "nulfix.h" X X#if NAMESTYLE == UPPERCASENAME XFPVMPERROR(p) X#endif X#if NAMESTYLE == PLAINNAME fpvmperror(p) X#endif X#if NAMESTYLE == NAMEBAR fpvmperror_(p) X#endif X char *p; X{ X NULFIX(p); X pvm_perror(p); X} X END_OF_FILE if test 232 -ne `wc -c <'pvm2.4/f2c/fpvmperror.c'`; then echo shar: \"'pvm2.4/f2c/fpvmperror.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fpvmperror.c' fi if test -f 'pvm2.4/f2c/frcvinfo.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/frcvinfo.c'\" else echo shar: Extracting \"'pvm2.4/f2c/frcvinfo.c'\" \(330 characters\) sed "s/^X//" >'pvm2.4/f2c/frcvinfo.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFRCVINFO(len, type, proc, inum, info) X#endif X#if NAMESTYLE == PLAINNAME frcvinfo(len, type, proc, inum, info) X#endif X#if NAMESTYLE == NAMEBAR frcvinfo_(len, type, proc, inum, info) X#endif X int *len, *type, *inum, *info; X char *proc; X{ X *info = rcvinfo(len, type, proc, inum); X} END_OF_FILE if test 330 -ne `wc -c <'pvm2.4/f2c/frcvinfo.c'`; then echo shar: \"'pvm2.4/f2c/frcvinfo.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/frcvinfo.c' fi if test -f 'pvm2.4/f2c/frcvmulti.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/frcvmulti.c'\" else echo shar: Extracting \"'pvm2.4/f2c/frcvmulti.c'\" \(267 characters\) sed "s/^X//" >'pvm2.4/f2c/frcvmulti.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFRCVMULTI(n, typs, stat) X#endif X#if NAMESTYLE == PLAINNAME frcvmulti(n, typs, stat) X#endif X#if NAMESTYLE == NAMEBAR frcvmulti_(n, typs, stat) X#endif X int *n; X int *typs; X int *stat; X{ X *stat = rcvmulti(*n, typs); X} END_OF_FILE if test 267 -ne `wc -c <'pvm2.4/f2c/frcvmulti.c'`; then echo shar: \"'pvm2.4/f2c/frcvmulti.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/frcvmulti.c' fi if test -f 'pvm2.4/f2c/fready.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fready.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fready.c'\" \(290 characters\) sed "s/^X//" >'pvm2.4/f2c/fready.c' <<'END_OF_FILE' X#include "namefix.h" X#include "nulfix.h" X X#if NAMESTYLE == UPPERCASENAME XFREADY(event, info) X#endif X#if NAMESTYLE == PLAINNAME fready(event, info) X#endif X#if NAMESTYLE == NAMEBAR fready_( event, info ) X#endif X int *info ; X char *event ; X{ X NULFIX(event); X *info = ready( event ) ; X} END_OF_FILE if test 290 -ne `wc -c <'pvm2.4/f2c/fready.c'`; then echo shar: \"'pvm2.4/f2c/fready.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fready.c' fi if test -f 'pvm2.4/f2c/fsnd.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fsnd.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fsnd.c'\" \(326 characters\) sed "s/^X//" >'pvm2.4/f2c/fsnd.c' <<'END_OF_FILE' X#include "namefix.h" X#include "nulfix.h" X X#if NAMESTYLE == UPPERCASENAME XFSND(proc, inum, type, info) X#endif X#if NAMESTYLE == PLAINNAME fsnd(proc, inum, type, info) X#endif X#if NAMESTYLE == NAMEBAR fsnd_(proc, inum, type, info) X#endif X char *proc; X int *inum, *type, *info; X{ X NULFIX(proc); X *info = snd(proc, *inum, *type); X} END_OF_FILE if test 326 -ne `wc -c <'pvm2.4/f2c/fsnd.c'`; then echo shar: \"'pvm2.4/f2c/fsnd.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fsnd.c' fi if test -f 'pvm2.4/f2c/fstatus.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fstatus.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fstatus.c'\" \(318 characters\) sed "s/^X//" >'pvm2.4/f2c/fstatus.c' <<'END_OF_FILE' X#include "namefix.h" X#include "nulfix.h" X X#if NAMESTYLE == UPPERCASENAME XFSTATUS(name,inum,pstatus) X#endif X#if NAMESTYLE == PLAINNAME fstatus(name,inum,pstatus) X#endif X#if NAMESTYLE == NAMEBAR fstatus_( name,inum,pstatus ) X#endif X char *name ; X int *inum, *pstatus; X{ X NULFIX(name); X *pstatus = status(name,*inum); X} X END_OF_FILE if test 318 -ne `wc -c <'pvm2.4/f2c/fstatus.c'`; then echo shar: \"'pvm2.4/f2c/fstatus.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fstatus.c' fi if test -f 'pvm2.4/f2c/fterminate.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fterminate.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fterminate.c'\" \(317 characters\) sed "s/^X//" >'pvm2.4/f2c/fterminate.c' <<'END_OF_FILE' X#include "namefix.h" X#include "nulfix.h" X X#if NAMESTYLE == UPPERCASENAME XFTERMINATE(proc,inc,info) X#endif X#if NAMESTYLE == PLAINNAME fterminate(proc,inc,info) X#endif X#if NAMESTYLE == NAMEBAR fterminate_( proc, inc, info ) X#endif X char *proc ; X int *inc, *info ; X{ X NULFIX(proc); X *info = terminate( proc, *inc ) ; X} END_OF_FILE if test 317 -ne `wc -c <'pvm2.4/f2c/fterminate.c'`; then echo shar: \"'pvm2.4/f2c/fterminate.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fterminate.c' fi if test -f 'pvm2.4/f2c/fvrcv.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fvrcv.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fvrcv.c'\" \(226 characters\) sed "s/^X//" >'pvm2.4/f2c/fvrcv.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFVRCV(type, stat) X#endif X#if NAMESTYLE == PLAINNAME fvrcv(type, stat) X#endif X#if NAMESTYLE == NAMEBAR fvrcv_(type, stat) X#endif X int *type, *stat; X{ X *stat = vrcv(*type); X} X END_OF_FILE if test 226 -ne `wc -c <'pvm2.4/f2c/fvrcv.c'`; then echo shar: \"'pvm2.4/f2c/fvrcv.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fvrcv.c' fi if test -f 'pvm2.4/f2c/fvrcvmulti.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fvrcvmulti.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fvrcvmulti.c'\" \(272 characters\) sed "s/^X//" >'pvm2.4/f2c/fvrcvmulti.c' <<'END_OF_FILE' X#include "namefix.h" X#if NAMESTYLE == UPPERCASENAME XFVRCVMULTI(n, typs, stat) X#endif X#if NAMESTYLE == PLAINNAME fvrcvmulti(n, typs, stat) X#endif X#if NAMESTYLE == NAMEBAR fvrcvmulti_(n, typs, stat) X#endif X int *n; X int *typs; X int *stat; X{ X *stat = vrcvmulti(*n, typs); X} X END_OF_FILE if test 272 -ne `wc -c <'pvm2.4/f2c/fvrcvmulti.c'`; then echo shar: \"'pvm2.4/f2c/fvrcvmulti.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fvrcvmulti.c' fi if test -f 'pvm2.4/f2c/fvsnd.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fvsnd.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fvsnd.c'\" \(331 characters\) sed "s/^X//" >'pvm2.4/f2c/fvsnd.c' <<'END_OF_FILE' X#include "namefix.h" X#include "nulfix.h" X X#if NAMESTYLE == UPPERCASENAME XFVSND(proc, inum, type, info) X#endif X#if NAMESTYLE == PLAINNAME fvsnd(proc, inum, type, info) X#endif X#if NAMESTYLE == NAMEBAR fvsnd_(proc, inum, type, info) X#endif X char *proc; X int *inum, *type, *info; X{ X NULFIX(proc); X *info = vsnd(proc, *inum, *type); X} X END_OF_FILE if test 331 -ne `wc -c <'pvm2.4/f2c/fvsnd.c'`; then echo shar: \"'pvm2.4/f2c/fvsnd.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fvsnd.c' fi if test -f 'pvm2.4/f2c/fwaituntil.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fwaituntil.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fwaituntil.c'\" \(303 characters\) sed "s/^X//" >'pvm2.4/f2c/fwaituntil.c' <<'END_OF_FILE' X#include "namefix.h" X#include "nulfix.h" X X#if NAMESTYLE == UPPERCASENAME XFWAITUNTIL(event,info) X#endif X#if NAMESTYLE == PLAINNAME fwaituntil(event,info) X#endif X#if NAMESTYLE == NAMEBAR fwaituntil_( event,info ) X#endif X int *info ; X char *event ; X{ X NULFIX(event); X *info = waituntil( event ) ; X} END_OF_FILE if test 303 -ne `wc -c <'pvm2.4/f2c/fwaituntil.c'`; then echo shar: \"'pvm2.4/f2c/fwaituntil.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fwaituntil.c' fi if test -f 'pvm2.4/f2c/fwhoami.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/fwhoami.c'\" else echo shar: Extracting \"'pvm2.4/f2c/fwhoami.c'\" \(269 characters\) sed "s/^X//" >'pvm2.4/f2c/fwhoami.c' <<'END_OF_FILE' X#include "namefix.h" X X#if NAMESTYLE == UPPERCASENAME XFWHOAMI(proc,inc,info) X#endif X#if NAMESTYLE == PLAINNAME fwhoami(proc,inc,info) X#endif X#if NAMESTYLE == NAMEBAR fwhoami_( proc, inc, info ) X#endif X char *proc ; X int *inc, *info ; X{ X *info = whoami( proc, inc ) ; X} END_OF_FILE if test 269 -ne `wc -c <'pvm2.4/f2c/fwhoami.c'`; then echo shar: \"'pvm2.4/f2c/fwhoami.c'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/fwhoami.c' fi if test -f 'pvm2.4/f2c/namefix.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/namefix.h'\" else echo shar: Extracting \"'pvm2.4/f2c/namefix.h'\" \(262 characters\) sed "s/^X//" >'pvm2.4/f2c/namefix.h' <<'END_OF_FILE' X X#define PLAINNAME 1 X#define UPPERCASENAME 2 X#define NAMEBAR 3 X X#if defined(CRAY) X#define NAMESTYLE UPPERCASENAME X#endif X X#if defined(RIOS) || defined(HP9K) || defined(NEXT) X#define NAMESTYLE PLAINNAME X#endif X X#ifndef NAMESTYLE X#define NAMESTYLE NAMEBAR X#endif X END_OF_FILE if test 262 -ne `wc -c <'pvm2.4/f2c/namefix.h'`; then echo shar: \"'pvm2.4/f2c/namefix.h'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/namefix.h' fi if test -f 'pvm2.4/f2c/nulfix.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/f2c/nulfix.h'\" else echo shar: Extracting \"'pvm2.4/f2c/nulfix.h'\" \(567 characters\) sed "s/^X//" >'pvm2.4/f2c/nulfix.h' <<'END_OF_FILE' X/* X * nulfix.h X * X * This is a hack to provide null-terminated strings. X * It allows the user to write strings like "foo\0". X * The idea is that the above works implicitly on some X * machines, but not on others, so we just recognize the X * pattern and fix it. Of course, this causes other X * problems... X * X * Mar 1991 Robert Manchek manchek@CS.UTK.EDU. X * X$Log$ X * X*/ X X#if defined(CRAY) || defined(HP9K) || defined(NEXT) X X#define NULFIX(s) { \ X char *p; \ X for (p = s; *p && !(*p == '\\' && *(p + 1) == '0'); p++); \ X *p = 0; } X X#else X X#define NULFIX(s) X X#endif X END_OF_FILE if test 567 -ne `wc -c <'pvm2.4/f2c/nulfix.h'`; then echo shar: \"'pvm2.4/f2c/nulfix.h'\" unpacked with wrong size! fi # end of 'pvm2.4/f2c/nulfix.h' fi if test ! -d 'pvm2.4/fort_examp' ; then echo shar: Creating directory \"'pvm2.4/fort_examp'\" mkdir 'pvm2.4/fort_examp' fi if test ! -d 'pvm2.4/fort_examp/CRAY' ; then echo shar: Creating directory \"'pvm2.4/fort_examp/CRAY'\" mkdir 'pvm2.4/fort_examp/CRAY' fi if test -f 'pvm2.4/fort_examp/CRAY/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/CRAY/Makefile'\" else echo shar: Extracting \"'pvm2.4/fort_examp/CRAY/Makefile'\" \(577 characters\) sed "s/^X//" >'pvm2.4/fort_examp/CRAY/Makefile' <<'END_OF_FILE' X# ARCH = CRAY XF77 = cf77 X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc IDIR = $(SDIR)/../$(ARCH) PLIB = $(SDIR)/../src/$(ARCH)/libpvm.a PFLIB = $(SDIR)/../libfpvm/$(ARCH)/libfpvm.a X XFFLAGS = -O X all: fhost node X fhost: $(SDIR)/fhost.f X $(F77) $(FFLAGS) -o fhost $(SDIR)/fhost.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv fhost $(IDIR) X node: $(SDIR)/node.f X $(F77) $(FFLAGS) -o node $(SDIR)/node.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv node $(IDIR) X END_OF_FILE if test 577 -ne `wc -c <'pvm2.4/fort_examp/CRAY/Makefile'`; then echo shar: \"'pvm2.4/fort_examp/CRAY/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/CRAY/Makefile' fi if test ! -d 'pvm2.4/fort_examp/HP9K' ; then echo shar: Creating directory \"'pvm2.4/fort_examp/HP9K'\" mkdir 'pvm2.4/fort_examp/HP9K' fi if test -f 'pvm2.4/fort_examp/HP9K/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/HP9K/Makefile'\" else echo shar: Extracting \"'pvm2.4/fort_examp/HP9K/Makefile'\" \(576 characters\) sed "s/^X//" >'pvm2.4/fort_examp/HP9K/Makefile' <<'END_OF_FILE' X# ARCH = HP9K XF77 = f77 X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc IDIR = $(SDIR)/../$(ARCH) PLIB = $(SDIR)/../src/$(ARCH)/libpvm.a PFLIB = $(SDIR)/../libfpvm/$(ARCH)/libfpvm.a X XFFLAGS = -O X all: fhost node X fhost: $(SDIR)/fhost.f X $(F77) $(FFLAGS) -o fhost $(SDIR)/fhost.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv fhost $(IDIR) X node: $(SDIR)/node.f X $(F77) $(FFLAGS) -o node $(SDIR)/node.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv node $(IDIR) X END_OF_FILE if test 576 -ne `wc -c <'pvm2.4/fort_examp/HP9K/Makefile'`; then echo shar: \"'pvm2.4/fort_examp/HP9K/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/HP9K/Makefile' fi if test -f 'pvm2.4/fort_examp/Makefile.body' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/Makefile.body'\" else echo shar: Extracting \"'pvm2.4/fort_examp/Makefile.body'\" \(499 characters\) sed "s/^X//" >'pvm2.4/fort_examp/Makefile.body' <<'END_OF_FILE' X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc IDIR = $(SDIR)/../$(ARCH) PLIB = $(SDIR)/../src/$(ARCH)/libpvm.a PFLIB = $(SDIR)/../libfpvm/$(ARCH)/libfpvm.a X XFFLAGS = -O X all: fhost node X fhost: $(SDIR)/fhost.f X $(F77) $(FFLAGS) -o fhost $(SDIR)/fhost.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv fhost $(IDIR) X node: $(SDIR)/node.f X $(F77) $(FFLAGS) -o node $(SDIR)/node.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv node $(IDIR) X END_OF_FILE if test 499 -ne `wc -c <'pvm2.4/fort_examp/Makefile.body'`; then echo shar: \"'pvm2.4/fort_examp/Makefile.body'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/Makefile.body' fi if test ! -d 'pvm2.4/fort_examp/PMAX' ; then echo shar: Creating directory \"'pvm2.4/fort_examp/PMAX'\" mkdir 'pvm2.4/fort_examp/PMAX' fi if test -f 'pvm2.4/fort_examp/PMAX/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/PMAX/Makefile'\" else echo shar: Extracting \"'pvm2.4/fort_examp/PMAX/Makefile'\" \(576 characters\) sed "s/^X//" >'pvm2.4/fort_examp/PMAX/Makefile' <<'END_OF_FILE' X# ARCH = PMAX XF77 = f77 X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc IDIR = $(SDIR)/../$(ARCH) PLIB = $(SDIR)/../src/$(ARCH)/libpvm.a PFLIB = $(SDIR)/../libfpvm/$(ARCH)/libfpvm.a X XFFLAGS = -O X all: fhost node X fhost: $(SDIR)/fhost.f X $(F77) $(FFLAGS) -o fhost $(SDIR)/fhost.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv fhost $(IDIR) X node: $(SDIR)/node.f X $(F77) $(FFLAGS) -o node $(SDIR)/node.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv node $(IDIR) X END_OF_FILE if test 576 -ne `wc -c <'pvm2.4/fort_examp/PMAX/Makefile'`; then echo shar: \"'pvm2.4/fort_examp/PMAX/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/PMAX/Makefile' fi if test ! -d 'pvm2.4/fort_examp/RIOS' ; then echo shar: Creating directory \"'pvm2.4/fort_examp/RIOS'\" mkdir 'pvm2.4/fort_examp/RIOS' fi if test -f 'pvm2.4/fort_examp/RIOS/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/RIOS/Makefile'\" else echo shar: Extracting \"'pvm2.4/fort_examp/RIOS/Makefile'\" \(576 characters\) sed "s/^X//" >'pvm2.4/fort_examp/RIOS/Makefile' <<'END_OF_FILE' X# ARCH = RIOS XF77 = xlf X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc IDIR = $(SDIR)/../$(ARCH) PLIB = $(SDIR)/../src/$(ARCH)/libpvm.a PFLIB = $(SDIR)/../libfpvm/$(ARCH)/libfpvm.a X XFFLAGS = -O X all: fhost node X fhost: $(SDIR)/fhost.f X $(F77) $(FFLAGS) -o fhost $(SDIR)/fhost.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv fhost $(IDIR) X node: $(SDIR)/node.f X $(F77) $(FFLAGS) -o node $(SDIR)/node.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv node $(IDIR) X END_OF_FILE if test 576 -ne `wc -c <'pvm2.4/fort_examp/RIOS/Makefile'`; then echo shar: \"'pvm2.4/fort_examp/RIOS/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/RIOS/Makefile' fi if test ! -d 'pvm2.4/fort_examp/RT' ; then echo shar: Creating directory \"'pvm2.4/fort_examp/RT'\" mkdir 'pvm2.4/fort_examp/RT' fi if test -f 'pvm2.4/fort_examp/RT/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/RT/Makefile'\" else echo shar: Extracting \"'pvm2.4/fort_examp/RT/Makefile'\" \(574 characters\) sed "s/^X//" >'pvm2.4/fort_examp/RT/Makefile' <<'END_OF_FILE' X# ARCH = RT XF77 = f77 X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc IDIR = $(SDIR)/../$(ARCH) PLIB = $(SDIR)/../src/$(ARCH)/libpvm.a PFLIB = $(SDIR)/../libfpvm/$(ARCH)/libfpvm.a X XFFLAGS = -O X all: fhost node X fhost: $(SDIR)/fhost.f X $(F77) $(FFLAGS) -o fhost $(SDIR)/fhost.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv fhost $(IDIR) X node: $(SDIR)/node.f X $(F77) $(FFLAGS) -o node $(SDIR)/node.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv node $(IDIR) X END_OF_FILE if test 574 -ne `wc -c <'pvm2.4/fort_examp/RT/Makefile'`; then echo shar: \"'pvm2.4/fort_examp/RT/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/RT/Makefile' fi if test -f 'pvm2.4/fort_examp/Readme' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/Readme'\" else echo shar: Extracting \"'pvm2.4/fort_examp/Readme'\" \(185 characters\) sed "s/^X//" >'pvm2.4/fort_examp/Readme' <<'END_OF_FILE' X Readme file for Fortran examples X8 Sep 1991 X X________________________________________________________________________ X This directory contains example PVM fortran codes and makefile. X END_OF_FILE if test 185 -ne `wc -c <'pvm2.4/fort_examp/Readme'`; then echo shar: \"'pvm2.4/fort_examp/Readme'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/Readme' fi if test ! -d 'pvm2.4/fort_examp/SGI' ; then echo shar: Creating directory \"'pvm2.4/fort_examp/SGI'\" mkdir 'pvm2.4/fort_examp/SGI' fi if test -f 'pvm2.4/fort_examp/SGI/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/SGI/Makefile'\" else echo shar: Extracting \"'pvm2.4/fort_examp/SGI/Makefile'\" \(575 characters\) sed "s/^X//" >'pvm2.4/fort_examp/SGI/Makefile' <<'END_OF_FILE' X# ARCH = SGI XF77 = f77 X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc IDIR = $(SDIR)/../$(ARCH) PLIB = $(SDIR)/../src/$(ARCH)/libpvm.a PFLIB = $(SDIR)/../libfpvm/$(ARCH)/libfpvm.a X XFFLAGS = -O X all: fhost node X fhost: $(SDIR)/fhost.f X $(F77) $(FFLAGS) -o fhost $(SDIR)/fhost.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv fhost $(IDIR) X node: $(SDIR)/node.f X $(F77) $(FFLAGS) -o node $(SDIR)/node.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv node $(IDIR) X END_OF_FILE if test 575 -ne `wc -c <'pvm2.4/fort_examp/SGI/Makefile'`; then echo shar: \"'pvm2.4/fort_examp/SGI/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/SGI/Makefile' fi if test ! -d 'pvm2.4/fort_examp/SUN3' ; then echo shar: Creating directory \"'pvm2.4/fort_examp/SUN3'\" mkdir 'pvm2.4/fort_examp/SUN3' fi if test -f 'pvm2.4/fort_examp/SUN3/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/SUN3/Makefile'\" else echo shar: Extracting \"'pvm2.4/fort_examp/SUN3/Makefile'\" \(576 characters\) sed "s/^X//" >'pvm2.4/fort_examp/SUN3/Makefile' <<'END_OF_FILE' X# ARCH = SUN3 XF77 = f77 X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc IDIR = $(SDIR)/../$(ARCH) PLIB = $(SDIR)/../src/$(ARCH)/libpvm.a PFLIB = $(SDIR)/../libfpvm/$(ARCH)/libfpvm.a X XFFLAGS = -O X all: fhost node X fhost: $(SDIR)/fhost.f X $(F77) $(FFLAGS) -o fhost $(SDIR)/fhost.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv fhost $(IDIR) X node: $(SDIR)/node.f X $(F77) $(FFLAGS) -o node $(SDIR)/node.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv node $(IDIR) X END_OF_FILE if test 576 -ne `wc -c <'pvm2.4/fort_examp/SUN3/Makefile'`; then echo shar: \"'pvm2.4/fort_examp/SUN3/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/SUN3/Makefile' fi if test ! -d 'pvm2.4/fort_examp/SUN4' ; then echo shar: Creating directory \"'pvm2.4/fort_examp/SUN4'\" mkdir 'pvm2.4/fort_examp/SUN4' fi if test -f 'pvm2.4/fort_examp/SUN4/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/SUN4/Makefile'\" else echo shar: Extracting \"'pvm2.4/fort_examp/SUN4/Makefile'\" \(576 characters\) sed "s/^X//" >'pvm2.4/fort_examp/SUN4/Makefile' <<'END_OF_FILE' X# ARCH = SUN4 XF77 = f77 X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc IDIR = $(SDIR)/../$(ARCH) PLIB = $(SDIR)/../src/$(ARCH)/libpvm.a PFLIB = $(SDIR)/../libfpvm/$(ARCH)/libfpvm.a X XFFLAGS = -O X all: fhost node X fhost: $(SDIR)/fhost.f X $(F77) $(FFLAGS) -o fhost $(SDIR)/fhost.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv fhost $(IDIR) X node: $(SDIR)/node.f X $(F77) $(FFLAGS) -o node $(SDIR)/node.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv node $(IDIR) X END_OF_FILE if test 576 -ne `wc -c <'pvm2.4/fort_examp/SUN4/Makefile'`; then echo shar: \"'pvm2.4/fort_examp/SUN4/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/SUN4/Makefile' fi if test ! -d 'pvm2.4/fort_examp/SYMM' ; then echo shar: Creating directory \"'pvm2.4/fort_examp/SYMM'\" mkdir 'pvm2.4/fort_examp/SYMM' fi if test -f 'pvm2.4/fort_examp/SYMM/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/SYMM/Makefile'\" else echo shar: Extracting \"'pvm2.4/fort_examp/SYMM/Makefile'\" \(580 characters\) sed "s/^X//" >'pvm2.4/fort_examp/SYMM/Makefile' <<'END_OF_FILE' X# ARCH = SYMM XF77 = fortran X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc IDIR = $(SDIR)/../$(ARCH) PLIB = $(SDIR)/../src/$(ARCH)/libpvm.a PFLIB = $(SDIR)/../libfpvm/$(ARCH)/libfpvm.a X XFFLAGS = -O X all: fhost node X fhost: $(SDIR)/fhost.f X $(F77) $(FFLAGS) -o fhost $(SDIR)/fhost.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv fhost $(IDIR) X node: $(SDIR)/node.f X $(F77) $(FFLAGS) -o node $(SDIR)/node.f $(PFLIB) $(PLIB) $(PVMLFLAGS) X mv node $(IDIR) X END_OF_FILE if test 580 -ne `wc -c <'pvm2.4/fort_examp/SYMM/Makefile'`; then echo shar: \"'pvm2.4/fort_examp/SYMM/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/SYMM/Makefile' fi if test ! -d 'pvm2.4/fort_examp/TITN' ; then echo shar: Creating directory \"'pvm2.4/fort_examp/TITN'\" mkdir 'pvm2.4/fort_examp/TITN' fi if test -f 'pvm2.4/fort_examp/TITN/fhost.f' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/TITN/fhost.f'\" else echo shar: Extracting \"'pvm2.4/fort_examp/TITN/fhost.f'\" \(1996 characters\) sed "s/^X//" >'pvm2.4/fort_examp/TITN/fhost.f' <<'END_OF_FILE' X program fhost c --------------------------------------------------------- c Example fortran program illustrating the use of PVM c --------------------------------------------------------- X integer i, info, nproc, msgtype, mynum, inst(32) X integer instance, lth X double precision result(32), data(100) X character*12 nodename X character*8 arch X c ------------ Starting up all the tasks --------------------------- X c Enroll this program in PVM X call fenroll( 'fhost', mynum ) X if( mynum .lt. 0 ) then X print *,'failure in fenroll on host' X stop X endif X c Initiate nproc instances of node program X print *,'How many node programs (1-32)?' X read *, nproc c c If arch is set to '*' then ANY configured machine is acceptable c otherwise arch should be set to architecture type you wish to use. X arch = '*' X X do 10 i=1,nproc X call finitiate( 'node', arch, inst(i) ) X if( inst(i) .lt. 0 ) then X print *,'failure in finitiate at instance',i X stop X endif X 10 continue X c ------- Begin user program -------- X X n = 10 c Initiate data array X do 20 i=1,n X data(i) = 1 X 20 continue X c broadcast data to all node programs by using instance= -1 in fsnd X call finitsend() X call fputnint( n, 1, info ) X call fputnint( nproc, 1, info ) X call fputndfloat( data, n, info ) X msgtype = 1 X call fsnd( 'node', -1, msgtype, info ) X X c wait for results from nodes X msgtype = 2 X do 30 i=1,nproc X call frcv( msgtype, info ) X call fgetndfloat( result(i), 1, info ) X c Print result from node X call frcvinfo( lth, msgtype, nodename, instance, info) X print *,'result from node ',instance,' is ',result(i) X 30 continue X X c --------- End user program -------- X c program finished leave PVM before exiting X call fleave() X stop X end END_OF_FILE if test 1996 -ne `wc -c <'pvm2.4/fort_examp/TITN/fhost.f'`; then echo shar: \"'pvm2.4/fort_examp/TITN/fhost.f'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/TITN/fhost.f' fi if test -f 'pvm2.4/fort_examp/TITN/makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/TITN/makefile'\" else echo shar: Extracting \"'pvm2.4/fort_examp/TITN/makefile'\" \(534 characters\) sed "s/^X//" >'pvm2.4/fort_examp/TITN/makefile' <<'END_OF_FILE' X# ARCH = TITN XF77 = fc X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = . CC = cc IDIR = ../../$(ARCH) PLIB = ../../src/$(ARCH)/libpvm.a PFLIB = ../../libfpvm/$(ARCH)/libfpvm.a X XFFLAGS = -O X all: fhost node X fhost: $(SDIR)/fhost.f X $(F77) $(FFLAGS) -o fhost $(SDIR)/fhost.f $(PFLIB) $(PLIB) X mv fhost $(IDIR) X node: $(SDIR)/node.f X $(F77) $(FFLAGS) -o node $(SDIR)/node.f $(PFLIB) $(PLIB) X mv node $(IDIR) X END_OF_FILE if test 534 -ne `wc -c <'pvm2.4/fort_examp/TITN/makefile'`; then echo shar: \"'pvm2.4/fort_examp/TITN/makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/TITN/makefile' fi if test -f 'pvm2.4/fort_examp/TITN/node.f' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/TITN/node.f'\" else echo shar: Extracting \"'pvm2.4/fort_examp/TITN/node.f'\" \(1985 characters\) sed "s/^X//" >'pvm2.4/fort_examp/TITN/node.f' <<'END_OF_FILE' X program node c ------------------------------------------------------ c Example fortran program illustrating use of PVM calls c ------------------------------------------------------ X integer info, mynum, hostnum, bytes, msgtype X double precision result, data(100) X double precision work X character*16 host X c Enroll this program in PVM X call fenroll( 'node', mynum ) X if( mynum .lt. 0) then X print *,'failure in fenroll on node' X stop X endif X c ------- Begin user program -------- X c Receive data from host X msgtype = 1 X call frcv( msgtype, info ) X call fgetnint( n, 1, info ) X call fgetnint( nproc, 1, info ) X call fgetndfloat( data, n, info ) X call frcvinfo( bytes, msgtype, host, hostnum, info ) X c Do calculations with data X result = work( n, data, mynum, nproc ) X c Send result to host X call finitsend() X call fputndfloat( result, 1, info ) X msgtype = 2 X call fsnd( 'fhost', hostnum, msgtype, info ) X c --------- End user program -------- X c Program finished. Leave PVM before exiting X call fleave() X stop X end X X double precision function work( n, data, me, nproc ) c -------------------------------------- c Just a simple routine for illustration c -------------------------------------- X double precision data(*), sum, psum X integer i, n, me, inum X X sum = 0.0 X do 10 i=1,n X sum = sum + me * data(i) X 10 continue c ---------------------------------------- c Pass partial result to neighboring node c to illustrate node-to-node communication c ---------------------------------------- X call finitsend() X call fputndfloat(sum, 1, info) X inum = me+1 X if( inum .eq. nproc ) inum = 0 X call fsnd( 'node', inum, 77, info ) X call frcv( 77, info ) X call fgetndfloat(psum, 1, info) X X work = sum + psum X return X end END_OF_FILE if test 1985 -ne `wc -c <'pvm2.4/fort_examp/TITN/node.f'`; then echo shar: \"'pvm2.4/fort_examp/TITN/node.f'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/TITN/node.f' fi if test -f 'pvm2.4/fort_examp/fhost.f' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/fhost.f'\" else echo shar: Extracting \"'pvm2.4/fort_examp/fhost.f'\" \(1996 characters\) sed "s/^X//" >'pvm2.4/fort_examp/fhost.f' <<'END_OF_FILE' X program fhost c --------------------------------------------------------- c Example fortran program illustrating the use of PVM c --------------------------------------------------------- X integer i, info, nproc, msgtype, mynum, inst(32) X integer instance, lth X double precision result(32), data(100) X character*12 nodename X character*8 arch X c ------------ Starting up all the tasks --------------------------- X c Enroll this program in PVM X call fenroll( "fhost", mynum ) X if( mynum .lt. 0 ) then X print *,'failure in fenroll on host' X stop X endif X c Initiate nproc instances of node program X print *,'How many node programs (1-32)?' X read *, nproc c c If arch is set to "*" then ANY configured machine is acceptable c otherwise arch should be set to architecture type you wish to use. X arch = "*" X X do 10 i=1,nproc X call finitiate( "node", arch, inst(i) ) X if( inst(i) .lt. 0 ) then X print *,'failure in finitiate at instance',i X stop X endif X 10 continue X c ------- Begin user program -------- X X n = 10 c Initiate data array X do 20 i=1,n X data(i) = 1 X 20 continue X c broadcast data to all node programs by using instance= -1 in fsnd X call finitsend() X call fputnint( n, 1, info ) X call fputnint( nproc, 1, info ) X call fputndfloat( data, n, info ) X msgtype = 1 X call fsnd( "node", -1, msgtype, info ) X X c wait for results from nodes X msgtype = 2 X do 30 i=1,nproc X call frcv( msgtype, info ) X call fgetndfloat( result(i), 1, info ) X c Print result from node X call frcvinfo( lth, msgtype, nodename, instance, info) X print *,'result from node ',instance,' is ',result(i) X 30 continue X X c --------- End user program -------- X c program finished leave PVM before exiting X call fleave() X stop X end END_OF_FILE if test 1996 -ne `wc -c <'pvm2.4/fort_examp/fhost.f'`; then echo shar: \"'pvm2.4/fort_examp/fhost.f'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/fhost.f' fi if test -f 'pvm2.4/fort_examp/node.f' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/fort_examp/node.f'\" else echo shar: Extracting \"'pvm2.4/fort_examp/node.f'\" \(1985 characters\) sed "s/^X//" >'pvm2.4/fort_examp/node.f' <<'END_OF_FILE' X program node c ------------------------------------------------------ c Example fortran program illustrating use of PVM calls c ------------------------------------------------------ X integer info, mynum, hostnum, bytes, msgtype X double precision result, data(100) X double precision work X character*16 host X c Enroll this program in PVM X call fenroll( "node", mynum ) X if( mynum .lt. 0) then X print *,'failure in fenroll on node' X stop X endif X c ------- Begin user program -------- X c Receive data from host X msgtype = 1 X call frcv( msgtype, info ) X call fgetnint( n, 1, info ) X call fgetnint( nproc, 1, info ) X call fgetndfloat( data, n, info ) X call frcvinfo( bytes, msgtype, host, hostnum, info ) X c Do calculations with data X result = work( n, data, mynum, nproc ) X c Send result to host X call finitsend() X call fputndfloat( result, 1, info ) X msgtype = 2 X call fsnd( "fhost", hostnum, msgtype, info ) X c --------- End user program -------- X c Program finished. Leave PVM before exiting X call fleave() X stop X end X X double precision function work( n, data, me, nproc ) c -------------------------------------- c Just a simple routine for illustration c -------------------------------------- X double precision data(*), sum, psum X integer i, n, me, inum X X sum = 0.0 X do 10 i=1,n X sum = sum + me * data(i) X 10 continue c ---------------------------------------- c Pass partial result to neighboring node c to illustrate node-to-node communication c ---------------------------------------- X call finitsend() X call fputndfloat(sum, 1, info) X inum = me+1 X if( inum .eq. nproc ) inum = 0 X call fsnd( "node", inum, 77, info ) X call frcv( 77, info ) X call fgetndfloat(psum, 1, info) X X work = sum + psum X return X end END_OF_FILE if test 1985 -ne `wc -c <'pvm2.4/fort_examp/node.f'`; then echo shar: \"'pvm2.4/fort_examp/node.f'\" unpacked with wrong size! fi # end of 'pvm2.4/fort_examp/node.f' fi if test ! -d 'pvm2.4/libfpvm' ; then echo shar: Creating directory \"'pvm2.4/libfpvm'\" mkdir 'pvm2.4/libfpvm' fi if test ! -d 'pvm2.4/libfpvm/BALANCE' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/BALANCE'\" mkdir 'pvm2.4/libfpvm/BALANCE' fi if test -f 'pvm2.4/libfpvm/BALANCE/BALANCE.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/BALANCE/BALANCE.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/BALANCE/BALANCE.m4'\" \(606 characters\) sed "s/^X//" >'pvm2.4/libfpvm/BALANCE/BALANCE.m4' <<'END_OF_FILE' divert(-1) undefine(`len') X# X# the Sequent appends an underscore to FORTRAN function names X# define(`FUNCTION',`$1_') X# X# FORTRAN character strings on the Sequent are passed as follows: X# a pointer to the base of the string is passed in the normal X# argument list, and the length is passed by value as an extra X# argument, after all of the other arguments. X# define(`ARGS',`($1`'undivert(1))') define(`SAVE',`divert(1)$1`'divert(0)') define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') define(`STRING_LEN',`$1_len') define(`STRING_PTR',`$1_ptr') divert(0) END_OF_FILE if test 606 -ne `wc -c <'pvm2.4/libfpvm/BALANCE/BALANCE.m4'`; then echo shar: \"'pvm2.4/libfpvm/BALANCE/BALANCE.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/BALANCE/BALANCE.m4' fi if test -f 'pvm2.4/libfpvm/BALANCE/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/BALANCE/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/BALANCE/Makefile'\" \(7492 characters\) sed "s/^X//" >'pvm2.4/libfpvm/BALANCE/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/Sequent Balance X# ARCH = BALANCE ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7492 -ne `wc -c <'pvm2.4/libfpvm/BALANCE/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/BALANCE/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/BALANCE/Makefile' fi if test ! -d 'pvm2.4/libfpvm/CRAY' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/CRAY'\" mkdir 'pvm2.4/libfpvm/CRAY' fi if test -f 'pvm2.4/libfpvm/CRAY/CRAY.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/CRAY/CRAY.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/CRAY/CRAY.m4'\" \(297 characters\) sed "s/^X//" >'pvm2.4/libfpvm/CRAY/CRAY.m4' <<'END_OF_FILE' X#include X undefine(`len') define(`FUNCTION',`translit($1,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ)') define(`STRING_ARG',`$1_fcd') define(`STRING_ARG_DECL',`_fcd $1_fcd') define(`STRING_LEN',`_fcdlen($1_fcd)') define(`STRING_PTR',`_fcdtocp($1_fcd)') define(`ARGS',`($1)') END_OF_FILE if test 297 -ne `wc -c <'pvm2.4/libfpvm/CRAY/CRAY.m4'`; then echo shar: \"'pvm2.4/libfpvm/CRAY/CRAY.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/CRAY/CRAY.m4' fi if test -f 'pvm2.4/libfpvm/CRAY/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/CRAY/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/CRAY/Makefile'\" \(7454 characters\) sed "s/^X//" >'pvm2.4/libfpvm/CRAY/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/Cray X# ARCH = CRAY ARCHCFLAGS = HASRANLIB = f X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7454 -ne `wc -c <'pvm2.4/libfpvm/CRAY/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/CRAY/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/CRAY/Makefile' fi if test ! -d 'pvm2.4/libfpvm/HP9K' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/HP9K'\" mkdir 'pvm2.4/libfpvm/HP9K' fi if test -f 'pvm2.4/libfpvm/HP9K/HP9K.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/HP9K/HP9K.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/HP9K/HP9K.m4'\" \(590 characters\) sed "s/^X//" >'pvm2.4/libfpvm/HP9K/HP9K.m4' <<'END_OF_FILE' divert(-1) undefine(`len') X# X# the HP Snake does nothing special to FORTRAN function names X# define(`FUNCTION',`$1') X# X# FORTRAN character strings are passed as follows: X# a pointer to the base of the string is passed in the normal X# argument list, and the length is passed by value as an extra X# argument, after all of the other arguments. X# define(`ARGS',`($1`'undivert(1))') define(`SAVE',`divert(1)$1`'divert(0)') define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') define(`STRING_LEN',`$1_len') define(`STRING_PTR',`$1_ptr') divert(0) END_OF_FILE if test 590 -ne `wc -c <'pvm2.4/libfpvm/HP9K/HP9K.m4'`; then echo shar: \"'pvm2.4/libfpvm/HP9K/HP9K.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/HP9K/HP9K.m4' fi if test -f 'pvm2.4/libfpvm/HP9K/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/HP9K/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/HP9K/Makefile'\" \(7482 characters\) sed "s/^X//" >'pvm2.4/libfpvm/HP9K/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/HP Snake X# ARCH = HP9K ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = f X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7482 -ne `wc -c <'pvm2.4/libfpvm/HP9K/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/HP9K/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/HP9K/Makefile' fi if test ! -d 'pvm2.4/libfpvm/I860' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/I860'\" mkdir 'pvm2.4/libfpvm/I860' fi if test -f 'pvm2.4/libfpvm/I860/I860.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/I860/I860.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/I860/I860.m4'\" \(600 characters\) sed "s/^X//" >'pvm2.4/libfpvm/I860/I860.m4' <<'END_OF_FILE' divert(-1) undefine(`len') X# X# the I860 appends an underscore to FORTRAN function names X# define(`FUNCTION',`$1_') X# X# FORTRAN character strings on the PMAX are passed as follows: X# a pointer to the base of the string is passed in the normal X# argument list, and the length is passed by value as an extra X# argument, after all of the other arguments. X# define(`ARGS',`($1`'undivert(1))') define(`SAVE',`divert(1)$1`'divert(0)') define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') define(`STRING_LEN',`$1_len') define(`STRING_PTR',`$1_ptr') divert(0) END_OF_FILE if test 600 -ne `wc -c <'pvm2.4/libfpvm/I860/I860.m4'`; then echo shar: \"'pvm2.4/libfpvm/I860/I860.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/I860/I860.m4' fi if test -f 'pvm2.4/libfpvm/I860/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/I860/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/I860/Makefile'\" \(7459 characters\) sed "s/^X//" >'pvm2.4/libfpvm/I860/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/Intel 860 X# ARCH = I860 ARCHCFLAGS = HASRANLIB = f X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7459 -ne `wc -c <'pvm2.4/libfpvm/I860/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/I860/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/I860/Makefile' fi if test -f 'pvm2.4/libfpvm/Makefile.body' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/Makefile.body'\" else echo shar: Extracting \"'pvm2.4/libfpvm/Makefile.body'\" \(7227 characters\) sed "s/^X//" >'pvm2.4/libfpvm/Makefile.body' <<'END_OF_FILE' X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7227 -ne `wc -c <'pvm2.4/libfpvm/Makefile.body'`; then echo shar: \"'pvm2.4/libfpvm/Makefile.body'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/Makefile.body' fi if test -f 'pvm2.4/libfpvm/Makefile.custom' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/Makefile.custom'\" else echo shar: Extracting \"'pvm2.4/libfpvm/Makefile.custom'\" \(238 characters\) sed "s/^X//" >'pvm2.4/libfpvm/Makefile.custom' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/ X# ARCH = UNKNOWN ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here END_OF_FILE if test 238 -ne `wc -c <'pvm2.4/libfpvm/Makefile.custom'`; then echo shar: \"'pvm2.4/libfpvm/Makefile.custom'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/Makefile.custom' fi if test ! -d 'pvm2.4/libfpvm/NEXT' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/NEXT'\" mkdir 'pvm2.4/libfpvm/NEXT' fi if test -f 'pvm2.4/libfpvm/NEXT/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/NEXT/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/NEXT/Makefile'\" \(7478 characters\) sed "s/^X//" >'pvm2.4/libfpvm/NEXT/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/NeXT X# ARCH = NEXT ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7478 -ne `wc -c <'pvm2.4/libfpvm/NEXT/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/NEXT/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/NEXT/Makefile' fi if test -f 'pvm2.4/libfpvm/NEXT/NEXT.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/NEXT/NEXT.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/NEXT/NEXT.m4'\" \(602 characters\) sed "s/^X//" >'pvm2.4/libfpvm/NEXT/NEXT.m4' <<'END_OF_FILE' divert(-1) undefine(`len') X# X# the NeXT does nothing special to FORTRAN function names X# define(`FUNCTION',`$1') X# X# FORTRAN character strings are passed as follows: X# a pointer to the base of the string is passed in the normal X# argument list, and the length is passed by value as an extra X# argument, after all of the other arguments. X# XXX I hope... X# define(`ARGS',`($1`'undivert(1))') define(`SAVE',`divert(1)$1`'divert(0)') define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') define(`STRING_LEN',`$1_len') define(`STRING_PTR',`$1_ptr') divert(0) END_OF_FILE if test 602 -ne `wc -c <'pvm2.4/libfpvm/NEXT/NEXT.m4'`; then echo shar: \"'pvm2.4/libfpvm/NEXT/NEXT.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/NEXT/NEXT.m4' fi if test ! -d 'pvm2.4/libfpvm/PMAX' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/PMAX'\" mkdir 'pvm2.4/libfpvm/PMAX' fi if test -f 'pvm2.4/libfpvm/PMAX/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/PMAX/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/PMAX/Makefile'\" \(7458 characters\) sed "s/^X//" >'pvm2.4/libfpvm/PMAX/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/Dec Pmax X# ARCH = PMAX ARCHCFLAGS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7458 -ne `wc -c <'pvm2.4/libfpvm/PMAX/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/PMAX/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/PMAX/Makefile' fi if test -f 'pvm2.4/libfpvm/PMAX/PMAX.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/PMAX/PMAX.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/PMAX/PMAX.m4'\" \(600 characters\) sed "s/^X//" >'pvm2.4/libfpvm/PMAX/PMAX.m4' <<'END_OF_FILE' divert(-1) undefine(`len') X# X# the PMAX appends an underscore to FORTRAN function names X# define(`FUNCTION',`$1_') X# X# FORTRAN character strings on the PMAX are passed as follows: X# a pointer to the base of the string is passed in the normal X# argument list, and the length is passed by value as an extra X# argument, after all of the other arguments. X# define(`ARGS',`($1`'undivert(1))') define(`SAVE',`divert(1)$1`'divert(0)') define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') define(`STRING_LEN',`$1_len') define(`STRING_PTR',`$1_ptr') divert(0) END_OF_FILE if test 600 -ne `wc -c <'pvm2.4/libfpvm/PMAX/PMAX.m4'`; then echo shar: \"'pvm2.4/libfpvm/PMAX/PMAX.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/PMAX/PMAX.m4' fi if test ! -d 'pvm2.4/libfpvm/RIOS' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/RIOS'\" mkdir 'pvm2.4/libfpvm/RIOS' fi if test -f 'pvm2.4/libfpvm/RIOS/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/RIOS/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/RIOS/Makefile'\" \(7460 characters\) sed "s/^X//" >'pvm2.4/libfpvm/RIOS/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/IBM RS6000 X# ARCH = RIOS ARCHCFLAGS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7460 -ne `wc -c <'pvm2.4/libfpvm/RIOS/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/RIOS/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/RIOS/Makefile' fi if test -f 'pvm2.4/libfpvm/RIOS/RIOS.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/RIOS/RIOS.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/RIOS/RIOS.m4'\" \(605 characters\) sed "s/^X//" >'pvm2.4/libfpvm/RIOS/RIOS.m4' <<'END_OF_FILE' divert(-1) undefine(`len') X# X# on the RIOS, nothing special is done to FORTRAN function names X# define(`FUNCTION',`$1') X# X# FORTRAN character strings on the RIOS are passed as follows: X# a pointer to the base of the string is passed in the normal X# argument list, and the length is passed by value as an extra X# argument, after all of the other arguments. X# define(`ARGS',`($1`'undivert(1))') define(`SAVE',`divert(1)$1`'divert(0)') define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') define(`STRING_LEN',`$1_len') define(`STRING_PTR',`$1_ptr') divert(0) END_OF_FILE if test 605 -ne `wc -c <'pvm2.4/libfpvm/RIOS/RIOS.m4'`; then echo shar: \"'pvm2.4/libfpvm/RIOS/RIOS.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/RIOS/RIOS.m4' fi if test ! -d 'pvm2.4/libfpvm/RT' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/RT'\" mkdir 'pvm2.4/libfpvm/RT' fi if test -f 'pvm2.4/libfpvm/RT/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/RT/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/RT/Makefile'\" \(7478 characters\) sed "s/^X//" >'pvm2.4/libfpvm/RT/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/IBM RT X# ARCH = RT ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7478 -ne `wc -c <'pvm2.4/libfpvm/RT/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/RT/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/RT/Makefile' fi if test -f 'pvm2.4/libfpvm/RT/RT.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/RT/RT.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/RT/RT.m4'\" \(596 characters\) sed "s/^X//" >'pvm2.4/libfpvm/RT/RT.m4' <<'END_OF_FILE' divert(-1) undefine(`len') X# X# the RT appends an underscore to FORTRAN function names X# define(`FUNCTION',`$1_') X# X# FORTRAN character strings on the RT are passed as follows: X# a pointer to the base of the string is passed in the normal X# argument list, and the length is passed by value as an extra X# argument, after all of the other arguments. X# define(`ARGS',`($1`'undivert(1))') define(`SAVE',`divert(1)$1`'divert(0)') define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') define(`STRING_LEN',`$1_len') define(`STRING_PTR',`$1_ptr') divert(0) END_OF_FILE if test 596 -ne `wc -c <'pvm2.4/libfpvm/RT/RT.m4'`; then echo shar: \"'pvm2.4/libfpvm/RT/RT.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/RT/RT.m4' fi if test -f 'pvm2.4/libfpvm/Readme' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/Readme'\" else echo shar: Extracting \"'pvm2.4/libfpvm/Readme'\" \(1384 characters\) sed "s/^X//" >'pvm2.4/libfpvm/Readme' <<'END_OF_FILE' X XFORTRAN interface for PVM X01 Oct 1992 X X________________________________________________________________________ This directory contains source for a FORTRAN interface library to PVM. To build the library, run 'aimk' in this directory. This should build ARCH/libfpvm.a, where ARCH is the PVM name for the machine class. X To use libfpvm, compile and link your fortran program with it and the C library, libpvm, for example: X X f77 -o foo foo.f ../libfpvm/ARCH/libfpvm.a ../src/ARCH/libpvm.a X XFORTRAN routines have (mostly) the same names as the C routines, with a leading 'f'. They are called as subroutines and so have an extra arg for the return value. X XFor example, the C send call is: X int cc = snd(proc, instance, msgid) X and the FORTRAN one is: X call fsnd(proc, instance, msgid, icc) X The following table gives the appropriate names for the most common mapping of FORTRAN data types into PVM pack/unpack calls: X X fortran name put, get... X ____________ __________ X LOGICAL int X CHARACTER string, bytes X INTEGER int X INTEGER*2 short X REAL float X REAL*8 dfloat [1] X COMPLEX cplx X COMPLEX*16 dcplx [1] X X[1] On Crays, C reals, C doubles, and Fortran reals are the same size X so I guess you can't pack Fortran doubles. X END_OF_FILE if test 1384 -ne `wc -c <'pvm2.4/libfpvm/Readme'`; then echo shar: \"'pvm2.4/libfpvm/Readme'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/Readme' fi if test ! -d 'pvm2.4/libfpvm/SGI' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/SGI'\" mkdir 'pvm2.4/libfpvm/SGI' fi if test -f 'pvm2.4/libfpvm/SGI/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/SGI/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/SGI/Makefile'\" \(7457 characters\) sed "s/^X//" >'pvm2.4/libfpvm/SGI/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/Dec Pmax X# ARCH = SGI ARCHCFLAGS = HASRANLIB = f X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7457 -ne `wc -c <'pvm2.4/libfpvm/SGI/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/SGI/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/SGI/Makefile' fi if test -f 'pvm2.4/libfpvm/SGI/SGI.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/SGI/SGI.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/SGI/SGI.m4'\" \(598 characters\) sed "s/^X//" >'pvm2.4/libfpvm/SGI/SGI.m4' <<'END_OF_FILE' divert(-1) undefine(`len') X# X# the SGI appends an underscore to FORTRAN function names X# define(`FUNCTION',`$1_') X# X# FORTRAN character strings on the SGI are passed as follows: X# a pointer to the base of the string is passed in the normal X# argument list, and the length is passed by value as an extra X# argument, after all of the other arguments. X# define(`ARGS',`($1`'undivert(1))') define(`SAVE',`divert(1)$1`'divert(0)') define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') define(`STRING_LEN',`$1_len') define(`STRING_PTR',`$1_ptr') divert(0) END_OF_FILE if test 598 -ne `wc -c <'pvm2.4/libfpvm/SGI/SGI.m4'`; then echo shar: \"'pvm2.4/libfpvm/SGI/SGI.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/SGI/SGI.m4' fi if test ! -d 'pvm2.4/libfpvm/SUN3' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/SUN3'\" mkdir 'pvm2.4/libfpvm/SUN3' fi if test -f 'pvm2.4/libfpvm/SUN3/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/SUN3/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/SUN3/Makefile'\" \(7455 characters\) sed "s/^X//" >'pvm2.4/libfpvm/SUN3/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/Sun-3 X# ARCH = SUN3 ARCHCFLAGS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7455 -ne `wc -c <'pvm2.4/libfpvm/SUN3/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/SUN3/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/SUN3/Makefile' fi if test -f 'pvm2.4/libfpvm/SUN3/SUN3.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/SUN3/SUN3.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/SUN3/SUN3.m4'\" \(602 characters\) sed "s/^X//" >'pvm2.4/libfpvm/SUN3/SUN3.m4' <<'END_OF_FILE' divert(-1) undefine(`len') X# X# the SUN/3 appends an underscore to FORTRAN function names X# define(`FUNCTION',`$1_') X# X# FORTRAN character strings on the SUN/3 are passed as follows: X# a pointer to the base of the string is passed in the normal X# argument list, and the length is passed by value as an extra X# argument, after all of the other arguments. X# define(`ARGS',`($1`'undivert(1))') define(`SAVE',`divert(1)$1`'divert(0)') define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') define(`STRING_LEN',`$1_len') define(`STRING_PTR',`$1_ptr') divert(0) END_OF_FILE if test 602 -ne `wc -c <'pvm2.4/libfpvm/SUN3/SUN3.m4'`; then echo shar: \"'pvm2.4/libfpvm/SUN3/SUN3.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/SUN3/SUN3.m4' fi if test ! -d 'pvm2.4/libfpvm/SUN4' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/SUN4'\" mkdir 'pvm2.4/libfpvm/SUN4' fi if test -f 'pvm2.4/libfpvm/SUN4/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/SUN4/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/SUN4/Makefile'\" \(7468 characters\) sed "s/^X//" >'pvm2.4/libfpvm/SUN4/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/Sun-4, Sun-4c, etc X# ARCH = SUN4 ARCHCFLAGS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7468 -ne `wc -c <'pvm2.4/libfpvm/SUN4/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/SUN4/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/SUN4/Makefile' fi if test -f 'pvm2.4/libfpvm/SUN4/SUN4.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/SUN4/SUN4.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/SUN4/SUN4.m4'\" \(602 characters\) sed "s/^X//" >'pvm2.4/libfpvm/SUN4/SUN4.m4' <<'END_OF_FILE' divert(-1) undefine(`len') X# X# the SUN/4 appends an underscore to FORTRAN function names X# define(`FUNCTION',`$1_') X# X# FORTRAN character strings on the SUN/4 are passed as follows: X# a pointer to the base of the string is passed in the normal X# argument list, and the length is passed by value as an extra X# argument, after all of the other arguments. X# define(`ARGS',`($1`'undivert(1))') define(`SAVE',`divert(1)$1`'divert(0)') define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') define(`STRING_LEN',`$1_len') define(`STRING_PTR',`$1_ptr') divert(0) END_OF_FILE if test 602 -ne `wc -c <'pvm2.4/libfpvm/SUN4/SUN4.m4'`; then echo shar: \"'pvm2.4/libfpvm/SUN4/SUN4.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/SUN4/SUN4.m4' fi if test ! -d 'pvm2.4/libfpvm/SYMM' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/SYMM'\" mkdir 'pvm2.4/libfpvm/SYMM' fi if test -f 'pvm2.4/libfpvm/SYMM/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/SYMM/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/SYMM/Makefile'\" \(7490 characters\) sed "s/^X//" >'pvm2.4/libfpvm/SYMM/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/Sequent Symmetry X# ARCH = SYMM ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7490 -ne `wc -c <'pvm2.4/libfpvm/SYMM/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/SYMM/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/SYMM/Makefile' fi if test -f 'pvm2.4/libfpvm/SYMM/SYMM.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/SYMM/SYMM.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/SYMM/SYMM.m4'\" \(608 characters\) sed "s/^X//" >'pvm2.4/libfpvm/SYMM/SYMM.m4' <<'END_OF_FILE' divert(-1) undefine(`len') X# X# the SYMMETRY appends an underscore to FORTRAN function names X# define(`FUNCTION',`$1_') X# X# FORTRAN character strings on the SYMMETRY are passed as follows: X# a pointer to the base of the string is passed in the normal X# argument list, and the length is passed by value as an extra X# argument, after all of the other arguments. X# define(`ARGS',`($1`'undivert(1))') define(`SAVE',`divert(1)$1`'divert(0)') define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') define(`STRING_LEN',`$1_len') define(`STRING_PTR',`$1_ptr') divert(0) END_OF_FILE if test 608 -ne `wc -c <'pvm2.4/libfpvm/SYMM/SYMM.m4'`; then echo shar: \"'pvm2.4/libfpvm/SYMM/SYMM.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/SYMM/SYMM.m4' fi if test ! -d 'pvm2.4/libfpvm/TITN' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/TITN'\" mkdir 'pvm2.4/libfpvm/TITN' fi if test -f 'pvm2.4/libfpvm/TITN/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/TITN/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/TITN/Makefile'\" \(7488 characters\) sed "s/^X//" >'pvm2.4/libfpvm/TITN/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/Stardent Titan X# ARCH = TITN ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7488 -ne `wc -c <'pvm2.4/libfpvm/TITN/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/TITN/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/TITN/Makefile' fi if test -f 'pvm2.4/libfpvm/TITN/TITN.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/TITN/TITN.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/TITN/TITN.m4'\" \(540 characters\) sed "s/^X//" >'pvm2.4/libfpvm/TITN/TITN.m4' <<'END_OF_FILE' divert(-1) undefine(`len') X# X# function names on the Titan are always in upper case X# define(`FUNCTION',`translit($1,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ)') X# X# The Titan uses a special string descriptor to pass strings in FORTRAN. X# The descriptor is passed by reference. X# divert(0) typedef struct { char *ptr; int length; } FSD; divert(-1) define(`STRING_ARG',`$1_fsd') define(`STRING_ARG_DECL',`FSD * $1_fsd') define(`STRING_LEN',`($1_fsd)->length') define(`STRING_PTR',`($1_fsd)->ptr') define(`ARGS',`($1)') divert(0) END_OF_FILE if test 540 -ne `wc -c <'pvm2.4/libfpvm/TITN/TITN.m4'`; then echo shar: \"'pvm2.4/libfpvm/TITN/TITN.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/TITN/TITN.m4' fi if test ! -d 'pvm2.4/libfpvm/U370' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/U370'\" mkdir 'pvm2.4/libfpvm/U370' fi if test -f 'pvm2.4/libfpvm/U370/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/U370/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/U370/Makefile'\" \(7481 characters\) sed "s/^X//" >'pvm2.4/libfpvm/U370/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/IBM 370 X# ARCH = U370 ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7481 -ne `wc -c <'pvm2.4/libfpvm/U370/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/U370/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/U370/Makefile' fi if test -f 'pvm2.4/libfpvm/U370/U370.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/U370/U370.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/U370/U370.m4'\" \(220 characters\) sed "s/^X//" >'pvm2.4/libfpvm/U370/U370.m4' <<'END_OF_FILE' undefine(`len') define(`FUNCTION',`$1_') define(`STRING_ARG',`$1_ptr, $1_len') define(`STRING_ARG_DECL',`char * $1_ptr, int * $1_len') define(`STRING_LEN',`(*$1_len)') define(`STRING_PTR',`$1_ptr') define(`ARGS',`($1)') END_OF_FILE if test 220 -ne `wc -c <'pvm2.4/libfpvm/U370/U370.m4'`; then echo shar: \"'pvm2.4/libfpvm/U370/U370.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/U370/U370.m4' fi if test ! -d 'pvm2.4/libfpvm/UVAX' ; then echo shar: Creating directory \"'pvm2.4/libfpvm/UVAX'\" mkdir 'pvm2.4/libfpvm/UVAX' fi if test -f 'pvm2.4/libfpvm/UVAX/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/UVAX/Makefile'\" else echo shar: Extracting \"'pvm2.4/libfpvm/UVAX/Makefile'\" \(7486 characters\) sed "s/^X//" >'pvm2.4/libfpvm/UVAX/Makefile' <<'END_OF_FILE' X# X# PVM 2.4 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM Fortran lib/Dec Microvax X# ARCH = UVAX ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# Generic half makefile for PVM Fortran lib. X# X# define architecture (eg. SUN4 SUN3 RIOS) X SHELL = /bin/sh SDIR = .. CC = cc CFLAGS = -g -D$(ARCH) -c $(ARCHCFLAGS) -I$(SDIR) -I../../src $(CDEBUGFLAGS) RM = rm -f M4 = m4 XFORTRAN=`case "$(FC)@$(F77)" in *@) echo $(FC) ;; @*) echo $(F77) ;; *) echo f77;; esac` X LOBS = fbarrier.o \ X fenroll.o \ X fgetbytes.o \ X fgetncplx.o \ X fgetndcplx.o \ X fgetndfloat.o \ X fgetnfloat.o \ X fgetnint.o \ X fgetnlong.o \ X fgetnshort.o \ X fgetstring.o \ X finithow.o \ X finitiate.o \ X finitiatem.o \ X finitsend.o \ X fleave.o \ X fprobe.o \ X fprobemulti.o \ X fpstatus.o \ X fputbytes.o \ X fputncplx.o \ X fputndcplx.o \ X fputndfloat.o \ X fputnfloat.o \ X fputnint.o \ X fputnlong.o \ X fputnshort.o \ X fputstring.o \ X fpvmperror.o \ X frcv.o \ X frcvinfo.o \ X frcvmulti.o \ X fready.o \ X fsnd.o \ X fstatus.o \ X fterminate.o \ X fwaituntil.o \ X fwhoami.o \ X fvrcv.o \ X fvrcvmulti.o \ X fvsnd.o \ X ftocstr.o X libfpvm.a: $(LOBS) X ar cr libfpvm.a $? X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libfpvm.a ;; esac X clean: X rm -f $(LOBS) libfpvm.a X tidy: X rm -f $(LOBS) X ftocstr.o: $(SDIR)/ftocstr.c X $(CC) $(CFLAGS) $(SDIR)/ftocstr.c fbarrier.o: $(SDIR)/fbarrier.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fbarrier.m4 > fbarrier.c X $(CC) $(CFLAGS) fbarrier.c X $(RM) fbarrier.c fenroll.o: $(SDIR)/fenroll.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fenroll.m4 > fenroll.c X $(CC) $(CFLAGS) fenroll.c X $(RM) fenroll.c fgetbytes.o: $(SDIR)/fgetbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetbytes.m4 > fgetbytes.c X $(CC) $(CFLAGS) fgetbytes.c X $(RM) fgetbytes.c fgetncplx.o: $(SDIR)/fgetncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetncplx.m4 > fgetncplx.c X $(CC) $(CFLAGS) fgetncplx.c X $(RM) fgetncplx.c fgetndcplx.o: $(SDIR)/fgetndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndcplx.m4 > fgetndcplx.c X $(CC) $(CFLAGS) fgetndcplx.c X $(RM) fgetndcplx.c fgetndfloat.o: $(SDIR)/fgetndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetndfloat.m4 > fgetndfloat.c X $(CC) $(CFLAGS) fgetndfloat.c X $(RM) fgetndfloat.c fgetnfloat.o: $(SDIR)/fgetnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnfloat.m4 > fgetnfloat.c X $(CC) $(CFLAGS) fgetnfloat.c X $(RM) fgetnfloat.c fgetnint.o: $(SDIR)/fgetnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnint.m4 > fgetnint.c X $(CC) $(CFLAGS) fgetnint.c X $(RM) fgetnint.c fgetnlong.o: $(SDIR)/fgetnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnlong.m4 > fgetnlong.c X $(CC) $(CFLAGS) fgetnlong.c X $(RM) fgetnlong.c fgetnshort.o: $(SDIR)/fgetnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetnshort.m4 > fgetnshort.c X $(CC) $(CFLAGS) fgetnshort.c X $(RM) fgetnshort.c fgetstring.o: $(SDIR)/fgetstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fgetstring.m4 > fgetstring.c X $(CC) $(CFLAGS) fgetstring.c X $(RM) fgetstring.c finithow.o: $(SDIR)/finithow.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finithow.m4 > finithow.c X $(CC) $(CFLAGS) finithow.c X $(RM) finithow.c finitiate.o: $(SDIR)/finitiate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiate.m4 > finitiate.c X $(CC) $(CFLAGS) finitiate.c X $(RM) finitiate.c finitiatem.o: $(SDIR)/finitiatem.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitiatem.m4 > finitiatem.c X $(CC) $(CFLAGS) finitiatem.c X $(RM) finitiatem.c finitsend.o: $(SDIR)/finitsend.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/finitsend.m4 > finitsend.c X $(CC) $(CFLAGS) finitsend.c X $(RM) finitsend.c fleave.o: $(SDIR)/fleave.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fleave.m4 > fleave.c X $(CC) $(CFLAGS) fleave.c X $(RM) fleave.c fprobe.o: $(SDIR)/fprobe.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobe.m4 > fprobe.c X $(CC) $(CFLAGS) fprobe.c X $(RM) fprobe.c fprobemulti.o: $(SDIR)/fprobemulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fprobemulti.m4 > fprobemulti.c X $(CC) $(CFLAGS) fprobemulti.c X $(RM) fprobemulti.c fpstatus.o: $(SDIR)/fpstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpstatus.m4 > fpstatus.c X $(CC) $(CFLAGS) fpstatus.c X $(RM) fpstatus.c fputbytes.o: $(SDIR)/fputbytes.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputbytes.m4 > fputbytes.c X $(CC) $(CFLAGS) fputbytes.c X $(RM) fputbytes.c fputncplx.o: $(SDIR)/fputncplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputncplx.m4 > fputncplx.c X $(CC) $(CFLAGS) fputncplx.c X $(RM) fputncplx.c fputndcplx.o: $(SDIR)/fputndcplx.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndcplx.m4 > fputndcplx.c X $(CC) $(CFLAGS) fputndcplx.c X $(RM) fputndcplx.c fputndfloat.o: $(SDIR)/fputndfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputndfloat.m4 > fputndfloat.c X $(CC) $(CFLAGS) fputndfloat.c X $(RM) fputndfloat.c fputnfloat.o: $(SDIR)/fputnfloat.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnfloat.m4 > fputnfloat.c X $(CC) $(CFLAGS) fputnfloat.c X $(RM) fputnfloat.c fputnint.o: $(SDIR)/fputnint.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnint.m4 > fputnint.c X $(CC) $(CFLAGS) fputnint.c X $(RM) fputnint.c fputnlong.o: $(SDIR)/fputnlong.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnlong.m4 > fputnlong.c X $(CC) $(CFLAGS) fputnlong.c X $(RM) fputnlong.c fputnshort.o: $(SDIR)/fputnshort.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputnshort.m4 > fputnshort.c X $(CC) $(CFLAGS) fputnshort.c X $(RM) fputnshort.c fputstring.o: $(SDIR)/fputstring.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fputstring.m4 > fputstring.c X $(CC) $(CFLAGS) fputstring.c X $(RM) fputstring.c fpvmperror.o: $(SDIR)/fpvmperror.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fpvmperror.m4 > fpvmperror.c X $(CC) $(CFLAGS) fpvmperror.c X $(RM) fpvmperror.c frcv.o: $(SDIR)/frcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcv.m4 > frcv.c X $(CC) $(CFLAGS) frcv.c X $(RM) frcv.c frcvinfo.o: $(SDIR)/frcvinfo.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvinfo.m4 > frcvinfo.c X $(CC) $(CFLAGS) frcvinfo.c X $(RM) frcvinfo.c frcvmulti.o: $(SDIR)/frcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/frcvmulti.m4 > frcvmulti.c X $(CC) $(CFLAGS) frcvmulti.c X $(RM) frcvmulti.c fready.o: $(SDIR)/fready.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fready.m4 > fready.c X $(CC) $(CFLAGS) fready.c X $(RM) fready.c fsnd.o: $(SDIR)/fsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fsnd.m4 > fsnd.c X $(CC) $(CFLAGS) fsnd.c X $(RM) fsnd.c fstatus.o: $(SDIR)/fstatus.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fstatus.m4 > fstatus.c X $(CC) $(CFLAGS) fstatus.c X $(RM) fstatus.c fterminate.o: $(SDIR)/fterminate.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fterminate.m4 > fterminate.c X $(CC) $(CFLAGS) fterminate.c X $(RM) fterminate.c fwaituntil.o: $(SDIR)/fwaituntil.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwaituntil.m4 > fwaituntil.c X $(CC) $(CFLAGS) fwaituntil.c X $(RM) fwaituntil.c fwhoami.o: $(SDIR)/fwhoami.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fwhoami.m4 > fwhoami.c X $(CC) $(CFLAGS) fwhoami.c X $(RM) fwhoami.c fvrcv.o: $(SDIR)/fvrcv.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcv.m4 > fvrcv.c X $(CC) $(CFLAGS) fvrcv.c X $(RM) fvrcv.c fvrcvmulti.o: $(SDIR)/fvrcvmulti.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvrcvmulti.m4 > fvrcvmulti.c X $(CC) $(CFLAGS) fvrcvmulti.c X $(RM) fvrcvmulti.c fvsnd.o: $(SDIR)/fvsnd.m4 $(ARCH).m4 X $(M4) $(ARCH).m4 $(SDIR)/fvsnd.m4 > fvsnd.c X $(CC) $(CFLAGS) fvsnd.c X $(RM) fvsnd.c X f2ctest: $(SDIR)/f2ctest.f $(SDIR)/cf2ctest.m4 X $(M4) $(ARCH).m4 $(SDIR)/cf2ctest.m4 > cf2ctest.c X $(CC) $(CFLAGS) cf2ctest.c X $(FORTRAN) $(SDIR)/f2ctest.f cf2ctest.o libf2c.a $(HOME)/pvm/$(ARCH)/libpvm.a END_OF_FILE if test 7486 -ne `wc -c <'pvm2.4/libfpvm/UVAX/Makefile'`; then echo shar: \"'pvm2.4/libfpvm/UVAX/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/UVAX/Makefile' fi if test -f 'pvm2.4/libfpvm/UVAX/UVAX.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/UVAX/UVAX.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/UVAX/UVAX.m4'\" \(598 characters\) sed "s/^X//" >'pvm2.4/libfpvm/UVAX/UVAX.m4' <<'END_OF_FILE' divert(-1) undefine(`len') X# X# the VAX appends an underscore to FORTRAN function names X# define(`FUNCTION',`$1_') X# X# FORTRAN character strings on the VAX are passed as follows: X# a pointer to the base of the string is passed in the normal X# argument list, and the length is passed by value as an extra X# argument, after all of the other arguments. X# define(`ARGS',`($1`'undivert(1))') define(`SAVE',`divert(1)$1`'divert(0)') define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') define(`STRING_LEN',`$1_len') define(`STRING_PTR',`$1_ptr') divert(0) END_OF_FILE if test 598 -ne `wc -c <'pvm2.4/libfpvm/UVAX/UVAX.m4'`; then echo shar: \"'pvm2.4/libfpvm/UVAX/UVAX.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/UVAX/UVAX.m4' fi if test -f 'pvm2.4/libfpvm/fbarrier.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fbarrier.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fbarrier.m4'\" \(379 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fbarrier.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fbarrier) ARGS(`STRING_ARG(name), n, cc') STRING_ARG_DECL(name); int *n; int *cc; X{ X char tname[MAX_BARRIER_NAME + 1]; X X if (STRING_LEN(name) > MAX_BARRIER_NAME) { X *cc = pvm_uerr("fbarrier", PvmTooLong); X return; X } X ftocstr(tname, sizeof(tname), STRING_PTR(name), STRING_LEN(name)); X *cc = barrier(tname, *n); X} END_OF_FILE if test 379 -ne `wc -c <'pvm2.4/libfpvm/fbarrier.m4'`; then echo shar: \"'pvm2.4/libfpvm/fbarrier.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fbarrier.m4' fi if test -f 'pvm2.4/libfpvm/fenroll.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fenroll.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fenroll.m4'\" \(363 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fenroll.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fenroll) ARGS(`STRING_ARG(name), inum') STRING_ARG_DECL(name); int *inum; X{ X char tname[MAX_PROC_NAME + 1]; X X if (STRING_LEN(name) > MAX_PROC_NAME) { X *inum = pvm_uerr("fenroll", PvmTooLong); X return; X } X ftocstr(tname, sizeof(tname), STRING_PTR(name), STRING_LEN(name)); X *inum = enroll(tname); X} END_OF_FILE if test 363 -ne `wc -c <'pvm2.4/libfpvm/fenroll.m4'`; then echo shar: \"'pvm2.4/libfpvm/fenroll.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fenroll.m4' fi if test -f 'pvm2.4/libfpvm/fgetbytes.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fgetbytes.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fgetbytes.m4'\" \(249 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fgetbytes.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fgetbytes) ARGS(`STRING_ARG(p), cnt, cc') int *cnt, *cc; STRING_ARG_DECL(p); X{ X int tcnt = *cnt; X X if (tcnt > STRING_LEN(p)) X tcnt = STRING_LEN(p); X *cc = getbytes(STRING_PTR(p), tcnt); X} END_OF_FILE if test 249 -ne `wc -c <'pvm2.4/libfpvm/fgetbytes.m4'`; then echo shar: \"'pvm2.4/libfpvm/fgetbytes.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fgetbytes.m4' fi if test -f 'pvm2.4/libfpvm/fgetncplx.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fgetncplx.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fgetncplx.m4'\" \(148 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fgetncplx.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fgetncplx) ARGS(`xp, cnt, cc') float *xp; int *cnt, *cc; X{ X *cc = getncplx(xp, *cnt); X} END_OF_FILE if test 148 -ne `wc -c <'pvm2.4/libfpvm/fgetncplx.m4'`; then echo shar: \"'pvm2.4/libfpvm/fgetncplx.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fgetncplx.m4' fi if test -f 'pvm2.4/libfpvm/fgetndcplx.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fgetndcplx.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fgetndcplx.m4'\" \(152 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fgetndcplx.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fgetndcplx) ARGS(`zp, cnt, cc') double *zp; int *cnt, *cc; X{ X *cc = getndcplx(zp, *cnt); X} X END_OF_FILE if test 152 -ne `wc -c <'pvm2.4/libfpvm/fgetndcplx.m4'`; then echo shar: \"'pvm2.4/libfpvm/fgetndcplx.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fgetndcplx.m4' fi if test -f 'pvm2.4/libfpvm/fgetndfloat.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fgetndfloat.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fgetndfloat.m4'\" \(153 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fgetndfloat.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fgetndfloat) ARGS(`dp, cnt, cc') double *dp; int *cnt, *cc; X{ X *cc = getndfloat(dp, *cnt); X} END_OF_FILE if test 153 -ne `wc -c <'pvm2.4/libfpvm/fgetndfloat.m4'`; then echo shar: \"'pvm2.4/libfpvm/fgetndfloat.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fgetndfloat.m4' fi if test -f 'pvm2.4/libfpvm/fgetnfloat.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fgetnfloat.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fgetnfloat.m4'\" \(150 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fgetnfloat.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fgetnfloat) ARGS(`fp, cnt, cc') float *fp; int *cnt, *cc; X{ X *cc = getnfloat(fp, *cnt); X} END_OF_FILE if test 150 -ne `wc -c <'pvm2.4/libfpvm/fgetnfloat.m4'`; then echo shar: \"'pvm2.4/libfpvm/fgetnfloat.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fgetnfloat.m4' fi if test -f 'pvm2.4/libfpvm/fgetnint.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fgetnint.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fgetnint.m4'\" \(140 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fgetnint.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fgetnint) ARGS(`np, cnt, cc') int *np, *cnt, *cc; X{ X *cc = getnint(np, *cnt); X} END_OF_FILE if test 140 -ne `wc -c <'pvm2.4/libfpvm/fgetnint.m4'`; then echo shar: \"'pvm2.4/libfpvm/fgetnint.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fgetnint.m4' fi if test -f 'pvm2.4/libfpvm/fgetnlong.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fgetnlong.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fgetnlong.m4'\" \(147 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fgetnlong.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fgetnlong) ARGS(`np, cnt, cc') long *np; int *cnt, *cc; X{ X *cc = getnlong(np, *cnt); X} END_OF_FILE if test 147 -ne `wc -c <'pvm2.4/libfpvm/fgetnlong.m4'`; then echo shar: \"'pvm2.4/libfpvm/fgetnlong.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fgetnlong.m4' fi if test -f 'pvm2.4/libfpvm/fgetnshort.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fgetnshort.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fgetnshort.m4'\" \(150 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fgetnshort.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fgetnshort) ARGS(`np, cnt, cc') short *np; int *cnt, *cc; X{ X *cc = getnshort(np, *cnt); X} END_OF_FILE if test 150 -ne `wc -c <'pvm2.4/libfpvm/fgetnshort.m4'`; then echo shar: \"'pvm2.4/libfpvm/fgetnshort.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fgetnshort.m4' fi if test -f 'pvm2.4/libfpvm/fgetstring.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fgetstring.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fgetstring.m4'\" \(179 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fgetstring.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fgetstring) ARGS(`STRING_ARG(p), cc') int *cc; STRING_ARG_DECL(p); X{ X *cc = getbytes(STRING_PTR(p), STRING_LEN(p)); X} END_OF_FILE if test 179 -ne `wc -c <'pvm2.4/libfpvm/fgetstring.m4'`; then echo shar: \"'pvm2.4/libfpvm/fgetstring.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fgetstring.m4' fi if test -f 'pvm2.4/libfpvm/finithow.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/finithow.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/finithow.m4'\" \(135 characters\) sed "s/^X//" >'pvm2.4/libfpvm/finithow.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(finithow) ARGS(`how, cc') int *how; int *cc; X{ X *cc = pvm_inithow(*how); X} END_OF_FILE if test 135 -ne `wc -c <'pvm2.4/libfpvm/finithow.m4'`; then echo shar: \"'pvm2.4/libfpvm/finithow.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/finithow.m4' fi if test -f 'pvm2.4/libfpvm/finitiate.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/finitiate.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/finitiate.m4'\" \(950 characters\) sed "s/^X//" >'pvm2.4/libfpvm/finitiate.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(finitiate) ARGS(`STRING_ARG(aout), STRING_ARG(arch), inum') STRING_ARG_DECL(aout); STRING_ARG_DECL(arch); int *inum; X{ X char taout[MAX_PROC_NAME + 1]; X char tarch[MAX_ARCH_NAME + 1]; X X /* X * Copy the program and arch names to make sure there's X * a NUL at the end. X * If either the program name or the arch name is too X * long, just return an error. X */ X X if (STRING_LEN(aout) > MAX_PROC_NAME X || STRING_LEN(arch) > MAX_ARCH_NAME) { X *inum = pvm_uerr("finitiate", PvmTooLong); X return; X } X ftocstr(taout, sizeof(taout), STRING_PTR(aout), STRING_LEN(aout)); X X /* X * if arch parameter begins with '*', pass a NULL pointer to X * initiate which will allow execution on any machine. X */ X if (*(STRING_PTR(arch)) == '*') { X *inum = initiate(taout, (char*)0); X } X else { X ftocstr(tarch, sizeof(tarch), STRING_PTR(arch), STRING_LEN(arch)); X *inum = initiate(taout, tarch); X } X} END_OF_FILE if test 950 -ne `wc -c <'pvm2.4/libfpvm/finitiate.m4'`; then echo shar: \"'pvm2.4/libfpvm/finitiate.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/finitiate.m4' fi if test -f 'pvm2.4/libfpvm/finitiatem.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/finitiatem.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/finitiatem.m4'\" \(737 characters\) sed "s/^X//" >'pvm2.4/libfpvm/finitiatem.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(finitiatem) ARGS(`STRING_ARG(aout), STRING_ARG(host), inum') STRING_ARG_DECL(aout); STRING_ARG_DECL(host); int *inum; X{ X char taout[MAX_PROC_NAME + 1]; X char thost[MAX_HOST_NAME + 1]; X X /* X * Copy the program and host names to make sure there's X * a NUL at the end. X * If either the program name or the host name is too X * long, just return an error. X */ X X if (STRING_LEN(aout) > MAX_PROC_NAME X || STRING_LEN(host) > MAX_HOST_NAME) { X *inum = pvm_uerr("finitiatem", PvmTooLong); X return; X } X ftocstr(taout, sizeof(taout), STRING_PTR(aout), STRING_LEN(aout)); X ftocstr(thost, sizeof(thost), STRING_PTR(host), STRING_LEN(host)); X *inum = initiateM(taout, thost); X} END_OF_FILE if test 737 -ne `wc -c <'pvm2.4/libfpvm/finitiatem.m4'`; then echo shar: \"'pvm2.4/libfpvm/finitiatem.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/finitiatem.m4' fi if test -f 'pvm2.4/libfpvm/finitsend.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/finitsend.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/finitsend.m4'\" \(97 characters\) sed "s/^X//" >'pvm2.4/libfpvm/finitsend.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(finitsend) ARGS(`') X{ X initsend(); X} END_OF_FILE if test 97 -ne `wc -c <'pvm2.4/libfpvm/finitsend.m4'`; then echo shar: \"'pvm2.4/libfpvm/finitsend.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/finitsend.m4' fi if test -f 'pvm2.4/libfpvm/fleave.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fleave.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fleave.m4'\" \(91 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fleave.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fleave) ARGS(`') X{ X leave(); X} END_OF_FILE if test 91 -ne `wc -c <'pvm2.4/libfpvm/fleave.m4'`; then echo shar: \"'pvm2.4/libfpvm/fleave.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fleave.m4' fi if test -f 'pvm2.4/libfpvm/fprobe.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fprobe.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fprobe.m4'\" \(126 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fprobe.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fprobe) ARGS(`type, cc') int *type, *cc; X{ X *cc = probe(*type); X} END_OF_FILE if test 126 -ne `wc -c <'pvm2.4/libfpvm/fprobe.m4'`; then echo shar: \"'pvm2.4/libfpvm/fprobe.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fprobe.m4' fi if test -f 'pvm2.4/libfpvm/fprobemulti.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fprobemulti.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fprobemulti.m4'\" \(154 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fprobemulti.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fprobemulti) ARGS(`n, typs, cc') int *n; int *typs; int *cc; X{ X *cc = probemulti(*n, typs); X} END_OF_FILE if test 154 -ne `wc -c <'pvm2.4/libfpvm/fprobemulti.m4'`; then echo shar: \"'pvm2.4/libfpvm/fprobemulti.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fprobemulti.m4' fi if test -f 'pvm2.4/libfpvm/fpstatus.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fpstatus.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fpstatus.m4'\" \(155 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fpstatus.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fpstatus) ARGS(`nproc, mixed, cc') int *nproc, *mixed, *cc; X{ X *cc = pstatus(nproc, mixed); X} X END_OF_FILE if test 155 -ne `wc -c <'pvm2.4/libfpvm/fpstatus.m4'`; then echo shar: \"'pvm2.4/libfpvm/fpstatus.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fpstatus.m4' fi if test -f 'pvm2.4/libfpvm/fputbytes.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fputbytes.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fputbytes.m4'\" \(262 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fputbytes.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fputbytes) ARGS(`STRING_ARG(p), cnt, cc') int *cnt, *cc; STRING_ARG_DECL(p); X{ X int tcnt = *cnt; X if (tcnt < 0 || STRING_LEN(p) < tcnt) X tcnt = STRING_LEN(p); X *cc = putbytes(STRING_PTR(p), tcnt); X} END_OF_FILE if test 262 -ne `wc -c <'pvm2.4/libfpvm/fputbytes.m4'`; then echo shar: \"'pvm2.4/libfpvm/fputbytes.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fputbytes.m4' fi if test -f 'pvm2.4/libfpvm/fputncplx.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fputncplx.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fputncplx.m4'\" \(148 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fputncplx.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fputncplx) ARGS(`xp, cnt, cc') float *xp; int *cnt, *cc; X{ X *cc = putncplx(xp, *cnt); X} END_OF_FILE if test 148 -ne `wc -c <'pvm2.4/libfpvm/fputncplx.m4'`; then echo shar: \"'pvm2.4/libfpvm/fputncplx.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fputncplx.m4' fi if test -f 'pvm2.4/libfpvm/fputndcplx.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fputndcplx.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fputndcplx.m4'\" \(151 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fputndcplx.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fputndcplx) ARGS(`zp, cnt, cc') double *zp; int *cnt, *cc; X{ X *cc = putndcplx(zp, *cnt); X} END_OF_FILE if test 151 -ne `wc -c <'pvm2.4/libfpvm/fputndcplx.m4'`; then echo shar: \"'pvm2.4/libfpvm/fputndcplx.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fputndcplx.m4' fi if test -f 'pvm2.4/libfpvm/fputndfloat.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fputndfloat.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fputndfloat.m4'\" \(153 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fputndfloat.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fputndfloat) ARGS(`dp, cnt, cc') double *dp; int *cnt, *cc; X{ X *cc = putndfloat(dp, *cnt); X} END_OF_FILE if test 153 -ne `wc -c <'pvm2.4/libfpvm/fputndfloat.m4'`; then echo shar: \"'pvm2.4/libfpvm/fputndfloat.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fputndfloat.m4' fi if test -f 'pvm2.4/libfpvm/fputnfloat.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fputnfloat.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fputnfloat.m4'\" \(150 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fputnfloat.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fputnfloat) ARGS(`fp, cnt, cc') float *fp; int *cnt, *cc; X{ X *cc = putnfloat(fp, *cnt); X} END_OF_FILE if test 150 -ne `wc -c <'pvm2.4/libfpvm/fputnfloat.m4'`; then echo shar: \"'pvm2.4/libfpvm/fputnfloat.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fputnfloat.m4' fi if test -f 'pvm2.4/libfpvm/fputnint.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fputnint.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fputnint.m4'\" \(140 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fputnint.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fputnint) ARGS(`np, cnt, cc') int *np, *cnt, *cc; X{ X *cc = putnint(np, *cnt); X} END_OF_FILE if test 140 -ne `wc -c <'pvm2.4/libfpvm/fputnint.m4'`; then echo shar: \"'pvm2.4/libfpvm/fputnint.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fputnint.m4' fi if test -f 'pvm2.4/libfpvm/fputnlong.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fputnlong.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fputnlong.m4'\" \(147 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fputnlong.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fputnlong) ARGS(`np, cnt, cc') long *np; int *cnt, *cc; X{ X *cc = putnlong(np, *cnt); X} END_OF_FILE if test 147 -ne `wc -c <'pvm2.4/libfpvm/fputnlong.m4'`; then echo shar: \"'pvm2.4/libfpvm/fputnlong.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fputnlong.m4' fi if test -f 'pvm2.4/libfpvm/fputnshort.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fputnshort.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fputnshort.m4'\" \(150 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fputnshort.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fputnshort) ARGS(`np, cnt, cc') short *np; int *cnt, *cc; X{ X *cc = putnshort(np, *cnt); X} END_OF_FILE if test 150 -ne `wc -c <'pvm2.4/libfpvm/fputnshort.m4'`; then echo shar: \"'pvm2.4/libfpvm/fputnshort.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fputnshort.m4' fi if test -f 'pvm2.4/libfpvm/fputstring.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fputstring.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fputstring.m4'\" \(1161 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fputstring.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X X#define MAX(a,b) ((a) > (b) ? (a) : (b)) X void XFUNCTION(fputstring) ARGS(`STRING_ARG(p), cc') int *cc; STRING_ARG_DECL(p); X{ X static char *buf = 0; X static int buflen = 0; X char *malloc(); X X /* X * Have to have a NUL at the end of the string, and X * the only way to do this portably is to copy the whole string X * into a malloc'ed buffer. We keep the buffer around for X * future use rather than free'ing it each time we're done. X */ X if (!buf) X buf = malloc(buflen = STRING_LEN(p) + 1); X else X if (STRING_LEN(p) + 1 > buflen) { X buflen = MAX(STRING_LEN(p) + 1, buflen * 2); X /* don't use realloc; it might cause old data to be copied */ X free(buf); X buf = malloc(buflen); X } X if (!buf) { X *cc = pvm_uerr("fputstring", PvmNoMem); X return; X } X strncpy(buf, STRING_PTR(p), STRING_LEN(p)); X buf[STRING_LEN(p)] = '\0'; X /* X * this does the same thing as putstring (buf) as long as X * there are no NULs in the string until the end. However, X * using putbytes() avoids an extra strcpy() and will transmit X * the NULs to the other end if it's FORTRAN. X */ X *cc = putbytes(buf, STRING_LEN(p) + 1); X} END_OF_FILE if test 1161 -ne `wc -c <'pvm2.4/libfpvm/fputstring.m4'`; then echo shar: \"'pvm2.4/libfpvm/fputstring.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fputstring.m4' fi if test -f 'pvm2.4/libfpvm/fpvmperror.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fpvmperror.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fpvmperror.m4'\" \(922 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fpvmperror.m4' <<'END_OF_FILE' X#include X#include "pvmuser.h" X#include "pvm_consts.h" X X#define MAX(a,b) ((a) > (b) ? (a) : (b)) X void XFUNCTION(fpvmperror) ARGS(`STRING_ARG(p)') STRING_ARG_DECL(p); X{ X static char *buf = 0; X static int buflen = 0; X char *malloc(); X int info; X X /* X * Have to have a NUL at the end of the string, and X * the only way to do this portably is to copy the whole string X * into a malloc'ed buffer. We keep the buffer around for X * future use rather than free'ing it each time we're done. X */ X if (!buf) X buf = malloc(buflen = STRING_LEN(p) + 1); X else X if (STRING_LEN(p) + 1 > buflen) { X buflen = MAX(STRING_LEN(p) + 1, buflen * 2); X /* don't use realloc; it might cause old data to be copied */ X free(buf); X buf = malloc(buflen); X } X if (!buf) { X info = pvm_uerr("fpvmperror", PvmNoMem); X return; X } X strncpy(buf, STRING_PTR(p), STRING_LEN(p)); X buf[STRING_LEN(p)] = '\0'; X X pvm_perror(buf); X} END_OF_FILE if test 922 -ne `wc -c <'pvm2.4/libfpvm/fpvmperror.m4'`; then echo shar: \"'pvm2.4/libfpvm/fpvmperror.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fpvmperror.m4' fi if test -f 'pvm2.4/libfpvm/frcv.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/frcv.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/frcv.m4'\" \(123 characters\) sed "s/^X//" >'pvm2.4/libfpvm/frcv.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(frcv) ARGS(`type, cc') int *type, *cc; X{ X *cc = rcv(*type); X} X END_OF_FILE if test 123 -ne `wc -c <'pvm2.4/libfpvm/frcv.m4'`; then echo shar: \"'pvm2.4/libfpvm/frcv.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/frcv.m4' fi if test -f 'pvm2.4/libfpvm/frcvinfo.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/frcvinfo.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/frcvinfo.m4'\" \(687 characters\) sed "s/^X//" >'pvm2.4/libfpvm/frcvinfo.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X X/* X * XXX should frcvinfo() have some way to report the resulting length X * of the proc string? X */ X void XFUNCTION(frcvinfo) ARGS(`len, type, STRING_ARG(proc), inum, cc') int *len, *type, *inum, *cc; STRING_ARG_DECL(proc); X{ X char tproc[MAX_PROC_NAME + 1]; X int x; X X *cc = rcvinfo(len, type, tproc, inum); X X#if 0 X /* XXX should we report this error, or just silently truncate? */ X if ((x = strlen(tproc)) > STRING_LEN(proc)) { X *cc = pvm_uerr("frcvinfo", PvmTooLong); X } X#endif X X /* X * copy up to STRING_LEN(proc) bytes, including the terminating X * NUL if there's room for it. X */ X strncpy(STRING_PTR(proc), tproc, STRING_LEN(proc)); X} END_OF_FILE if test 687 -ne `wc -c <'pvm2.4/libfpvm/frcvinfo.m4'`; then echo shar: \"'pvm2.4/libfpvm/frcvinfo.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/frcvinfo.m4' fi if test -f 'pvm2.4/libfpvm/frcvmulti.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/frcvmulti.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/frcvmulti.m4'\" \(150 characters\) sed "s/^X//" >'pvm2.4/libfpvm/frcvmulti.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(frcvmulti) ARGS(`n, typs, cc') int *n; int *typs; int *cc; X{ X *cc = rcvmulti(*n, typs); X} END_OF_FILE if test 150 -ne `wc -c <'pvm2.4/libfpvm/frcvmulti.m4'`; then echo shar: \"'pvm2.4/libfpvm/frcvmulti.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/frcvmulti.m4' fi if test -f 'pvm2.4/libfpvm/fready.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fready.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fready.m4'\" \(363 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fready.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fready) ARGS(`STRING_ARG(event), cc') STRING_ARG_DECL(event); int *cc; X{ X char tevent[MAX_EVENT_NAME + 1]; X X if (STRING_LEN(event) > MAX_EVENT_NAME) { X *cc = pvm_uerr("fready", PvmTooLong); X return; X } X ftocstr(tevent, sizeof(tevent), STRING_PTR(event), STRING_LEN(event)); X *cc = ready(tevent); X} END_OF_FILE if test 363 -ne `wc -c <'pvm2.4/libfpvm/fready.m4'`; then echo shar: \"'pvm2.4/libfpvm/fready.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fready.m4' fi if test -f 'pvm2.4/libfpvm/fsnd.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fsnd.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fsnd.m4'\" \(384 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fsnd.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fsnd) ARGS(`STRING_ARG(proc), inum, type, cc') STRING_ARG_DECL(proc); int *inum, *type, *cc; X{ X char tproc[MAX_PROC_NAME+1]; X X if (STRING_LEN(proc) > MAX_PROC_NAME) { X *cc = pvm_uerr("fsnd", PvmTooLong); X return; X } X ftocstr(tproc, sizeof(tproc), STRING_PTR(proc), STRING_LEN(proc)); X *cc = snd(tproc, *inum, *type); X} END_OF_FILE if test 384 -ne `wc -c <'pvm2.4/libfpvm/fsnd.m4'`; then echo shar: \"'pvm2.4/libfpvm/fsnd.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fsnd.m4' fi if test -f 'pvm2.4/libfpvm/fstatus.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fstatus.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fstatus.m4'\" \(374 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fstatus.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fstatus) ARGS(`STRING_ARG(proc), inum, cc') STRING_ARG_DECL(proc); int *inum, *cc; X{ X char tproc[MAX_PROC_NAME+1]; X X if (STRING_LEN(proc) > MAX_PROC_NAME) { X *cc = pvm_uerr("fstatus", PvmTooLong); X return; X } X ftocstr(tproc, sizeof(tproc), STRING_PTR(proc), STRING_LEN(proc)); X *cc = status(tproc, *inum); X} X END_OF_FILE if test 374 -ne `wc -c <'pvm2.4/libfpvm/fstatus.m4'`; then echo shar: \"'pvm2.4/libfpvm/fstatus.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fstatus.m4' fi if test -f 'pvm2.4/libfpvm/fterminate.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fterminate.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fterminate.m4'\" \(381 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fterminate.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fterminate) ARGS(`STRING_ARG(proc), inc, cc') STRING_ARG_DECL(proc); int *inc, *cc; X{ X char tproc[MAX_PROC_NAME + 1]; X X if (STRING_LEN(proc) > MAX_PROC_NAME) { X *cc = pvm_uerr("fterminate", PvmTooLong); X return; X } X ftocstr(tproc, sizeof(tproc), STRING_PTR(proc), STRING_LEN(proc)); X *cc = terminate(tproc, *inc); X} END_OF_FILE if test 381 -ne `wc -c <'pvm2.4/libfpvm/fterminate.m4'`; then echo shar: \"'pvm2.4/libfpvm/fterminate.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fterminate.m4' fi if test -f 'pvm2.4/libfpvm/ftocstr.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/ftocstr.c'\" else echo shar: Extracting \"'pvm2.4/libfpvm/ftocstr.c'\" \(352 characters\) sed "s/^X//" >'pvm2.4/libfpvm/ftocstr.c' <<'END_OF_FILE' X#ifndef min X#define min(i,j) ((i)<(j)?(i):(j)) X#endif X ftocstr(ds, dl, ss, sl) X char *ds, *ss; /* dst, src ptrs */ X int dl; /* dst max len */ X int sl; /* src len */ X{ X char *p; X X for (p = ss + sl; --p >= ss && *p == ' '; ) ; X sl = p - ss + 1; X dl--; X ds[0] = 0; X strncat(ds, ss, min(sl, dl)); X} X END_OF_FILE if test 352 -ne `wc -c <'pvm2.4/libfpvm/ftocstr.c'`; then echo shar: \"'pvm2.4/libfpvm/ftocstr.c'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/ftocstr.c' fi if test -f 'pvm2.4/libfpvm/fvrcv.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fvrcv.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fvrcv.m4'\" \(125 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fvrcv.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fvrcv) ARGS(`type, cc') int *type, *cc; X{ X *cc = vrcv(*type); X} X END_OF_FILE if test 125 -ne `wc -c <'pvm2.4/libfpvm/fvrcv.m4'`; then echo shar: \"'pvm2.4/libfpvm/fvrcv.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fvrcv.m4' fi if test -f 'pvm2.4/libfpvm/fvrcvmulti.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fvrcvmulti.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fvrcvmulti.m4'\" \(153 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fvrcvmulti.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fvrcvmulti) ARGS(`n, typs, cc') int *n; int *typs; int *cc; X{ X *cc = vrcvmulti(*n, typs); X} X END_OF_FILE if test 153 -ne `wc -c <'pvm2.4/libfpvm/fvrcvmulti.m4'`; then echo shar: \"'pvm2.4/libfpvm/fvrcvmulti.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fvrcvmulti.m4' fi if test -f 'pvm2.4/libfpvm/fvsnd.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fvsnd.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fvsnd.m4'\" \(390 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fvsnd.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fvsnd) ARGS(`STRING_ARG(proc), inum, type, cc') STRING_ARG_DECL(proc); int *inum, *type, *cc; X{ X char tproc[MAX_PROC_NAME + 1]; X X if (STRING_LEN(proc) > MAX_PROC_NAME) { X *cc = pvm_uerr("fvsnd", PvmTooLong); X return; X } X ftocstr(tproc, sizeof(tproc), STRING_PTR(proc), STRING_LEN(proc)); X *cc = vsnd(tproc, *inum, *type); X} X END_OF_FILE if test 390 -ne `wc -c <'pvm2.4/libfpvm/fvsnd.m4'`; then echo shar: \"'pvm2.4/libfpvm/fvsnd.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fvsnd.m4' fi if test -f 'pvm2.4/libfpvm/fwaituntil.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fwaituntil.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fwaituntil.m4'\" \(375 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fwaituntil.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X void XFUNCTION(fwaituntil) ARGS(`STRING_ARG(event), cc') int *cc; STRING_ARG_DECL(event); X{ X char tevent[MAX_EVENT_NAME + 1]; X X if (STRING_LEN(event) > MAX_EVENT_NAME) { X *cc = pvm_uerr("fwaituntil", PvmTooLong); X return; X } X ftocstr(tevent, sizeof(tevent), STRING_PTR(event), STRING_LEN(event)); X *cc = waituntil(tevent); X} END_OF_FILE if test 375 -ne `wc -c <'pvm2.4/libfpvm/fwaituntil.m4'`; then echo shar: \"'pvm2.4/libfpvm/fwaituntil.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fwaituntil.m4' fi if test -f 'pvm2.4/libfpvm/fwhoami.m4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/fwhoami.m4'\" else echo shar: Extracting \"'pvm2.4/libfpvm/fwhoami.m4'\" \(361 characters\) sed "s/^X//" >'pvm2.4/libfpvm/fwhoami.m4' <<'END_OF_FILE' X#include "pvmuser.h" X#include "pvm_consts.h" X X/* X * XXX should fwhoami() have some way to report the resulting length X * of the proc string? X */ X void XFUNCTION(fwhoami) ARGS(`STRING_ARG(proc), inum, cc') STRING_ARG_DECL(proc); int *inum, *cc; X{ X char tproc[MAX_PROC_NAME + 1]; X X *cc = whoami(tproc, inum); X strncpy(STRING_PTR(proc), tproc, STRING_LEN(proc)); X} END_OF_FILE if test 361 -ne `wc -c <'pvm2.4/libfpvm/fwhoami.m4'`; then echo shar: \"'pvm2.4/libfpvm/fwhoami.m4'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/fwhoami.m4' fi if test -f 'pvm2.4/libfpvm/pvm_consts.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/libfpvm/pvm_consts.h'\" else echo shar: Extracting \"'pvm2.4/libfpvm/pvm_consts.h'\" \(266 characters\) sed "s/^X//" >'pvm2.4/libfpvm/pvm_consts.h' <<'END_OF_FILE' X#define MAX_ARCH_NAME 31 /* XXX should be documented */ X#define MAX_BARRIER_NAME 256 /* XXX should be documented */ X#define MAX_EVENT_NAME 31 /* XXX should be documented */ X#define MAX_HOST_NAME 1024 /* XXX should be something smaller? */ X#define MAX_PROC_NAME 31 END_OF_FILE if test 266 -ne `wc -c <'pvm2.4/libfpvm/pvm_consts.h'`; then echo shar: \"'pvm2.4/libfpvm/pvm_consts.h'\" unpacked with wrong size! fi # end of 'pvm2.4/libfpvm/pvm_consts.h' fi if test ! -d 'pvm2.4/man' ; then echo shar: Creating directory \"'pvm2.4/man'\" mkdir 'pvm2.4/man' fi if test -f 'pvm2.4/man/MkZeroes' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/MkZeroes'\" else echo shar: Extracting \"'pvm2.4/man/MkZeroes'\" \(350 characters\) sed "s/^X//" >'pvm2.4/man/MkZeroes' <<'END_OF_FILE' X#!/bin/csh -f X set SRCS=(man[13]/*.[13]) set DSTS=`echo "$SRCS" |sed 's/\(\.[13]\)/\10/g'` X X#echo $SRCS X#echo $DSTS X echo "writing makefile:" X echo "all: $DSTS" > makefile X X@ i=1 while ($i <= $#SRCS) X echo "${DSTS[$i]}: $SRCS[$i]" >> makefile X echo " nroff -man $SRCS[$i] > $DSTS[$i]" >> makefile X @ i++ end X echo "making:" make -f makefile X exit 0 X END_OF_FILE if test 350 -ne `wc -c <'pvm2.4/man/MkZeroes'`; then echo shar: \"'pvm2.4/man/MkZeroes'\" unpacked with wrong size! fi chmod +x 'pvm2.4/man/MkZeroes' # end of 'pvm2.4/man/MkZeroes' fi if test ! -d 'pvm2.4/man/man1' ; then echo shar: Creating directory \"'pvm2.4/man/man1'\" mkdir 'pvm2.4/man/man1' fi if test -f 'pvm2.4/man/man1/pvm_intro.1' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man1/pvm_intro.1'\" else echo shar: Extracting \"'pvm2.4/man/man1/pvm_intro.1'\" \(1227 characters\) sed "s/^X//" >'pvm2.4/man/man1/pvm_intro.1' <<'END_OF_FILE' X.\" ident info X.\" X.TH PVM 1PVM "11 Aug, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME PVM \- Parallel Virtual Machine System X.SH DESCRIPTION X.I PVM is a software system intended to simplify parallel programming on a network of mixed Unix host machines. It includes libraries of user-callable functions (\fIlibpvm.a\fR and \fIlibf2c.a\fR), and a daemon program (\fIpvmd\fR) which coordinates inter-machine activity. X.SH MACHINE ARCHITECTURE In the PVM system, machines are assigned a short string to identify their architectures (this includes operating system type as well as CPU type). The types currently predefined in the distribution are: X.RS X.PD 0 X.TP 8 AFX8 Alliant FX/8 X.TP BFLY BBN Butterfly TC2000 X.TP C2MP Convex X.TP CM2 Thinking Machines CM-2 Sun front X.TP CM5 Thinking Machines CM-5 X.TP CRAY Cray X.TP HP9K HP 9000 X.TP KSR1 Kendall Square X.TP I860 Intel RX Hypercube X.TP IPSC Intel IPSC/2 X.TP NEXT NeXT X.TP PMAX Dec/Mips cpu (3100, 5000, etc.) X.TP RIOS IBM/RS6000 X.TP SGI Silicon Graphics IRIS X.TP SUN3 Sun 3 X.TP SUN4 Sun 4 (4c, SPARC, etc.) X.TP SYMM Sequent Symmetry X.TP TITN Stardent Titan X.TP UVAX Dec/Microvax X.TP VCM2 Thinking Machines CM-2 Vax front X.PD X.RE X.SH SEE ALSO pvmd(1pvm), libpvm(3pvm) X END_OF_FILE if test 1227 -ne `wc -c <'pvm2.4/man/man1/pvm_intro.1'`; then echo shar: \"'pvm2.4/man/man1/pvm_intro.1'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man1/pvm_intro.1' fi if test -f 'pvm2.4/man/man1/pvmd.1' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man1/pvmd.1'\" else echo shar: Extracting \"'pvm2.4/man/man1/pvmd.1'\" \(6987 characters\) sed "s/^X//" >'pvm2.4/man/man1/pvmd.1' <<'END_OF_FILE' X.\" ident info X.\" X.TH PVMD 1PVM "11 Aug, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME pvmd \- PVM daemon X.SH SYNOPSIS X.ft B pvmd X[ X\-i X] X.I hostfile X.br pvmd X.I hostfile X& X.ft R X.SH DESCRIPTION X.I Pvmd is a daemon process which allows coordination between unix hosts in a virtual machine. One \fIpvmd\fR must run on each host in the group. They provide the communication and process control functions needed by the user's PVM processes. X.SH BUILDING AND INSTALLING To find out about building the PVM daemon, check the Readme file under "BUILDING". This describes how make an executable for an already supported architecture, and what to look for if you need to port PVM to a new type of machine. X The executable, \fIpvmd\fR, should by default be installed in "/tmp/pvm/pvmd" so a remote \fIpvmd\fR will know where to find it. If you have several machines that share a filesystem you may find it convenient to make a symbolic link from /tmp/pvm/pvmd to somewhere in your home directory (f.e. ~/pvm_public/ARCH/pvmd). This will conserve disk space and make upgrading the pvmd easier. X If you can't put the executable or a symlink in /tmp/pvm/, check out the 'dx=' option in the host file. X.SH HOST FILE FORMAT X.\" The host file specification is slightly different between X.\" versions 2.3.4 and 2.3.5. Old hostfiles will still work with X.\" no modification. X.\" The host file format changes from version 2.2 to 2.3. You will X.\" need to add 'lo=' before any loginnames in old hostfiles for X.\" them to work with 2.3. Read on for more additions. XEach host in the virtual machine must have an entry in the host file. Lines beginning with a splat ( # ), optionally preceded by whitespace, are ignored. X A simple host file might look like: X X # my first host file X.br X thud X.br X fred X.br X wilma X.br X barney X.br X betty X This specifies that there are five hosts in the virtual machine, and what their names are. X The master \fIpvmd\fR for a group is started by hand on the localhost, and it starts slaves on each of the remaining hosts using the \fIrsh\fR command. The master host may appear on any line of the hostfile, but must have an entry. X The simple format above works fine if you have the same login name on all five machines and the name of the master host in your .rhosts files on the other four. X There are several host file options available: X.RS X.PD 0 X.TP 8 lo=NAME Specifies an alternate login name (NAME) to use. X.TP pw Causes the master pvmd to prompt for a password for the remote host. This is necessary when the remote host cannot trust the master. X.TP dx=FILE Specifies a filename to execute instead of "pvmd". XFILE may be a simple filename, an absolute pathname, or a path relative to the user's home directory on the remote host. This is mainly useful to aid in debugging new versions of PVM, but may have other uses. X.TP ep=PATH Specifies a path for the \fIpvmd\fR to search for executable program components when initiating a new process. The path may have multiple elements, separated by colons ( : ). A percent in the path ( % ) expands to the architecture of the remote host. X.PD X.RE X XEach of the flags above has a default value. These are: X.RS X.PD 0 X.TP 8 lo The loginname on the master host. X.TP 8 pw Don't ask X.TP 8 dx pvmd X.TP 8 ep pvm/% X.PD X.RE X You can change these by adding a line with a star ( * ) in the first field followed by the options, for example: X X * lo=afriend pw X This sets new default values for 'lo' and 'pw' for the remainder of the host file, or until the next '*' line. X XExample hostfile: X X # hostfile for testing on various platforms X.br X # default to my executable X.br X * dx=pvm/SUN4/pvmd X.br X fonebone X.br X refuge X.br X sigi.cs dx=pvm/PMAX/pvmd X.br X # borrowed accts, "guest", don't trust fonebone X.br X * lo=guest pw X.br X sn666.jrandom.com dx=pvm/CRAY/pvmd X.br X cubie.misc.edu dx=pvm/IPSC/pvmd X.SH STARTING AND STOPPING PVMD To start the master \fIpvmd\fR, type: X X /tmp/pvm/pvmd HOSTFILE & X However, if passwords are required for any of the slave hosts, \fIpvmd\fR must run in the foreground. It can be stopped and backgrounded once all the slave \fIpvmds\fR have started up. X Normally, \fIpvmd\fR runs in the background, and requires no input. If '-i' option is given on the command line, however, the master \fIpvmd\fR runs in interactive mode, which allows the user to monitor and control the virtual machine via a 'console'. X To shut off PVM, kill the master \fIpvmd\fR. It will kill the slave daemons, and any processes initiated by them. When running interactively, you can kill the master \fIpvmd\fR by typing 'quit' or EOF (usually ^D). X If the master \fIpvmd\fR has trouble starting a slave \fIpvmd\fR on a host, the error message from the master \fIpvmd\fR may give some clue as to what the problem is. A common problem is to have something that generates output X(like date or mail) in one's .cshrc. This is always a bad idea. To check if this is the case, run the following by hand: X X rsh hostname pvmd X the result should be a single line similar to: X X pvmd version <2.4.0> arch maxml <4096> X Output on the stderr stream is ignored during the startup phase, however, so complaints from a dynamic-link loader should not cause problems. X.SH INTERACTIVE COMMANDS When the master \fIpvmd\fR is started with '-i', it prints a prompt when all the daemons have started up. It understands the following commands: X Help - Provides minimal information about the commands. X Barr - Lists all active 'ready' and 'barrier' names. Any synch points that have been "readied" are listed. Any barriers that have been used are listed, along with the number of processes needed for a quorum and the number that have called. X Conf - Lists the \fIpvmd\fR group configuration. XFields in the output from conf are: X.RS X.PD 0 X.TP 8 X# Index X.TP HOST Host name X.TP ARCH Host processor architecture X.TP ADDR Internet address X.TP PORT UDP port X.TP MAXML Max UDP message length X.PD X.RE X Ps - Gives a listing of current processes and their status. XFields in the output from ps are: X.RS X.PD 0 X.TP 8 NAME Process Name X.TP INUM Process Instance number X.TP HOST Host Executing X.TP XFLAGS Process Status. May be one or more of: X.RS X.TP r Running X.TP x XExited X.TP c Waiting on \fIpvmd\fR X.TP mw Wait for message X.TP ww Wait for waituntil X.TP bw Wait for barrier X.TP e XEnrolled X.TP d Died X.TP jd Just died X.TP vw Virtual ckt addr wait X.TP ul User lib version mismatch X.PD X.RE X.RE The option '-o' causes \fIps\fR to display the process list for the previous epoch. X Kill - Kill a PVM user process. Kill takes two args, the name and instance number of the process, and sends a SIGKILL to the process. X Quit (or EOF) - Exits pvm. Sends a SIGKILL to any running user processes. All PVMDs exit. X Reset - Reset the virtual machine. Causes a SIGKILL to be sent to every running process. All message queues are cleared. The PVMDs are left in an idle state. X.SH SEE ALSO pvm_intro(1pvm), libpvm(3pvm) END_OF_FILE if test 6987 -ne `wc -c <'pvm2.4/man/man1/pvmd.1'`; then echo shar: \"'pvm2.4/man/man1/pvmd.1'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man1/pvmd.1' fi if test ! -d 'pvm2.4/man/man3' ; then echo shar: Creating directory \"'pvm2.4/man/man3'\" mkdir 'pvm2.4/man/man3' fi if test -f 'pvm2.4/man/man3/barrier.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/barrier.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/barrier.3'\" \(1201 characters\) sed "s/^X//" >'pvm2.4/man/man3/barrier.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH BARRIER 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME barrier \- barrier wait X.SH SYNOPSIS X.ft B int barrier(name, count) X.br char *name; X.br int count; X.ft R X.SH DESCRIPTION X.I Barrier allows a group of PVM processes to cooperate in synchronization. Typically, N processes will call barrier("foo", N). When N processes have called, all will return and be able to continue. X.PP X.I Name may be any null-terminated string, but should probably be human readable for convenience. X.I Count may be any number greater than zero. X.PP During a single run of a PVM application, barrier names may not be reused. This is done to avoid confusion due to timewarps between networked machines. Barrier names are recycled at an epoch (when there are no active processes), however. X.SH RETURN VALUE X.I Barrier returns 0 if successful. On failure, it returns a negative number and sets pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr System error or process not enrolled X PvmBadParam Bad quorum count specified X PvmMismatch Quorum mismatch with another process X calling barrier X.SH SEE ALSO ready(3pvm), waituntil(3pvm) END_OF_FILE if test 1201 -ne `wc -c <'pvm2.4/man/man3/barrier.3'`; then echo shar: \"'pvm2.4/man/man3/barrier.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/barrier.3' fi if test -f 'pvm2.4/man/man3/enroll.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/enroll.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/enroll.3'\" \(1564 characters\) sed "s/^X//" >'pvm2.4/man/man3/enroll.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH ENROLL 3PVM "15 Jul, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME enroll \- enroll program as PVM process X.SH SYNOPSIS X.ft B int instance = enroll(name) X.br char *name; X.ft R X.SH DESCRIPTION X.I Enroll registers a Unix process as a PVM process. The process is enrolled under the name supplied and is assigned an instance number. X.PP X.I Name may be any null-terminated string up to 31 characters long, but should probably be human readable for convenience. X.PP Instance numbers begin at 0 and increment by one for each process created with a given name. Instance numbers are recycled at an epoch (when there are no active processes). X.PP As a side effect, \fIenroll\fR creates the socket necessary to talk to the pvmd, and loads configuration information from it. It is necessary to call \fIenroll\fR before taking any other PVM-related actions. X.PP It is an error to call enroll more than once without an intervening \fIleave\fR call. A process created by \fIinitiate\fR may still call \fIenroll\fR, but it is sufficient to simply call \fIwhoami\fR. If it does call \fIenroll\fR, the \fIname\fR parameter must match the name assigned by \fIinitiate\fR or an error will result. X.SH RETURN VALUE X.I Enroll returns the assigned instance number (>= 0) if successful. On failure, it returns a negative number and sets pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr System error X PvmTooLong If name too long X PvmAlready Process already enrolled X.SH SEE ALSO leave(3pvm), whoami(3pvm) END_OF_FILE if test 1564 -ne `wc -c <'pvm2.4/man/man3/enroll.3'`; then echo shar: \"'pvm2.4/man/man3/enroll.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/enroll.3' fi if test -f 'pvm2.4/man/man3/get.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/get.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/get.3'\" \(1244 characters\) sed "s/^X//" >'pvm2.4/man/man3/get.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH GET 3PVM "29 Jul, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME getbytes getncplx getndcplx getndfloat getnfloat getnint getnlong getnshort getstring X.br X \- unpack data from received message X.SH SYNOPSIS X.ft B int getbytes(cp, cnt) X.br X char *cp; X.br X int cnt; X int getncplx(xp, cnt) X.br X float *xp; X.br X int cnt; X int getndcplx(zp, cnt) X.br X double *zp; X.br X int cnt; X int getndfloat(dp, cnt) X.br X double *dp; X.br X int cnt; X int getnfloat(fp, cnt) X.br X float *fp; X.br X int cnt; X int getnint(np, cnt) X.br X int *np; X.br X int cnt; X int getnlong(np, cnt) X.br X long *np; X.br X int cnt; X int getnshort(np, cnt) X.br X short *np; X.br X int cnt; X int getstring(cp) X.br X char *cp; X.ft R X.SH DESCRIPTION These functions unpack arrays of various data types from the last received message. Data is unpacked from messages in the same order that it was packed. X.PP All except getstring take a pointer to the beginning of the array, and the number of array elements. X.SH RETURN VALUE X0 is returned if the call is successful. On failure, a negative number is returned and pvm_errno is set to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmNoData If at end of receive buffer X.SH SEE ALSO put(3pvm) END_OF_FILE if test 1244 -ne `wc -c <'pvm2.4/man/man3/get.3'`; then echo shar: \"'pvm2.4/man/man3/get.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/get.3' fi if test -f 'pvm2.4/man/man3/initiate.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/initiate.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/initiate.3'\" \(2083 characters\) sed "s/^X//" >'pvm2.4/man/man3/initiate.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH INITIATE 3PVM "15 Jul, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME initiate, initiateM \- initiate a new PVM process X.SH SYNOPSIS X.ft B int instance = initiate(name, arch) X.br char *name, *arch; X int instance = initiateM(name, host) X.br char *name, *host; X.ft R X.SH DESCRIPTION X.I Initiate creates a PVM process with given name. Pvmd exec()s a Unix process and enrolls it. A file with name matching the \fIname\fR parameter must already be installed on the selected host. By default, pvmd searches the path $(HOME)/pvm/ARCH/ for executables. A process created via \fIinitiate\fR must call \fIenroll\fR (with the correct name) or \fIwhoami\fR before taking any other PVM-related actions. X.PP X.I Name may be any null-terminated string up to 31 characters long, but should probably be human readable for convenience. X.PP The \fIarch\fR parameter specifies the cpu type of the host on which the process will be started, f.e. "SUN4". X.PP X.I InitiateM behaves similarly to \fIinitiate\fR except that a specific target host is specified instead of a cpu class. The \fIhost\fR parameter must match one of the hostnames in the virtual machine, either the fully qualified version, or the simple hostname. XE.g. either "thud.cs.utk.edu" or "thud" would be accepted. X.PP If the \fIarch\fR parameter (or \fIhost\fR parameter for \fIinitiateM\fR) is NULL, the process will be started on the 'next' host in a round-robin fashion. X.PP Instance numbers begin at 0 and increment by one for each process created with a given name. Instance numbers are recycled at an epoch (when there are no active processes). X.SH RETURN VALUE X.I Initiate returns the assigned instance number (>= 0) if successful. On failure, it returns a negative number and sets pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr System error / process not enrolled X PvmNoFile If executable file does not exist X PvmNoHost If host cpu class or name does not exist X PvmTooLong If name too long X.SH SEE ALSO enroll(3pvm), terminate(3pvm), whoami(3pvm) X END_OF_FILE if test 2083 -ne `wc -c <'pvm2.4/man/man3/initiate.3'`; then echo shar: \"'pvm2.4/man/man3/initiate.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/initiate.3' fi if test -f 'pvm2.4/man/man3/initsend.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/initsend.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/initsend.3'\" \(1289 characters\) sed "s/^X//" >'pvm2.4/man/man3/initsend.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH INITSEND 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME initsend, pvm_inithow \- initialize new message to send X.SH SYNOPSIS X.ft B X#include "pvmuser.h" X void initsend() X int pvm_inithow(how) X.br X int how; X.ft R X.SH DESCRIPTION X.I Initsend clears the current (if any) sendable message. This is usually in preparation for packing a new message (see put(3pvm)). X.sp X.I Pvm_inithow clears the current (if any) sendable message, and also allows a user to control the message packing performed by PVM. X.I how should be set to one of: X.nf X.ta 0.5i 2.0i X PvmDataDefault Use default PVM conversion rules X PvmDataRaw Do not convert data X.fi X.PP If \fIhow\fR is set to PvmDataDefault, data will be converted using XDR if the system considers it necessary, that is, whenever the pool of hosts is heterogeneous. If \fIhow\fR is set to PvmDataRaw, data will not be converted, but the user must ensure that the message is sent to a host in the same architecture class. X.PP Calling \fIinitsend\fR is equivalent to calling \fIpvm_inithow\fR with X\fIhow\fR set to PvmDataDefault. X.PP X.PP If \fIsnd\fR is called after \fIinitsend\fR but before any \fIput\fR operations, a zero-length message will be sent. X.SH SEE ALSO put(3pvm), snd(3pvm) END_OF_FILE if test 1289 -ne `wc -c <'pvm2.4/man/man3/initsend.3'`; then echo shar: \"'pvm2.4/man/man3/initsend.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/initsend.3' fi if test -f 'pvm2.4/man/man3/leave.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/leave.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/leave.3'\" \(510 characters\) sed "s/^X//" >'pvm2.4/man/man3/leave.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH LEAVE 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME leave \- un-enroll program as PVM process X.SH SYNOPSIS X.ft B void leave() X.ft R X.SH DESCRIPTION X.I Leave un-enrolls a PVM process which was previously created by \fIenroll\fR or \fIinitiate\fR. PVM considers the process dead from this point onward; it cannot be brought back to life. However, a program may use \fIenroll\fR to again become a (different) PVM process. X.SH SEE ALSO enroll(3pvm), initiate(3pvm) END_OF_FILE if test 510 -ne `wc -c <'pvm2.4/man/man3/leave.3'`; then echo shar: \"'pvm2.4/man/man3/leave.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/leave.3' fi if test -f 'pvm2.4/man/man3/libpvm.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/libpvm.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/libpvm.3'\" \(2075 characters\) sed "s/^X//" >'pvm2.4/man/man3/libpvm.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH LIBPVM 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME LIBPVM \- PVM C User Library X.SH SYNOPSIS X.ft B X#include "pvmuser.h" X.ft R X.SH DESCRIPTION The PVM system is accessible to user programs through a library of C functions (\fIlibpvm.a\fR), which contains the following functions: X.RS X.PD 0 X.TP 14 barrier Barrier wait X.TP enroll XEnroll program as PVM process X.TP get Unpack various typed data from message X.TP initiate, X.TP X initiateM Initiate a new PVM process X.TP pvm_inithow, X.TP X initsend Initialize new message to send X.TP leave Un-enroll program as PVM process X.TP pvm_mstat Give configuration of virtual machine X.TP probe, X.TP X probemulti Poll for receivable messages X.TP pstatus Give size of virtual machine X.TP put Pack various typed data into message X.TP pvm_perror Print PVM error message X.TP rcv, X.TP X rcvmulti Accept message from process receive queue X.TP rcvinfo Get info about last received message X.TP ready Set a synchronization semaphore X.TP snd Send a message to a PVM process X.TP status Query the status of a PVM process X.TP terminate Terminate a PVM process X.TP vrcv, X.TP X vrcvmulti Accept a message on virtual circuit X.TP vsnd Send a message on virtual circuit X.TP waituntil Pause until semaphore set X.TP whoami Identify PVM name for process X.PD X.RE X See the individual manual pages for exact descriptions of semantics and return values. In general, when a function in \fIlibpvm\fR returns a negative value, an error is indicated. In addition, an error message identifying the problem is be printed on the stderr stream. See the manual page for \fIpvm_perror\fR for more information on error handling. X.SH PORTABILITY X.I Libpvm has been ported to all the machine architectures listed in the pvm_intro manual page. XFor certain machines, users will need to include additional system libraries when compiling application programs. XFor I860 (Intel Hypercube) machines, add "-lrpc -lsocket" to the final load phase. XFor SGI (Silicon Graphics) machines, add "-lsun". X.SH SEE ALSO pvm_intro(1pvm), pvmd(1pvm) X END_OF_FILE if test 2075 -ne `wc -c <'pvm2.4/man/man3/libpvm.3'`; then echo shar: \"'pvm2.4/man/man3/libpvm.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/libpvm.3' fi if test -f 'pvm2.4/man/man3/probe.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/probe.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/probe.3'\" \(1301 characters\) sed "s/^X//" >'pvm2.4/man/man3/probe.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH PROBE 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME probe, probemulti \- poll for receivable messages X.SH SYNOPSIS X.ft B int cc = probe(type) X.br int type; X int cc = probemulti(ntypes, types) X.br int ntypes, *types; X.ft R X.SH DESCRIPTION X.I Probe checks to see if a message with given type is in the receive queue for a PVM process. It returns without blocking whether this is the case or not. X.I Type specifies the message type (>= 0) for poll for. A \fItype\fR of -1 matches any message type. X.PP X.I Probemulti accepts a list of message types to poll for. It returns the type of the first message in the queue matching any of the types given. X.I Types is an array of length \fIntypes\fR containing the acceptable types. X.SH RETURN VALUE X.I Probe and \fIprobemulti\fR return the type number of the first message in the receive queue that matches the search parameters. X.PP If there are no matching messages in the queue, \fIprobe\fR or \fIprobemulti\fR returns PvmNoMsg (negative value but not really an error condition). On failure, they return a negative number (other than PvmNoMsg) and set pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr System error or process not enrolled X.SH SEE ALSO rcv(3pvm) END_OF_FILE if test 1301 -ne `wc -c <'pvm2.4/man/man3/probe.3'`; then echo shar: \"'pvm2.4/man/man3/probe.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/probe.3' fi if test -f 'pvm2.4/man/man3/pstatus.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/pstatus.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/pstatus.3'\" \(1031 characters\) sed "s/^X//" >'pvm2.4/man/man3/pstatus.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH PSTATUS 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME pstatus \- give size of virtual machine X.SH SYNOPSIS X.ft B int cc = pstatus(ncpus, ntypes) X.br int *ncpus, *ntypes; X.ft R X.SH DESCRIPTION X.I Pstatus returns the number of hosts in the virtual machine and the number of different (internal) data storage formats used across the hosts. X.PP Certain architectures, while different, use the same storage formats for integers, reals, and so on. A mixture of machines whose architectures are all in the same format 'group' counts as a homogeneous machine for this purpose. X.PP If \fIncpus\fR is non-null, the number of hosts is returned in it. X.PP If \fIntypes\fR is non-null, the number of data format groups is returned. X.SH RETURN VALUE X.I Pstatus returns 0 if successful. On failure, it returns a negative number and sets pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr Unknown system error or not enrolled X.SH SEE ALSO whoami(3pvm) END_OF_FILE if test 1031 -ne `wc -c <'pvm2.4/man/man3/pstatus.3'`; then echo shar: \"'pvm2.4/man/man3/pstatus.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/pstatus.3' fi if test -f 'pvm2.4/man/man3/put.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/put.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/put.3'\" \(1268 characters\) sed "s/^X//" >'pvm2.4/man/man3/put.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH PUT 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME putbytes putncplx putndcplx putndfloat putnfloat putnint putnlong putnshort putstring X.br X \- pack data into message X.SH SYNOPSIS X.ft B int putbytes(cp, cnt) X.br X char *cp; X.br X int cnt; X int putncplx(xp, cnt) X.br X float *xp; X.br X int cnt; X int putndcplx(zp, cnt) X.br X double *zp; X.br X int cnt; X int putndfloat(dp, cnt) X.br X double *dp; X.br X int cnt; X int putnfloat(fp, cnt) X.br X float *fp; X.br X int cnt; X int putnint(np, cnt) X.br X int *np; X.br X int cnt; X int putnlong(np, cnt) X.br X long *np; X.br X int cnt; X int putnshort(np, cnt) X.br X short *np; X.br X int cnt; X int putstring(cp) X.br X char *cp; X.ft R X.SH DESCRIPTION These functions pack arrays of various data types and append to the message being composed. X.PP All except putstring take a pointer to the beginning of the array, and the number of array elements. X.PP There is no limit imposed on message length, until malloc fails. X.SH RETURN VALUE X0 is returned if the call is successful. On failure, a negative number is returned and pvm_errno is set to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmNoMem If no more memory available for message X.SH SEE ALSO get(3pvm), initsend(3pvm) END_OF_FILE if test 1268 -ne `wc -c <'pvm2.4/man/man3/put.3'`; then echo shar: \"'pvm2.4/man/man3/put.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/put.3' fi if test -f 'pvm2.4/man/man3/pvm_mstat.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/pvm_mstat.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/pvm_mstat.3'\" \(1293 characters\) sed "s/^X//" >'pvm2.4/man/man3/pvm_mstat.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH PVM_MSTAT 3PVM "22 Dec, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME pvm_mstat \- give configuration of virtual machine X.SH SYNOPSIS X.ft B int cpu = pvm_mstat(&ncpu, &stats, &names, &arches) X.br int ncpu; X.br int *stats; X.br char **names, **arches; X.ft R X.SH DESCRIPTION X.I Pvm_mstat returns information about the configuration of the virtual machine. X.PP On return \fIncpu\fR holds the number of hosts in the machine. X.I Names and \fIarches\fR point to arrays (of length \fIncpu\fR) of strings containing the names and architectures of the hosts. X.I Stats points to an array of integers, one per host, which indicate activity. Zero means there are no processes running on the host, one means that there are one or more processes running. X.PP If any argument is a null pointer, it is ignored. X.PP The pointers returned point into space allocated by libpvm using malloc(3). They are valid at least until the next call to \fIpvm_mstat\fR. X.SH RETURN VALUE X.I Pvm_mstat returns the index of the local host (between 0 and \fIncpu\fR-1) if successful. On failure, it returns a negative number and sets pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr Unknown system error or not enrolled X.SH SEE ALSO whoami(3pvm) END_OF_FILE if test 1293 -ne `wc -c <'pvm2.4/man/man3/pvm_mstat.3'`; then echo shar: \"'pvm2.4/man/man3/pvm_mstat.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/pvm_mstat.3' fi if test -f 'pvm2.4/man/man3/pvm_perror.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/pvm_perror.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/pvm_perror.3'\" \(1761 characters\) sed "s/^X//" >'pvm2.4/man/man3/pvm_perror.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH PVM_PERROR 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME pvm_perror \- print PVM error message X.SH SYNOPSIS X.ft B X#include "pvmuser.h" X extern int pvm_errno; X extern char *pvm_errlist[]; X extern int pvm_nerr; X extern int pvm_aerr; X pvm_perror(msg) X.br char *msg; X.ft R X.SH DESCRIPTION Libpvm functions print a message on the stderr stream when an error occurs. This default action can be disabled by setting the value of \fIpvm_aerr\fR to zero in the application code. X.PP X.I Pvm_perror writes a line to \fIstderr\fR containing the user-supplied message, a colon ( : ), and a string corresponding to the value of \fIpvm_errno\fR. It is intended to be called after a user-lib error has occurred X(function returning a negative value) to identify the problem. X.I Msg may be any null-terminated string. X.PP X.I Pvm_errno holds the code for the last error that occurred in the user-lib. It may be compared against the defined error codes in pvmuser.h. X.I Pvm_errlist is an array of strings of length \fIpvm_nerr\fR indexed by -(\fIpvm_errno\fR). Users may choose to read these variables, but should not set them. X.SH ERROR CODES The table below lists all error return codes. See the individual manual pages for possible return values for each function. X.RS X.PD 0 X.TP 16 PvmOk No Error X.TP PvmSysErr System Error X.TP PvmBadParam Bad Parameter X.TP PvmMismatch Barrier Count Mismatch X.TP PvmTooLong Name Too Long (32 char max.) X.TP PvmNoData Read Past End of Buffer X.TP PvmNoHost No Such Host X.TP PvmNoFile No Such Executable X.TP PvmNoComp No Such Process Component X.TP PvmNoMsg No Message Available X.TP PvmNoMem Can't Get Memory X.TP PvmAlready Process Already Enrolled X.PD X.RE X.SH SEE ALSO pvm_intro(1pvm), libpvm(3pvm) END_OF_FILE if test 1761 -ne `wc -c <'pvm2.4/man/man3/pvm_perror.3'`; then echo shar: \"'pvm2.4/man/man3/pvm_perror.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/pvm_perror.3' fi if test -f 'pvm2.4/man/man3/rcv.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/rcv.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/rcv.3'\" \(1656 characters\) sed "s/^X//" >'pvm2.4/man/man3/rcv.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH RCV 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME rcv, rcvmulti \- accept a message from process receive queue X.SH SYNOPSIS X.ft B int cc = rcv(type) X.br int type; X int cc = rcvmulti(ntypes, types) X.br int ntypes, *types; X.ft R X.SH DESCRIPTION X.I Rcv removes a message from the process's receive queue, makes it the active received message, and rewinds the read pointer to the beginning. X.I Type specifies the message type (>= 0) for accept. X.I Rcv picks the earliest-received message in the queue whose type matches the specified type. A \fItype\fR of -1 matches the first message in the queue. X.PP X.I Rcvmulti behaves similarly to \fIrcv\fR except that it picks the first message whose type matches one in a set specified by the user. X.I Types is an array of length \fIntypes\fR containing the acceptable types. X.PP These functions block until a message of the requested type is ready to be received. X.PP It is possible to receive a defective message. The user can force a message to be packed in host native data format using \fIpvm_inithow\fR (see initsend(3pvm)) and subsequently send it to a host with a different native format. X.I rcv and \fIrcvmulti\fR return an error condition upon receiving such a message. X.SH RETURN VALUE X.I Rcv and \fIrcvmulti\fR return the type of the accepted message (>= 0) if successful. On failure, they return a negative number and set pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr System error or process not enrolled X PvmBadMsg Message was packed in a foreign format X.SH SEE ALSO probe(3pvm), rcvinfo(3pvm), snd(3pvm) END_OF_FILE if test 1656 -ne `wc -c <'pvm2.4/man/man3/rcv.3'`; then echo shar: \"'pvm2.4/man/man3/rcv.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/rcv.3' fi if test -f 'pvm2.4/man/man3/rcvinfo.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/rcvinfo.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/rcvinfo.3'\" \(952 characters\) sed "s/^X//" >'pvm2.4/man/man3/rcvinfo.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH RCVINFO 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME rcvinfo \- get info about last received message X.SH SYNOPSIS X.ft B int rcvinfo(len, type, proc, inum) X.br int *len, *type, *inum; X.br char *proc; X.ft R X.SH DESCRIPTION X.I Rcvinfo returns information about the last message received. On return, X.I len holds the length of the message in bytes, X.I type holds the type of the message (as returned by \fIrcv\fR or \fIrcvmulti\fR), and \fIproc\fR and \fIinum\fR hold the name and instance number of the sending process. X.PP Any of the args may be a NULL pointer if that information is not desired. X.I Proc should point to at least 32 bytes of space. X.SH RETURN VALUE X.I Rcvinfo returns 0 if successful. On failure, it returns a negative number and sets pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmNoMsg If no message has been received X.SH SEE ALSO rcv(3pvm) END_OF_FILE if test 952 -ne `wc -c <'pvm2.4/man/man3/rcvinfo.3'`; then echo shar: \"'pvm2.4/man/man3/rcvinfo.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/rcvinfo.3' fi if test -f 'pvm2.4/man/man3/ready.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/ready.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/ready.3'\" \(898 characters\) sed "s/^X//" >'pvm2.4/man/man3/ready.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH READY 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME ready \- set a synchronization semaphore X.SH SYNOPSIS X.ft B int ready(name) X.br char *name; X.ft R X.SH DESCRIPTION X.I Ready sets a global semaphore which wakes up any processes waiting on it (see waituntil(3pvm)). X.I Name may be any null-terminated string up to 31 characters long, but should probably be human readable for convenience. X.PP Semaphore names, once set, cannot be reset until an epoch (when there are no active processes). It is not an error to set a semaphore more than once. X.SH RETURN VALUE X.I Ready returns 0 if successful. On failure, it returns a negative number and sets pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr System error / process not enrolled X PvmTooLong If name too long X.SH SEE ALSO barrier(3pvm), waituntil(3pvm) END_OF_FILE if test 898 -ne `wc -c <'pvm2.4/man/man3/ready.3'`; then echo shar: \"'pvm2.4/man/man3/ready.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/ready.3' fi if test -f 'pvm2.4/man/man3/snd.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/snd.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/snd.3'\" \(1158 characters\) sed "s/^X//" >'pvm2.4/man/man3/snd.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH SND 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME snd \- send a message to a PVM process X.SH SYNOPSIS X.ft B int snd(name, inum, type) X.br char *name; X.br int inum, type; X.ft R X.SH DESCRIPTION X.I Snd transmits a message to another process. It returns as soon as possible, i.e. when the local PVMD believes it can deliver the message. X.I Name and \fIinum\fR are the name and instance number of the process the message is to be sent to. X.I Type is the (user-defined) type of the message, which can be used by the receiving process to identify the message meaning or to select the message from the receive queue. It must be >= 0. X.PP If \fIinum\fR is given as -1, the message is broadcast to all instance numbers of process \fIname\fR. X.SH RETURN VALUE X.I Snd returns 0 if successful. On failure, it returns a negative number and sets pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr System error or process not enrolled X PvmBadParam If message type < 0 X PvmNoComp If recipient process does not exist X PvmTooLong If name too long X.SH SEE ALSO rcv(3pvm), vsnd(3pvm) END_OF_FILE if test 1158 -ne `wc -c <'pvm2.4/man/man3/snd.3'`; then echo shar: \"'pvm2.4/man/man3/snd.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/snd.3' fi if test -f 'pvm2.4/man/man3/status.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/status.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/status.3'\" \(788 characters\) sed "s/^X//" >'pvm2.4/man/man3/status.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH STATUS 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME status \- query the status of a PVM process X.SH SYNOPSIS X.ft B int cc = status(name, inum) X.br char *name; X.br int inum; X.ft R X.SH DESCRIPTION X.I Status checks whether a specified process exists, that is, the process has enrolled or was created by pvm and has not yet exited. X.I Name and \fIinum\fR are the name and instance number of the process. X.SH RETURN VALUE X.I Status returns 1 if the process exists, and 0 if it does not. On failure, it returns a negative number and sets pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr Unknown system error X PvmTooLong If name too long X.SH SEE ALSO enroll(3pvm), initiate(3pvm), terminate(3pvm) END_OF_FILE if test 788 -ne `wc -c <'pvm2.4/man/man3/status.3'`; then echo shar: \"'pvm2.4/man/man3/status.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/status.3' fi if test -f 'pvm2.4/man/man3/terminate.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/terminate.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/terminate.3'\" \(701 characters\) sed "s/^X//" >'pvm2.4/man/man3/terminate.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH TERMINATE 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME terminate \- terminate a PVM process X.SH SYNOPSIS X.ft B int terminate(name, inum) X.br char *name; X.br int inum; X.ft R X.SH DESCRIPTION X.I Terminate commands PVM to kill a process. X.I Name and \fIinum\fR are the name and instance number of the process. X.SH RETURN VALUE X.I Terminate returns 0 if successful. On failure, it returns a negative number and sets pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr Unknown system error X PvmTooLong If name too long X PvmNoComp if process does not exist X.SH SEE ALSO enroll(3pvm), initiate(3pvm), status(3pvm) END_OF_FILE if test 701 -ne `wc -c <'pvm2.4/man/man3/terminate.3'`; then echo shar: \"'pvm2.4/man/man3/terminate.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/terminate.3' fi if test -f 'pvm2.4/man/man3/vrcv.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/vrcv.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/vrcv.3'\" \(2168 characters\) sed "s/^X//" >'pvm2.4/man/man3/vrcv.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH VRCV 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME vrcv, vrcvmulti \- accept a message from process receive queue X.SH SYNOPSIS X.ft B int cc = vrcv(type) X.br int type; X int cc = vrcvmulti(ntypes, types) X.br int ntypes, *types; X.ft R X.SH DESCRIPTION X.I Vrcv removes a message from the process's receive queue, makes it the active received message, and rewinds the read pointer to the beginning. X.I Type specifies the message type (>= 0) for accept. X.I Vrcv picks the earliest-received message in the queue whose type matches the specified type. A \fItype\fR of -1 matches the first message in the queue. X.PP X.I Vrcvmulti behaves similarly to \fIvrcv\fR except that it picks the first message whose type matches one in a set specified by the user. X.I Types is an array of length \fIntypes\fR containing the acceptable types. X.PP These functions block until a message of the requested type is ready to be received. X.PP It is possible to receive a defective message. The user can force a message to be packed in host native data format using \fIpvm_inithow\fR (see initsend(3pvm)) and subsequently send it to a host with a different native format. X.I vrcv and \fIvrcvmulti\fR return an error condition upon receiving such a message. X.PP The purpose of these functions is to provide a message mechanism for users who need the bandwidth of a TCP connection. In addition, it provides a test bed for other protocols. X.PP Messages sent on a virtual circuit are currently considered to be in a different "space" than messages send by \fIsnd\fR. This means that: X1.) You cannot receive a message sent on the virtual circuit with a normal \fIrcv\fR and vice-versa, and X2.) Message ordering between the two mechanisms may not be preserved. X.SH RETURN VALUE X.I Vrcv and \fIvrcvmulti\fR return the type of the accepted message (>= 0) if successful. On failure, they return a negative number and set pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr System error or process not enrolled X PvmBadMsg Message was packed in a foreign format X.SH SEE ALSO rcv(3pvm), rcvinfo(3pvm), vsnd(3pvm) END_OF_FILE if test 2168 -ne `wc -c <'pvm2.4/man/man3/vrcv.3'`; then echo shar: \"'pvm2.4/man/man3/vrcv.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/vrcv.3' fi if test -f 'pvm2.4/man/man3/vsnd.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/vsnd.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/vsnd.3'\" \(1676 characters\) sed "s/^X//" >'pvm2.4/man/man3/vsnd.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH VSND 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME vsnd \- send a message to a PVM process X.SH SYNOPSIS X.ft B int vsnd(name, inum, type) X.br char *name; X.br int inum, type; X.ft R X.SH DESCRIPTION X.I Vsnd transmits a message to another process. It returns as soon as the receiving process has accepted the message, i.e. copied it to its address space. X.I Name and \fIinum\fR are the name and instance number of the process the message is to be sent to. X.I Type is the (user-defined) type of the message, which can be used by the receiving process to identify the message meaning or to select the message from the receive queue. It must be >= 0. X.PP If \fIinum\fR is given as -1, the message is broadcast to all instance numbers of process \fIname\fR. X.PP The purpose of these functions is to provide a message mechanism for users who need the bandwidth of a TCP connection. In addition, it provides a test bed for other protocols. X.PP Messages sent on a virtual circuit are currently considered to be in a different "space" than messages send by \fIsnd\fR. This means that: X1.) You cannot receive a message sent on the virtual circuit with a normal \fIrcv\fR and vice-versa, and X2.) Message ordering between the two mechanisms may not be preserved. X.SH RETURN VALUE X.I Vsnd returns 0 if successful. On failure, it returns a negative number and sets pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr System error or process not enrolled X PvmBadParam If message type < 0 X PvmNoComp If recipient process does not exist X PvmTooLong If name too long X.SH SEE ALSO snd(3pvm), vrcv(3pvm) END_OF_FILE if test 1676 -ne `wc -c <'pvm2.4/man/man3/vsnd.3'`; then echo shar: \"'pvm2.4/man/man3/vsnd.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/vsnd.3' fi if test -f 'pvm2.4/man/man3/waituntil.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/waituntil.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/waituntil.3'\" \(898 characters\) sed "s/^X//" >'pvm2.4/man/man3/waituntil.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH WAITUNTIL 3PVM "26 May, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME waituntil \- pause until semaphore set X.SH SYNOPSIS X.ft B int waituntil(name) X.br char *name; X.ft R X.SH DESCRIPTION X.I Waituntil causes the process to pause until the named semaphore is set by a \fIready\fR call. If the semaphore has already been set, \fIwaituntil\fR returns immediately. X.PP X.I Name may be any null-terminated string up to 31 characters long, but should probably be human readable for convenience. X.PP Semaphore names, once set, cannot be reset until an epoch (when there are no active processes). X.SH RETURN VALUE X.I Waituntil returns 0 if successful. On failure, it returns a negative number and sets pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr Unknown system error X PvmTooLong If name too long X.SH SEE ALSO ready(3pvm) END_OF_FILE if test 898 -ne `wc -c <'pvm2.4/man/man3/waituntil.3'`; then echo shar: \"'pvm2.4/man/man3/waituntil.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/waituntil.3' fi if test -f 'pvm2.4/man/man3/whoami.3' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/man/man3/whoami.3'\" else echo shar: Extracting \"'pvm2.4/man/man3/whoami.3'\" \(1073 characters\) sed "s/^X//" >'pvm2.4/man/man3/whoami.3' <<'END_OF_FILE' X.\" ident info X.\" X.TH WHOAMI 3PVM "15 Jul, 1992" "Version 2.4.1" "Parallel Virtual Machine" X.SH NAME whoami \- identify PVM name for process X.SH SYNOPSIS X.ft B int whoami(name, inum) X.br char *name; X.br int *inum; X.ft R X.SH DESCRIPTION X.I Whoami returns the name and instance number for the process. In order for \fIwhoami\fR to succeed, the process must have either enrolled itself or been created by another PVM process with \fIinitiate\fR. A process created via \fIinitiate\fR must call \fIenroll\fR (with the correct name) or \fIwhoami\fR before taking any other PVM-related actions. X.PP XEither of the args may be a NULL pointer if that information is not desired. X.I Name should point to at least 32 bytes of space. X.SH RETURN VALUE X.I Whoami returns 0 if successful. On failure, it returns a negative number and sets pvm_errno to the same value. X.PP The possible error conditions are: X.nf X.ta 0.5i 2.0i X PvmSysErr Unknown system error X PvmNoComp If no name available (process has not X enrolled and was not created by pvmd) X.SH SEE ALSO enroll(3pvm), initiate(3pvm) END_OF_FILE if test 1073 -ne `wc -c <'pvm2.4/man/man3/whoami.3'`; then echo shar: \"'pvm2.4/man/man3/whoami.3'\" unpacked with wrong size! fi # end of 'pvm2.4/man/man3/whoami.3' fi if test ! -d 'pvm2.4/mandel' ; then echo shar: Creating directory \"'pvm2.4/mandel'\" mkdir 'pvm2.4/mandel' fi if test -f 'pvm2.4/mandel/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/mandel/Makefile'\" else echo shar: Extracting \"'pvm2.4/mandel/Makefile'\" \(671 characters\) sed "s/^X//" >'pvm2.4/mandel/Makefile' <<'END_OF_FILE' X# X# makefile for mandelbrot stuff X# X# ARCH and PVMLFLAGS are imported automagically if you use "aimk". X#ARCH = UNKNOWN X PLIB = ../src/$(ARCH)/libpvm.a XXDIR = ../$(ARCH) SDIR = . X CC = cc CFLAGS = -O -DUSE_VC LIBS = $(PVMLFLAGS) X all: mandel_main mandel_tile X xpx: xpx.c X $(CC) -o xpx xpx.c -lX11 -lm X X$(XDIR): X - mkdir $(XDIR) X mandel_main: $(SDIR)/mandel_main.c $(PLIB) $(XDIR) X $(CC) $(CFLAGS) -o mandel_main $(SDIR)/mandel_main.c $(PLIB) $(LIBS) X mv mandel_main $(XDIR) X mandel_tile: $(SDIR)/mandel_tile.c $(PLIB) $(XDIR) X $(CC) $(CFLAGS) -o mandel_tile $(SDIR)/mandel_tile.c $(PLIB) $(LIBS) -lm X mv mandel_tile $(XDIR) X clean: X rm -f mandel_main mandel_tile *.o xpx X END_OF_FILE if test 671 -ne `wc -c <'pvm2.4/mandel/Makefile'`; then echo shar: \"'pvm2.4/mandel/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/mandel/Makefile' fi if test -f 'pvm2.4/mandel/Readme' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/mandel/Readme'\" else echo shar: Extracting \"'pvm2.4/mandel/Readme'\" \(817 characters\) sed "s/^X//" >'pvm2.4/mandel/Readme' <<'END_OF_FILE' X Readme file for Mandel demo X21 Jan 1992 X X________________________________________________________________________ X This directory contains two programs, mandel_main and mandel_tile. They work together via PVM to calculate a Mandelbrot set. X The main program is started by hand. You specify the width and height, coordinates, and number of processors. It will start up the tile programs (however many specified), pass them the subcoordinates, piece together their results. X To compile the programs, set the architecture type at the top of the makefile and type "make". Alternatively, just use "aimk". X To run, start up some PVMDs and run mandel_main. Be sure you have mandel_tile installed for each machine in the hosts file. X X+ If USE_VC is defined in the Makefile, demo uses vsnd/vrcv X virtual circuit calls. X END_OF_FILE if test 817 -ne `wc -c <'pvm2.4/mandel/Readme'`; then echo shar: \"'pvm2.4/mandel/Readme'\" unpacked with wrong size! fi # end of 'pvm2.4/mandel/Readme' fi if test -f 'pvm2.4/mandel/mandel_main.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/mandel/mandel_main.c'\" else echo shar: Extracting \"'pvm2.4/mandel/mandel_main.c'\" \(4695 characters\) sed "s/^X//" >'pvm2.4/mandel/mandel_main.c' <<'END_OF_FILE' X X/* X* mandel_main.c X* X* Mandelbrot calculator. X* Uses mandel_tile processes to calculate strips from the requested X* region, cats the strips together. X* X* Usage: X* mandel_main width height x1 y1 x2 y2 filename X* ( mandel_main 256 256 -2.0 -2.0 2.0 2.0 whole_mandelbrot ) X* X* 3 Jun 1991 Robert Manchek manchek@CS.UTK.EDU. X* 22 Sep 91 - took out ncpus command arg because we can find out from pvm X*/ X X#include X#include X#include X#include X char *mandelbrot(); X char *webe = 0; /* this process name */ int nprocessors = 1; /* number of processors to use */ int *pinums = 0; /* processor instance numbers */ X X char * my_rindex(s, c) X char *s; X char c; X{ X char *p = 0; X X do { X if (c == *s) X p = s; X } while (*s++); X return p; X} X X main(argc, argv) X int argc; X char **argv; X{ X int myinum; /* my instance number */ X int wd = 16, ht = 16; /* size of image to calculate */ X double x1, y1, x2, y2; /* image corner coordinates */ X char *pix; /* image data */ X int d; /* output file */ X int i; /* gp */ X char *dfn; /* file to write to */ X X webe = (webe = my_rindex(argv[0], '/')) ? webe + 1 : argv[0]; X X if (argc != 8) goto usage; X wd = atoi(argv[1]); X ht = atoi(argv[2]); X x1 = atof(argv[3]); X y1 = atof(argv[4]); X x2 = atof(argv[5]); X y2 = atof(argv[6]); X dfn = argv[7]; X if (wd < 1 || wd > 2048 || ht < 1 || ht > 2048) { X fputs("width and heigh must be between 1 and 2048\n", stderr); X goto usage; X } X X /* enroll in pvm */ X X if ((myinum = enroll(webe)) < 0) { X pvm_perror("enroll"); X exit(1); X } X X pstatus(&nprocessors, (int*)0); X nprocessors *= 2; X if (nprocessors > wd) X nprocessors = wd; X fprintf(stderr, "using %d tile servers in calculation\n", nprocessors); X X /* create n instances of mandel_tile */ X X pinums = (int*)malloc(nprocessors * sizeof(int)); X for (i = 0; i < nprocessors; i++) { X if ((pinums[i] = initiate("mandel_tile", (char*)0)) < 0) { X pvm_perror("initiate"); X fputs("can't initiate calculator\n", stderr); X leave(); X exit(1); X } X } X X pix = mandelbrot(x1, y1, x2, y2, wd, ht); X X fputs("writing\n", stderr); X if ((d = open(dfn, O_WRONLY|O_CREAT|O_TRUNC, 0666)) == -1) { X perror(dfn); X X } else { X (void)write(d, pix, wd * ht); X (void)close(d); X fprintf(stderr, "%s: written\n", dfn); X } X X /* kill processors we created */ X X for (i = 0; i < nprocessors; i++) { X terminate("mandel_tile", pinums[i]); X } X X /* un-enroll from pvm */ X X leave(); X exit(0); X usage: X fputs("usage: mandel_main width height x1 y1 x2 y2 filename\n", X stderr); X exit(1); X} X char* mandelbrot(x1, y1, x2, y2, wd, ht) X double x1, y1, x2, y2; X int wd, ht; X{ X char *pix = 0; /* calculated image */ X char *tile = 0; /* data from a single strip */ X int *tpos; /* tile positions */ X int maxwd = 0; /* maximum width of strip */ X int slaveinum; /* processor id responding */ X int twd; /* width of a tile */ X double xyxy[4]; /* gp */ X int wdht[2]; /* gp */ X int i, j; /* gp */ X int y; /* gp */ X char *ba1, *ba2; /* gp */ X X pix = (char*)malloc(wd * ht); X X /* divide up area into strips and assign them to processors */ X X tpos = (int*)malloc((nprocessors + 1) * sizeof(int)); X x2 -= x1; X xyxy[0] = x1; X xyxy[1] = y1; X xyxy[3] = y2; X wdht[1] = ht; X tpos[0] = 0; X fputs("sending work to processors\n", stderr); X for (i = 0; i < nprocessors; i++) { X initsend(); X tpos[i + 1] = ((i + 1) * wd) / nprocessors; X wdht[0] = tpos[i + 1] - tpos[i]; X if (wdht[0] > maxwd) X maxwd = wdht[0]; X xyxy[2] = (tpos[i + 1] * x2) / wd + x1; X putndfloat(xyxy, 4); X putnint(wdht, 2); X#ifdef USE_VC X if (vsnd("mandel_tile", pinums[i], 1)) { X#else X if (snd("mandel_tile", pinums[i], 1)) { X#endif X pvm_perror("snd"); X fprintf(stderr, "error sending to <%s,%d>\n", X "mandel_tile", pinums[i]); X leave(); X exit(1); X } X xyxy[0] = xyxy[2]; X } X X /* collect results and patch together */ X X tile = (char*)malloc(maxwd * ht); X fputs("processors responding:", stderr); fflush(stderr); X for (i = 0; i < nprocessors; i++) { X#ifdef USE_VC X if (vrcv(2) != 2) { X#else X if (rcv(2) != 2) { X#endif X fprintf(stderr, "error receiving message type 2\n"); X leave(); X exit(1); X } X rcvinfo((int*)0, (int*)0, (char*)0, &slaveinum); X for (j = 0; j < nprocessors; j++) X if (pinums[j] == slaveinum) break; X if (j < nprocessors) { X fprintf(stderr, " %d", slaveinum); fflush(stderr); X twd = tpos[j + 1] - tpos[j]; X getbytes(tile, twd * ht); X ba1 = tile; X ba2 = pix + tpos[j]; X for (y = ht; y-- > 0; ) { X bcopy(ba1, ba2, twd); X ba1 += twd; X ba2 += wd; X } X X } else { X fprintf(stderr, "got response from unknown processor %d?\n", X slaveinum); X } X } X fputs("\n", stderr); X free(tpos); X free(tile); X return pix; X} X END_OF_FILE if test 4695 -ne `wc -c <'pvm2.4/mandel/mandel_main.c'`; then echo shar: \"'pvm2.4/mandel/mandel_main.c'\" unpacked with wrong size! fi # end of 'pvm2.4/mandel/mandel_main.c' fi if test -f 'pvm2.4/mandel/mandel_tile.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/mandel/mandel_tile.c'\" else echo shar: Extracting \"'pvm2.4/mandel/mandel_tile.c'\" \(2619 characters\) sed "s/^X//" >'pvm2.4/mandel/mandel_tile.c' <<'END_OF_FILE' X X/* X* mandel_tile.c X* X* Mandelbrot tile calculation server. X* Receives a request to calculate a tile, generates the tile, and X* sends it back. X* X* 3 Jun 1991 Robert Manchek manchek@CS.UTK.EDU. X* 2 Dec 91 check for null argv[0] X*/ X X#include X#include X#include X#include "../src/pvmuser.h" X char* calc_tile(); X char *webe; X X char * my_rindex(s, c) X char *s; X char c; X{ X char *p = 0; X X do { X if (c == *s) X p = s; X } while (*s++); X return p; X} X X main(argc, argv) X int argc; X char **argv; X{ X char *av0; X int myinum; /* my instance number */ X char mastername[32]; /* who sent us this tile */ X int masterinum; X double x1, y1, x2, y2; /* tile corner coordinates */ X int wd, ht; /* size of tile */ X char *pix; /* calculated image */ X X av0 = (argv[0] && argv[0][0]) ? argv[0] : "mandel_tile"; X webe = (webe = my_rindex(av0, '/')) ? webe + 1 : av0; X myinum = enroll(webe); X X /* loop forever reading sizes and coords of tiles we should calculate */ X X#ifdef USE_VC X while (vrcv(1) == 1) { X#else X while (rcv(1) == 1) { X#endif X X rcvinfo((int*)0, (int*)0, mastername, &masterinum); X getndfloat(&x1, 1); X getndfloat(&y1, 1); X getndfloat(&x2, 1); X getndfloat(&y2, 1); X getnint(&wd, 1); X getnint(&ht, 1); X X/* X fprintf(stderr, "<%s,%d>: %dx%d tile between %f,%f and %f,%f\n", X webe, myinum, wd, ht, x1, y1, x2, y2); X*/ X X pix = calc_tile(x1, y1, x2, y2, wd, ht); X X initsend(); X/* X pvm_inithow(PvmDataRaw); X*/ X putbytes(pix, wd * ht); X free(pix); X#ifdef USE_VC X if (vsnd(mastername, masterinum, 2)) { X#else X if (snd(mastername, masterinum, 2)) { X#endif X pvm_perror("snd"); X fprintf(stderr, "<%s,%d> error sending image back\n", X webe, myinum); X } X } X fprintf(stderr, "error receiving work to do\n"); X leave(); X exit(1); X} X char* calc_tile(x1, y1, x2, y2, wd, ht) X double x1, y1, x2, y2; /* tile corner coords */ X int wd, ht; /* size of tile */ X{ X char *pix; /* calculated image */ X int ix, iy; /* loop indices */ X double x, y; /* pixel coords */ X double ar, ai, a; /* accums */ X int ite; /* number of iter until divergence */ X X if (wd < 1 || wd > 1024 || ht < 1 || ht > 1024) { X fputs("insane wd/ht\n", stderr); X leave(); X exit(1); X } X pix = (char*)malloc(wd * ht); X x2 -= x1; X y2 -= y1; X for (iy = 0; iy < ht; iy++) { X y = (iy * y2) / ht + y1; X for (ix = 0; ix < wd; ix++) { X x = (ix * x2) / wd + x1; X ar = x; X ai = y; X for (ite = 0; ite < 255; ite++) { X a = (ar * ar) + (ai * ai); X if (a > 4.0) break; X a = ar * ar - ai * ai; X ai *= 2 * ar; X ar = a + x; X ai += y; X } X pix[iy * wd + ix] = ~ite; X } X } X return pix; X} X END_OF_FILE if test 2619 -ne `wc -c <'pvm2.4/mandel/mandel_tile.c'`; then echo shar: \"'pvm2.4/mandel/mandel_tile.c'\" unpacked with wrong size! fi # end of 'pvm2.4/mandel/mandel_tile.c' fi if test -f 'pvm2.4/mandel/xpx.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/mandel/xpx.c'\" else echo shar: Extracting \"'pvm2.4/mandel/xpx.c'\" \(16953 characters\) sed "s/^X//" >'pvm2.4/mandel/xpx.c' <<'END_OF_FILE' X/* X * xpx.c X * X * usage: X * xpx wid hgt [imagefile] X * options: X * -display X * +/-color X * +/-c X * +/-lut X * +/-v X * X * Display a raw (no header) 8 bit per pixel greyscale image in an Xwindow. X * X * Jan 1991 Manchek manchek@CS.UTK.EDU. X * Mar 1991 Added framing window for pix and lut, handles expose, lut X * does rubberline. X */ X X X#include X#include X#include X#include X#include X#include X#include X#include X X#define NPV 64 /* this is the number of pixel values used, X must be a power of two */ X X#define min(a,b) ((a)<(b)?(a):(b)) X#define max(a,b) ((a)>(b)?(a):(b)) X X#define MYEVENTS (PointerMotionMask|ButtonPressMask|ButtonReleaseMask|ExposureMask|KeyPressMask) X X/******************************************* X* Known arguments and fallbacks, resources * X*******************************************/ X char *fallbacks[] = { X ".display:", X ".color:false", X ".lut:false", X ".v:false", X 0 X}; X XXrmOptionDescRec knownargs[] = { X { "-display", ".display", XrmoptionSepArg, (caddr_t)0 }, X { "-color", ".color", XrmoptionNoArg, "true"}, X { "+color", ".color", XrmoptionSepArg, "false"}, X { "-c", ".color", XrmoptionNoArg, "true"}, X { "+c", ".color", XrmoptionNoArg, "false"}, X { "-lut", ".lut", XrmoptionNoArg, "true"}, X { "+lut", ".lut", XrmoptionNoArg, "false"}, X { "-v", ".v", XrmoptionNoArg, "true"}, X { "+v", ".v", XrmoptionNoArg, "false"} X}; X struct { X char *dispname; X int docolor; X int dolut; X int portrait; X} app_res; X X X/********** X* Globals * X**********/ X char *webe; /* out a.out name */ Display *dis; /* display */ Visual *defvi; /* the default visual */ int sn; /* def screen number */ u_long bp, wp; /* black, white on screen */ int np; /* number of planes on screen */ int bpp; /* bits per pixel for direct display */ int bypp; /* bytes per pixel for direct display */ u_long rmsk, gmsk, bmsk; int rshf, gshf, bshf; int nomap = 0; /* not using a colormap */ Colormap cmap; /* default colormap */ int ctes[NPV]; /* colormap indices given to us */ XXImage *img; /* image to display */ char *ribuf; /* raw image buffer */ char *imbuf; /* displayed image buffer */ int wid, hgt; /* size of displayed image */ int nb; /* length of raw image in bytes */ int lut[NPV]; /* the (user-specified) lookup table */ u_long reds[NPV]; /* red of rainbow lut */ u_long greens[NPV]; /* green of rainbow lut */ u_long blues[NPV]; /* blue of rainbow lut */ int ibo; /* display image byte order for displays deeper than 8 */ X X/* xparms() X* X* Parse the command line, get resources, etc. X*/ X xparms(ac, av, options, numoptions, fallbacks) X int *ac; X char **av; X XrmOptionDescRec *options; X int numoptions; X char **fallbacks; X{ X char *getenv(); X X XrmDatabase defdb, udb; X XrmValue rval; X X char *hodir; X char *xdfile; X int l; X X webe = (webe = rindex(av[0], '/')) ? webe + 1 : av[0]; X X XrmInitialize(); X defdb = XrmGetStringDatabase(""); X if (fallbacks) { X while (*fallbacks) { X XrmPutLineResource(&defdb, *fallbacks); X fallbacks++; X } X } X if (hodir = getenv("HOME")) { X l = strlen(hodir); X xdfile = (char*)malloc(l + 16); X bcopy(hodir, xdfile, l); X bcopy("/.Xdefaults", xdfile + l, 12); X if (udb = XrmGetFileDatabase(xdfile)) { X XrmMergeDatabases(udb, &defdb); X } X } X if (options && numoptions > 0) X XrmParseCommand(&defdb, options, numoptions, webe, ac, av); X X /* X * Wierd client-specific part -- have to make this parsing X * portable X */ X X { X char buf[256]; X static char *t[] = {"String", 0}; X X strcpy(buf, webe); X strcat(buf, ".display"); X if (XrmGetResource(defdb, buf, "Display", t, &rval)) X app_res.dispname = rval.addr; X else X app_res.dispname = 0; X X strcpy(buf, webe); X strcat(buf, ".color"); X if (XrmGetResource(defdb, buf, "Color", t, &rval)) { X if (!strcasecmp(rval.addr, "true") X || !strcasecmp(rval.addr, "on")) X app_res.docolor = 1; X } else X app_res.docolor = 0; X X strcpy(buf, webe); X strcat(buf, ".lut"); X if (XrmGetResource(defdb, buf, "Lut", t, &rval)) { X if (!strcasecmp(rval.addr, "true") X || !strcasecmp(rval.addr, "on")) X app_res.dolut = 1; X } else X app_res.dolut = 0; X X strcpy(buf, webe); X strcat(buf, ".v"); X if (XrmGetResource(defdb, buf, "V", t, &rval)) { X if (!strcasecmp(rval.addr, "true") X || !strcasecmp(rval.addr, "on")) X app_res.portrait = 1; X } else X app_res.portrait = 0; X } X} X X main(argc, argv) X int argc; X char **argv; X{ X char *fn; X X /* get resources, options */ X X xparms(&argc, argv, knownargs, sizeof(knownargs)/sizeof(knownargs[0]), X fallbacks); X X if (argc < 3 || argc > 4) goto usage; X X wid = atoi(argv[1]); X hgt = atoi(argv[2]); X X setupdpy(); X mkrbow(NPV, reds, greens, blues); X X /* read in the image data */ X X fn = (argc > 3) ? argv[3] : 0; X nb = wid * hgt; X getbuf(fn, nb); X X setupimg(); X X show(); X X exit(0); X usage: X fputs("usage: xpx wid hgt [filename]\n", stderr); X fputs("options:\n", stderr); X fputs(" -display \n", stderr); X fputs(" +/-color\n", stderr); X fputs(" +/-c\n", stderr); X fputs(" +/-lut\n", stderr); X fputs(" +/-v\n", stderr); X exit(1); X} X X/* getbuf() X* X* Read file fn (or stdin if fn = 0) into a buffer. X*/ X getbuf(fn, nb) X char *fn; X int nb; X{ X int f; X int i, j; X char c; X char *s = "stdin"; X X if (fn) { X if ((f = open(fn, O_RDONLY, 0)) == -1) { X perror(fn); X exit(1); X } X } else { X fn = s; X f = 0; X } X ribuf = (char*)malloc(nb); X bzero(ribuf, nb); X X if ((j = tread(f, ribuf, nb)) == -1) { X perror(fn); X exit(1); X } X if (j < nb) X fprintf(stderr, "%s: warning, early EOF\n", fn); X else X if (read(f, &c, 1) == 1) X fprintf(stderr, "%s: warning, extra bytes\n", fn); X if (fn != s) X (void)close(f); X} X X/* setupdpy() X* X* Setup display. Initializes globals X* dis, sn, bp, wp, nomap, np, defvi. X* If nomap is true, initializes X* bpp, bypp, rmsk, rshf, gmsk, gshf, bmsk, bshf X* else initializes X* cmap, ctes X*/ X setupdpy() X{ X XVisualInfo *vin; X X if (!(dis = XOpenDisplay(app_res.dispname))) { X fputs("can't open display\n", stderr); X exit(1); X } X sn = DefaultScreen(dis); X X bp = BlackPixel(dis, sn); X wp = WhitePixel(dis, sn); X X np = DefaultDepth(dis, sn); X defvi = DefaultVisual(dis, sn); X X if (defvi->class == TrueColor || defvi->class == DirectColor) { X XPixmapFormatValues *pfv; X int i; X X nomap = 1; X if (!(pfv = XListPixmapFormats(dis, &i))) { X fprintf(stderr, "can't get pixmap format list for screen\n"); X exit(1); X } X while (--i >= 0) X if (pfv[i].depth == np) break; X if (i < 0) { X fprintf(stderr, "no pixmap format matches screen depth?\n"); X exit(1); X } X bypp = pfv[i].bits_per_pixel / 8; X/* X printf("nomap=1, bypp=%d, np=%d\n", bypp, np); X*/ X rmsk = defvi->red_mask; X rshf = ffs(rmsk & ~(rmsk >> 1)) - 8; X gmsk = defvi->green_mask; X gshf = ffs(gmsk & ~(gmsk >> 1)) - 8; X bmsk = defvi->blue_mask; X bshf = ffs(bmsk & ~(bmsk >> 1)) - 8; X X ibo = ImageByteOrder(dis); X } else { X nomap = 0; X cmap = DefaultColormap(dis, sn); X X XAllocColorCells(dis, cmap, 0, NULL, 0, ctes, NPV); X } X} X setupimg() X{ X int i; X X for (i = 0; i < NPV; i++) X lut[i] = i; X X if (nomap) { X imbuf = (char*)malloc(nb * bypp); X colbuf(ribuf, imbuf, nb, NPV, lut, app_res.docolor, ibo); X X img = XCreateImage(dis, defvi, np, ZPixmap, 0, X imbuf, wid, hgt, bpp, wid * bypp); X X } else { X imbuf = (char*)malloc(nb); X setlut(dis, cmap, NPV, ctes, lut, app_res.docolor); X X for (i = 0; i < nb; i++ ) { X imbuf[i] = ctes[(ribuf[i] >> 2) & 0x3f]; X } X X img = XCreateImage(dis, defvi, 8, ZPixmap, 0, imbuf, wid, hgt, 8, wid); X } X} X show() X{ X GC gc[4]; X Window mw, pixw, wl, w; X XEvent event; X XButtonEvent *bev = (XButtonEvent*)&event; X XMotionEvent *mev = (XMotionEvent*)&event; X XExposeEvent *eev = (XExposeEvent*)&event; X XSizeHints xsh; X int lwid = NPV, lhgt = NPV; X int mwid, mhgt; X int pixwx, pixwy, lutwx, lutwy; X int dragging = 0; X int x1, y1, x2, y2; X int x, y; X int ox, oy; X int i, j; X char keys[2]; /* for key press interpretation */ X X if (app_res.dolut) { X X /* display image and look-up table, edit lut */ X X if (app_res.portrait) { X mwid = (wid > lwid * 4) ? wid + 10 : lwid * 4 + 10; X mhgt = hgt + lhgt * 4 + 15; X pixwx = 5; X pixwy = 5; X lutwx = 5; X lutwy = hgt + 10; X } else { X mwid = wid + lwid * 4 + 15; X mhgt = (hgt > lhgt * 4) ? hgt + 10 : lhgt * 4 + 10; X pixwx = 5; X pixwy = 5; X lutwx = wid + 10; X lutwy = 5; X } X mw = XCreateSimpleWindow(dis, X RootWindow(dis, sn), X 0, 0, mwid, mhgt, X 1, wp, bp); X XStoreName(dis, mw, "xpx"); X xsh.flags = USSize; X xsh.width = mwid; X xsh.height = mhgt; X XSetNormalHints(dis, mw, &xsh); X X pixw = XCreateSimpleWindow(dis, mw, pixwx, pixwy, wid, hgt, 1, wp, bp); X X gc[2] = XCreateGC(dis, mw, (u_long)0, (XGCValues*)0); X XSetBackground(dis, gc[2], bp); X XSetFunction(dis, gc[2], GXcopy); X X for (x = 0; x < lwid; x++) X lut[x] = x; X X wl = XCreateSimpleWindow(dis, X mw, lutwx, lutwy, lwid * 4, lhgt * 4, 1, wp, bp); X X gc[0] = XCreateGC(dis, mw, (u_long)0, (XGCValues*)0); X XSetBackground(dis, gc[0], wp); X XSetForeground(dis, gc[0], bp); X XSetFunction(dis, gc[0], GXcopy); X X gc[1] = XCreateGC(dis, mw, (u_long)0, (XGCValues*)0); X XSetBackground(dis, gc[1], bp); X XSetForeground(dis, gc[1], wp); X XSetFunction(dis, gc[1], GXcopy); X X gc[3] = XCreateGC(dis, mw, (u_long)0, (XGCValues*)0); X XSetForeground(dis, gc[3], bp ^ wp); X XSetFunction(dis, gc[3], GXxor); X X XSelectInput(dis, mw, MYEVENTS); X XMapWindow(dis, mw); X XMapSubwindows(dis, mw); X X while (1) { X XWindowEvent (dis, mw, MYEVENTS, &event); X X switch (event.type) { X X case Expose: X if (eev->count == 0) { X XClearWindow(dis, wl); X for (x = 0; x < lwid; x++) { X XFillRectangle(dis, wl, gc[1], X x * 4, lhgt * 4 - 1 - lut[x] * 4, X 4, lut[x] * 4); X } X XPutImage(dis, pixw, gc[2], img, 0, 0, 0, 0, wid, hgt); X } X break; X X case ButtonPress: X if (bev->subwindow != wl X || bev->button != Button1) X break; X XTranslateCoordinates(dis, mw, wl, X (int)mev->x, (int)mev->y, &x, &y, &w); X dragging = 1; X ox = x1 = x; X oy = y1 = y; X XDrawLine(dis, wl, gc[3], x1, y1, ox, oy); X break; X X case MotionNotify: X if (mev->subwindow != wl) X break; X if (dragging) { X XTranslateCoordinates(dis, mw, wl, X (int)mev->x, (int)mev->y, &x, &y, &w); X XDrawLine(dis, wl, gc[3], x1, y1, ox, oy); X ox = x; X oy = y; X XDrawLine(dis, wl, gc[3], x1, y1, ox, oy); X } X break; X X case ButtonRelease: X if (bev->subwindow != wl) X break; X XTranslateCoordinates(dis, mw, wl, X (int)mev->x, (int)mev->y, &x, &y, &w); X switch (bev->button) { X case Button1: X if (dragging) { X dragging = 0; X XDrawLine(dis, wl, gc[3], x1, y1, ox, oy); X x1 /= 4; X y1 /= 4; X x2 = x / 4; X y2 = y / 4; X if (x2 < 0) x2 = 0; X if (x2 >= lwid * 4) x2 = lwid * 4 - 1; X if (y2 < 0) y2 = 0; X if (y2 >= lhgt * 4) y2 = lhgt * 4 - 1; X { X int big, small; /* dimensions of rectangle */ X int dx, dy; /* delta x, y */ X int xdir, ydir; /* x, y direction */ X int x, y; /* position accumulator */ X int a = 0; /* accum for interpolating */ X int i; X X if ((dx = x2 - x1) < 0) { X dx = -dx; xdir = -1; X } else X xdir = 1; X if ((dy = y2 - y1) < 0) { X dy = -dy; ydir = -1; X } else X ydir = 1; X big = max(dx, dy); X small = min(dx, dy); X X x = x1; X y = y1; X X for (i = 0; i <= big; i++) { X lut[x] = lhgt - 1 - y; X XFillRectangle(dis, wl, gc[0], x * 4, 0, 4, y * 4); X XFillRectangle(dis, wl, gc[1], x * 4, y * 4, 4, (lhgt - y) * 4); X if ((a += small) > big) { X a -= big; X if (dx < dy) x += xdir; else y += ydir; X } X if (dy > dx) y += ydir; else x += xdir; X } X X if (nomap) { X colbuf(ribuf, imbuf, nb, NPV, lut, app_res.docolor, ibo); X XPutImage(dis, pixw, gc[2], img, 0, 0, 0, 0, wid, hgt); X } else X setlut(dis, cmap, NPV, ctes, lut, app_res.docolor); X XFlush(dis); X } X } X break; X X case Button2: X printf("lut values:\n"); X for (i = 0; i < lwid; i++) { X printf("%2d [%2d]%s", i, lut[i], (i & 7) == 7 ? "\n" : " "); X } X break; X X/* X case Button3: X exit(0); X break; X*/ X X default: X break; X } X break; X X case KeyPress: X if (XLookupString((XKeyEvent*)&event, keys, sizeof(keys), 0, 0) X == 1 && (keys[0] == 'q' || keys[0] == 'Q')) X exit(0); X break; X X default: X break; X } X } X X } else { X X /* no look-up table, just display */ X X pixw = XCreateSimpleWindow(dis, X RootWindow(dis, sn), X 0, 0, wid, hgt, X 1, 1, 1); X XStoreName(dis, pixw, "xpx"); X X xsh.flags = USSize; X xsh.width = wid; X xsh.height = hgt; X XSetNormalHints(dis, pixw, &xsh); X X XSelectInput(dis, pixw, MYEVENTS); X X XMapWindow(dis, pixw); X X gc[2] = XCreateGC(dis, pixw, (u_long)0, (XGCValues*)0); X XSetBackground(dis, gc[2], 0); X XSetFunction(dis, gc[2], GXcopy); X X while (1) { X XWindowEvent (dis, pixw, MYEVENTS, &event); X switch (event.type) { X case Expose: X if (eev->count == 0) X XPutImage(dis, pixw, gc[2], img, 0, 0, 0, 0, wid, hgt); X break; X/* X case ButtonRelease: X exit(0); X*/ X case KeyPress: X if (XLookupString((XKeyEvent*)&event, keys, sizeof(keys), 0, 0) X == 1 && (keys[0] == 'q' || keys[0] == 'Q')) X exit(0); X break; X X default: X break; X } X } X } X} X X/* setlut() X* X* Set colormap according to lut and whether we are in color. X*/ X setlut(dis, cmap, n, ctes, lut, cbw) X Display *dis; /* display connection */ X Colormap cmap; /* colormap to write */ X int n; /* number of colormap entries */ X int *ctes; /* colormap indices */ X int *lut; /* lookup table values */ X int cbw; /* color/b&w */ X{ X XColor colr; X int i, j; X X colr.flags = DoRed|DoGreen|DoBlue; X X if (cbw) { X colr.pixel = ctes[n - 1]; X colr.red = colr.green = colr.blue = 0; X XStoreColor(dis, cmap, &colr); X for (i = 0; i < n; i++) { X colr.pixel = ctes[i]; X colr.blue = (blues[lut[i]]) << 10; X colr.green = (greens[lut[i]]) << 10; X colr.red = (reds[lut[i]]) << 10; X XStoreColor(dis, cmap, &colr); X } X X } else { X for (i = 0; i < n; i++) { X colr.pixel = ctes[i]; X colr.red = colr.green = colr.blue = (lut[i] << 10); X XStoreColor(dis, cmap, &colr); X } X } X} X u_long sw4(lp) X u_long lp; X{ X u_char *cp = (u_char*)&lp; X u_char c; X X c = cp[0]; X cp[0] = cp[3]; X cp[3] = c; X c = cp[1]; X cp[1] = cp[2]; X cp[2] = c; X return lp; X} X X/* colbuf() X* X* Recolor memory-image according to lut and whether we are in color. X*/ X colbuf(ribuf, imbuf, len, n, lut, cbw, ibo) X unsigned char *ribuf; X unsigned char *imbuf; X int len; X int n; /* number of colormap entries */ X int *lut; /* lookup table values */ X int cbw; /* color/b&w */ X int ibo; /* image byte order, either LSBFirst or MSBFirst */ X{ X int i, j; X u_long pixv, r, g, b; X int lbs; X int lbm; X u_long mbo = 0x04030201; /* machine byte order */ X int bs = 0; X X if ((*(char*)&mbo == 1 && ibo == MSBFirst) X || (*(char*)&mbo == 4 && ibo == LSBFirst)) X bs = 1; X X lbm = n - 1; X lbs = 8 - (ffs(n) - 1); X X if (cbw) { X for (i = 0; i < len; i++) { X r = reds[lut[lbm & (ribuf[i] >> lbs)]] << lbs; X g = greens[lut[lbm & (ribuf[i] >> lbs)]] << lbs; X b = blues[lut[lbm & (ribuf[i] >> lbs)]] << lbs; X pixv = (rmsk & (r << rshf)) X | (gmsk & (g << gshf)) X | (bmsk & (b << bshf)); X if (bs) X ((u_long*)imbuf)[i] = sw4(pixv); X else X ((u_long*)imbuf)[i] = pixv; X } X X } else { X for (i = 0; i < len; i++) { X pixv = lut[lbm & (ribuf[i] >> lbs)] << lbs; X pixv = (rmsk & (pixv << rshf)) X | (gmsk & (pixv << gshf)) X | (bmsk & (pixv << bshf)); X if (bs) X ((u_long*)imbuf)[i] = sw4(pixv); X else X ((u_long*)imbuf)[i] = pixv; X } X } X} X X/* mkrbow() X* X* Generate a rainbow lut. 0 is black, n-1 is white, and entries X* between those two go through the spectrum from red to violet. X*/ X mkrbow(n, r, g, b) X int n; /* number of entries */ X u_long *r, *g, *b; /* red, grn, blu lut return */ X{ X int i, j; X double d, e; X X for (i = 1; i < n - 1; i++) { X j = n - 1 - i; X d = (d = cos((double)((j - n * 0.16) * (3.1415926535 / n)))) < 0.0 X ? 0.0 : d; X b[i] = d * n; X d = (d = cos((double)((j - n * 0.52) * (3.1415926535 / n)))) < 0.0 X ? 0.0 : d; X g[i] = d * n; X d = (d = cos((double)((j - n * .83) * (3.1415926535 / n)))) < 0.0 X ? 0.0 : d; X e = (e = cos((double)(j * (3.1415926535 / n)))) < 0.0 X ? 0.0 : e; X r[i] = d * n + e * (n / 2); X } X r[i] = g[i] = b[i] = i; X r[0] = g[0] = b[0] = 0; X} X X/* tread() X* X* Tenacious read. Just like read(2) except that it will keep trying X* to get those n bytes until there really aren't any more. X* Returns the number it got or -1 if error. X*/ X int tread(d, b, n) X int d; X char *b; X int n; X{ X int e; X int x = n; X X while (x > 0) { X if ((e = read(d, b, x)) == -1) X return e; X if (!e) X return n - x; X b += e; X x -= e; X } X return n - x; X} X END_OF_FILE if test 16953 -ne `wc -c <'pvm2.4/mandel/xpx.c'`; then echo shar: \"'pvm2.4/mandel/xpx.c'\" unpacked with wrong size! fi # end of 'pvm2.4/mandel/xpx.c' fi if test ! -d 'pvm2.4/src' ; then echo shar: Creating directory \"'pvm2.4/src'\" mkdir 'pvm2.4/src' fi if test ! -d 'pvm2.4/src/AFX8' ; then echo shar: Creating directory \"'pvm2.4/src/AFX8'\" mkdir 'pvm2.4/src/AFX8' fi if test -f 'pvm2.4/src/AFX8/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/AFX8/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/AFX8/Makefile'\" \(5238 characters\) sed "s/^X//" >'pvm2.4/src/AFX8/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Alliant FX/8 X# ARCH = AFX8 ARCHCFLAGS = -DNOSTRCASE ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5238 -ne `wc -c <'pvm2.4/src/AFX8/Makefile'`; then echo shar: \"'pvm2.4/src/AFX8/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/AFX8/Makefile' fi if test ! -d 'pvm2.4/src/ALPHA' ; then echo shar: Creating directory \"'pvm2.4/src/ALPHA'\" mkdir 'pvm2.4/src/ALPHA' fi if test -f 'pvm2.4/src/ALPHA/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/ALPHA/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/ALPHA/Makefile'\" \(5220 characters\) sed "s/^X//" >'pvm2.4/src/ALPHA/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for DEC/Alpha X# ARCH = ALPHA ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5220 -ne `wc -c <'pvm2.4/src/ALPHA/Makefile'`; then echo shar: \"'pvm2.4/src/ALPHA/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/ALPHA/Makefile' fi if test ! -d 'pvm2.4/src/BFLY' ; then echo shar: Creating directory \"'pvm2.4/src/BFLY'\" mkdir 'pvm2.4/src/BFLY' fi if test -f 'pvm2.4/src/BFLY/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/BFLY/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/BFLY/Makefile'\" \(5224 characters\) sed "s/^X//" >'pvm2.4/src/BFLY/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/BBN TC2000 X# ARCH = BFLY ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5224 -ne `wc -c <'pvm2.4/src/BFLY/Makefile'`; then echo shar: \"'pvm2.4/src/BFLY/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/BFLY/Makefile' fi if test ! -d 'pvm2.4/src/C2MP' ; then echo shar: Creating directory \"'pvm2.4/src/C2MP'\" mkdir 'pvm2.4/src/C2MP' fi if test -f 'pvm2.4/src/C2MP/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/C2MP/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/C2MP/Makefile'\" \(5235 characters\) sed "s/^X//" >'pvm2.4/src/C2MP/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Convex, IEEE f.p. X# ARCH = C2MP ARCHCFLAGS = -fi ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5235 -ne `wc -c <'pvm2.4/src/C2MP/Makefile'`; then echo shar: \"'pvm2.4/src/C2MP/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/C2MP/Makefile' fi if test ! -d 'pvm2.4/src/C2MPCXFP' ; then echo shar: Creating directory \"'pvm2.4/src/C2MPCXFP'\" mkdir 'pvm2.4/src/C2MPCXFP' fi if test -f 'pvm2.4/src/C2MPCXFP/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/C2MPCXFP/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/C2MPCXFP/Makefile'\" \(5237 characters\) sed "s/^X//" >'pvm2.4/src/C2MPCXFP/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Convex, native f.p. X# ARCH = C2MPCXFP ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5237 -ne `wc -c <'pvm2.4/src/C2MPCXFP/Makefile'`; then echo shar: \"'pvm2.4/src/C2MPCXFP/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/C2MPCXFP/Makefile' fi if test ! -d 'pvm2.4/src/CM2' ; then echo shar: Creating directory \"'pvm2.4/src/CM2'\" mkdir 'pvm2.4/src/CM2' fi if test -f 'pvm2.4/src/CM2/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/CM2/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/CM2/Makefile'\" \(5227 characters\) sed "s/^X//" >'pvm2.4/src/CM2/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/CM-2 Sun front X# ARCH = CM2 ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5227 -ne `wc -c <'pvm2.4/src/CM2/Makefile'`; then echo shar: \"'pvm2.4/src/CM2/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/CM2/Makefile' fi if test ! -d 'pvm2.4/src/CM5' ; then echo shar: Creating directory \"'pvm2.4/src/CM5'\" mkdir 'pvm2.4/src/CM5' fi if test -f 'pvm2.4/src/CM5/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/CM5/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/CM5/Makefile'\" \(5217 characters\) sed "s/^X//" >'pvm2.4/src/CM5/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/CM-5 X# ARCH = CM5 ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5217 -ne `wc -c <'pvm2.4/src/CM5/Makefile'`; then echo shar: \"'pvm2.4/src/CM5/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/CM5/Makefile' fi if test ! -d 'pvm2.4/src/CRAY' ; then echo shar: Creating directory \"'pvm2.4/src/CRAY'\" mkdir 'pvm2.4/src/CRAY' fi if test -f 'pvm2.4/src/CRAY/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/CRAY/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/CRAY/Makefile'\" \(5288 characters\) sed "s/^X//" >'pvm2.4/src/CRAY/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/CRAY-YMP or CRAY-2 (at least) X# ARCH = CRAY ARCHCFLAGS = -DSYSVSIGNAL -DRSHCOMMAND=\"/usr/ucb/remsh\" ARCHDLIBS = ARCHDOBJS = HASRANLIB = f X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5288 -ne `wc -c <'pvm2.4/src/CRAY/Makefile'`; then echo shar: \"'pvm2.4/src/CRAY/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/CRAY/Makefile' fi if test ! -d 'pvm2.4/src/CRAYSMP' ; then echo shar: Creating directory \"'pvm2.4/src/CRAYSMP'\" mkdir 'pvm2.4/src/CRAYSMP' fi if test -f 'pvm2.4/src/CRAYSMP/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/CRAYSMP/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/CRAYSMP/Makefile'\" \(5226 characters\) sed "s/^X//" >'pvm2.4/src/CRAYSMP/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Cray S-MP X# ARCH = CRAYSMP ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5226 -ne `wc -c <'pvm2.4/src/CRAYSMP/Makefile'`; then echo shar: \"'pvm2.4/src/CRAYSMP/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/CRAYSMP/Makefile' fi if test ! -d 'pvm2.4/src/DGAV' ; then echo shar: Creating directory \"'pvm2.4/src/DGAV'\" mkdir 'pvm2.4/src/DGAV' fi if test -f 'pvm2.4/src/DGAV/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/DGAV/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/DGAV/Makefile'\" \(5317 characters\) sed "s/^X//" >'pvm2.4/src/DGAV/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Data General Aviion X# ARCH = DGAV ARCHCFLAGS = -DFDSETPATCH -DNOSTRCASE -DSYSVSIGNAL -DSYSVSTRING -DRSHCOMMAND=\"/usr/ucb/remsh\" ARCHDLIBS = ARCHDOBJS = HASRANLIB = f X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5317 -ne `wc -c <'pvm2.4/src/DGAV/Makefile'`; then echo shar: \"'pvm2.4/src/DGAV/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/DGAV/Makefile' fi if test ! -d 'pvm2.4/src/HP9K' ; then echo shar: Creating directory \"'pvm2.4/src/HP9K'\" mkdir 'pvm2.4/src/HP9K' fi if test -f 'pvm2.4/src/HP9K/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/HP9K/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/HP9K/Makefile'\" \(5285 characters\) sed "s/^X//" >'pvm2.4/src/HP9K/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/HP Snake X# ARCH = HP9K ARCHCFLAGS = -DSYSVSIGNAL -DNOGETDTABLESIZE -DRSHCOMMAND=\"/usr/bin/remsh\" ARCHDLIBS = ARCHDOBJS = HASRANLIB = f X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5285 -ne `wc -c <'pvm2.4/src/HP9K/Makefile'`; then echo shar: \"'pvm2.4/src/HP9K/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/HP9K/Makefile' fi if test ! -d 'pvm2.4/src/I386' ; then echo shar: Creating directory \"'pvm2.4/src/I386'\" mkdir 'pvm2.4/src/I386' fi if test -f 'pvm2.4/src/I386/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/I386/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/I386/Makefile'\" \(5237 characters\) sed "s/^X//" >'pvm2.4/src/I386/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/386 BSDI X# ARCH = I386 ARCHCFLAGS = -DSOCKADHASLEN ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5237 -ne `wc -c <'pvm2.4/src/I386/Makefile'`; then echo shar: \"'pvm2.4/src/I386/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/I386/Makefile' fi if test ! -d 'pvm2.4/src/I860' ; then echo shar: Creating directory \"'pvm2.4/src/I860'\" mkdir 'pvm2.4/src/I860' fi if test -f 'pvm2.4/src/I860/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/I860/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/I860/Makefile'\" \(5292 characters\) sed "s/^X//" >'pvm2.4/src/I860/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/ X# ARCH = I860 ARCHCFLAGS = -DNOUNIXSOC -DSYSVSIGNAL -DSYSVSTRING -DRSHCOMMAND=\"/usr/ucb/rcmd\" ARCHDLIBS = -lsocket ARCHDOBJS = HASRANLIB = f X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5292 -ne `wc -c <'pvm2.4/src/I860/Makefile'`; then echo shar: \"'pvm2.4/src/I860/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/I860/Makefile' fi if test ! -d 'pvm2.4/src/IPSC' ; then echo shar: Creating directory \"'pvm2.4/src/IPSC'\" mkdir 'pvm2.4/src/IPSC' fi if test -f 'pvm2.4/src/IPSC/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/IPSC/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/IPSC/Makefile'\" \(5292 characters\) sed "s/^X//" >'pvm2.4/src/IPSC/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/ X# ARCH = IPSC ARCHCFLAGS = -DNOUNIXSOC -DSYSVSIGNAL -DSYSVSTRING -DRSHCOMMAND=\"/usr/ucb/rcmd\" ARCHDLIBS = -lsocket ARCHDOBJS = HASRANLIB = f X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5292 -ne `wc -c <'pvm2.4/src/IPSC/Makefile'`; then echo shar: \"'pvm2.4/src/IPSC/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/IPSC/Makefile' fi if test ! -d 'pvm2.4/src/KSR1' ; then echo shar: Creating directory \"'pvm2.4/src/KSR1'\" mkdir 'pvm2.4/src/KSR1' fi if test -f 'pvm2.4/src/KSR1/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/KSR1/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/KSR1/Makefile'\" \(5218 characters\) sed "s/^X//" >'pvm2.4/src/KSR1/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/KSR1 X# ARCH = KSR1 ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = f X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5218 -ne `wc -c <'pvm2.4/src/KSR1/Makefile'`; then echo shar: \"'pvm2.4/src/KSR1/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/KSR1/Makefile' fi if test -f 'pvm2.4/src/Makefile.body' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/Makefile.body'\" else echo shar: Extracting \"'pvm2.4/src/Makefile.body'\" \(4979 characters\) sed "s/^X//" >'pvm2.4/src/Makefile.body' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 4979 -ne `wc -c <'pvm2.4/src/Makefile.body'`; then echo shar: \"'pvm2.4/src/Makefile.body'\" unpacked with wrong size! fi # end of 'pvm2.4/src/Makefile.body' fi if test -f 'pvm2.4/src/Makefile.custom' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/Makefile.custom'\" else echo shar: Extracting \"'pvm2.4/src/Makefile.custom'\" \(238 characters\) sed "s/^X//" >'pvm2.4/src/Makefile.custom' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/ X# ARCH = UNKNOWN ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here END_OF_FILE if test 238 -ne `wc -c <'pvm2.4/src/Makefile.custom'`; then echo shar: \"'pvm2.4/src/Makefile.custom'\" unpacked with wrong size! fi # end of 'pvm2.4/src/Makefile.custom' fi if test ! -d 'pvm2.4/src/NEXT' ; then echo shar: Creating directory \"'pvm2.4/src/NEXT'\" mkdir 'pvm2.4/src/NEXT' fi if test -f 'pvm2.4/src/NEXT/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/NEXT/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/NEXT/Makefile'\" \(5218 characters\) sed "s/^X//" >'pvm2.4/src/NEXT/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/NeXT X# ARCH = NEXT ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5218 -ne `wc -c <'pvm2.4/src/NEXT/Makefile'`; then echo shar: \"'pvm2.4/src/NEXT/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/NEXT/Makefile' fi if test ! -d 'pvm2.4/src/PMAX' ; then echo shar: Creating directory \"'pvm2.4/src/PMAX'\" mkdir 'pvm2.4/src/PMAX' fi if test -f 'pvm2.4/src/PMAX/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/PMAX/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/PMAX/Makefile'\" \(5248 characters\) sed "s/^X//" >'pvm2.4/src/PMAX/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Dec PMAX X# ARCH = PMAX ARCHCFLAGS = ARCHDLIBS = X#ARCHDOBJS = ruserpass.o ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5248 -ne `wc -c <'pvm2.4/src/PMAX/Makefile'`; then echo shar: \"'pvm2.4/src/PMAX/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/PMAX/Makefile' fi if test ! -d 'pvm2.4/src/RIOS' ; then echo shar: Creating directory \"'pvm2.4/src/RIOS'\" mkdir 'pvm2.4/src/RIOS' fi if test -f 'pvm2.4/src/RIOS/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/RIOS/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/RIOS/Makefile'\" \(5237 characters\) sed "s/^X//" >'pvm2.4/src/RIOS/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/IBM RS6000 X# ARCH = RIOS ARCHCFLAGS = -DSYSVSIGNAL ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5237 -ne `wc -c <'pvm2.4/src/RIOS/Makefile'`; then echo shar: \"'pvm2.4/src/RIOS/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/RIOS/Makefile' fi if test ! -d 'pvm2.4/src/RT' ; then echo shar: Creating directory \"'pvm2.4/src/RT'\" mkdir 'pvm2.4/src/RT' fi if test -f 'pvm2.4/src/RT/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/RT/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/RT/Makefile'\" \(5218 characters\) sed "s/^X//" >'pvm2.4/src/RT/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/IBM RT X# ARCH = RT ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5218 -ne `wc -c <'pvm2.4/src/RT/Makefile'`; then echo shar: \"'pvm2.4/src/RT/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/RT/Makefile' fi if test ! -d 'pvm2.4/src/SGI' ; then echo shar: Creating directory \"'pvm2.4/src/SGI'\" mkdir 'pvm2.4/src/SGI' fi if test -f 'pvm2.4/src/SGI/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/SGI/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/SGI/Makefile'\" \(5283 characters\) sed "s/^X//" >'pvm2.4/src/SGI/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Silicon Graphics Iris X# ARCH = SGI ARCHCFLAGS = -DSYSVSIGNAL -DRSHCOMMAND=\"/usr/bsd/rsh\" ARCHDLIBS = -lsun ARCHDOBJS = HASRANLIB = f X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5283 -ne `wc -c <'pvm2.4/src/SGI/Makefile'`; then echo shar: \"'pvm2.4/src/SGI/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/SGI/Makefile' fi if test ! -d 'pvm2.4/src/SUN3' ; then echo shar: Creating directory \"'pvm2.4/src/SUN3'\" mkdir 'pvm2.4/src/SUN3' fi if test -f 'pvm2.4/src/SUN3/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/SUN3/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/SUN3/Makefile'\" \(5219 characters\) sed "s/^X//" >'pvm2.4/src/SUN3/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Sun 3 X# ARCH = SUN3 ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5219 -ne `wc -c <'pvm2.4/src/SUN3/Makefile'`; then echo shar: \"'pvm2.4/src/SUN3/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/SUN3/Makefile' fi if test ! -d 'pvm2.4/src/SUN3_3_5' ; then echo shar: Creating directory \"'pvm2.4/src/SUN3_3_5'\" mkdir 'pvm2.4/src/SUN3_3_5' fi if test -f 'pvm2.4/src/SUN3_3_5/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/SUN3_3_5/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/SUN3_3_5/Makefile'\" \(5271 characters\) sed "s/^X//" >'pvm2.4/src/SUN3_3_5/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Sun 3/SunOS3.5 X# ARCH = SUN3_3_5 ARCHCFLAGS = -DSUNOS3PATCH -DFDSETPATCH -DNOSTRCASE ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5271 -ne `wc -c <'pvm2.4/src/SUN3_3_5/Makefile'`; then echo shar: \"'pvm2.4/src/SUN3_3_5/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/SUN3_3_5/Makefile' fi if test ! -d 'pvm2.4/src/SUN4' ; then echo shar: Creating directory \"'pvm2.4/src/SUN4'\" mkdir 'pvm2.4/src/SUN4' fi if test -f 'pvm2.4/src/SUN4/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/SUN4/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/SUN4/Makefile'\" \(5218 characters\) sed "s/^X//" >'pvm2.4/src/SUN4/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/SUN4 X# ARCH = SUN4 ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5218 -ne `wc -c <'pvm2.4/src/SUN4/Makefile'`; then echo shar: \"'pvm2.4/src/SUN4/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/SUN4/Makefile' fi if test ! -d 'pvm2.4/src/SYMM' ; then echo shar: Creating directory \"'pvm2.4/src/SYMM'\" mkdir 'pvm2.4/src/SYMM' fi if test -f 'pvm2.4/src/SYMM/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/SYMM/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/SYMM/Makefile'\" \(5230 characters\) sed "s/^X//" >'pvm2.4/src/SYMM/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Sequent Symmetry X# ARCH = SYMM ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5230 -ne `wc -c <'pvm2.4/src/SYMM/Makefile'`; then echo shar: \"'pvm2.4/src/SYMM/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/SYMM/Makefile' fi if test ! -d 'pvm2.4/src/TITN' ; then echo shar: Creating directory \"'pvm2.4/src/TITN'\" mkdir 'pvm2.4/src/TITN' fi if test -f 'pvm2.4/src/TITN/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/TITN/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/TITN/Makefile'\" \(5257 characters\) sed "s/^X//" >'pvm2.4/src/TITN/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Titan X# ARCH = TITN ARCHCFLAGS = -DSYSVSTRING -DSYSVSIGNAL -DNOUNIXSOC ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5257 -ne `wc -c <'pvm2.4/src/TITN/Makefile'`; then echo shar: \"'pvm2.4/src/TITN/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/TITN/Makefile' fi if test ! -d 'pvm2.4/src/UVAX' ; then echo shar: Creating directory \"'pvm2.4/src/UVAX'\" mkdir 'pvm2.4/src/UVAX' fi if test -f 'pvm2.4/src/UVAX/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/UVAX/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/UVAX/Makefile'\" \(5229 characters\) sed "s/^X//" >'pvm2.4/src/UVAX/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/Microvax-Ultrix X# ARCH = UVAX ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5229 -ne `wc -c <'pvm2.4/src/UVAX/Makefile'`; then echo shar: \"'pvm2.4/src/UVAX/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/UVAX/Makefile' fi if test ! -d 'pvm2.4/src/VCM2' ; then echo shar: Creating directory \"'pvm2.4/src/VCM2'\" mkdir 'pvm2.4/src/VCM2' fi if test -f 'pvm2.4/src/VCM2/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/VCM2/Makefile'\" else echo shar: Extracting \"'pvm2.4/src/VCM2/Makefile'\" \(5228 characters\) sed "s/^X//" >'pvm2.4/src/VCM2/Makefile' <<'END_OF_FILE' X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# X# Makefile for PVM/CM-2 Vax front X# ARCH = VCM2 ARCHCFLAGS = ARCHDLIBS = ARCHDOBJS = HASRANLIB = t X# END of custom section - leave this line here X# X# PVM 2.2 X# University of Tennesee, Knoxville, TN. X# Oak Ridge National Laboratory, Oak Ridge, TN. X# 21 Mar 1991 X# X# Makefile for PVM/Generic X# X# $Log: Makefile.generic,v $ X# Revision 1.11 1992/06/30 16:44:23 manchek X# added comments about defines X# X# Revision 1.10 1992/03/18 23:07:51 manchek X# added archequiv.c target, remade deps X# X# Revision 1.9 1992/01/01 00:10:02 manchek X# added micomm and uliberr to libpvm objects X# X# Revision 1.8 1991/11/27 21:08:22 manchek X# added NOGETDTABLESIZE comment X# X# Revision 1.7 1991/11/26 21:40:58 manchek X# moved start.c to startup.c because crays hate that name X# X# Revision 1.6 1991/11/26 21:22:04 manchek X# forced SHELL to /bin/sh X# X# Revision 1.5 1991/11/26 19:52:43 manchek X# set up so customizing stuff can be added to head of file X# X# Revision 1.4 1991/11/26 19:08:24 manchek X# added pvmd files start.c and host.c X# X# Revision 1.3 1991/07/24 17:27:36 manchek X# remade deps due to new files. X# X# Revision 1.2 1991/05/09 15:24:16 manchek X# added tidy target X# X# Revision 1.1 1991/05/06 14:45:09 manchek X# Initial revision X# X# X# This generic template imports: X# X# ARCH = the official pvm-name of your processor X# ARCHCFLAGS = special cc flags X# ARCHDLIBS = special libs needed for daemon X# ARCHDOBJS = special objects needed for daemon X# HASRANLIB = 't' or 'f' X# X# Define: X# DEBUG to get useful information X# FDSETPATCH if machine doesn't have fd_set stuff X# SUNOS3PATCH if running SunOS < 4.0 X# NOUNIXSOC if machine doesn't have unix-domain sockets X# NOSTRCASE if libc doesn't have strcasecmp, strncasecmp X# SYSVSIGNAL for system5-like signal handling X# SYSVSTRING for strchr() instead of index() X# NOGETDTABLESIZE if libc doesn't have getdtablesize() X# SOCKADHASLEN if struct sockaddr has an sa_len field X# SHELL = /bin/sh CC = cc SDIR = .. CFLAGS = -g -DARCHCLASS=\"$(ARCH)\" -DIMA_$(ARCH) $(ARCHCFLAGS) DOBJS = archequiv.o cmd.o host.o loclcomm.o micomm.o netside.o proc.o \ X pvmd.o startup.o uside.o util.o wait.o $(ARCHDOBJS) LOBJS = ulib.o crunch.o util.o loclcomm.o micomm.o uliberr.o X# all: pvmd libpvm.a X pvmd: $(DOBJS) X $(CC) $(CFLAGS) -o pvmd $(DOBJS) $(ARCHDLIBS) X libpvm.a: $(LOBJS) X rm -f libpvm.a X ar rv libpvm.a $(LOBJS) X case x$(HASRANLIB) in xt ) echo ranlib; ranlib libpvm.a ;; esac X clean: X rm -f $(DOBJS) $(LOBJS) pvmd libpvm.a X tidy: X rm -f $(DOBJS) $(LOBJS) X archequiv.o: $(SDIR)/archequiv.c X $(CC) $(CFLAGS) -c $(SDIR)/archequiv.c cmd.o: $(SDIR)/cmd.c X $(CC) $(CFLAGS) -c $(SDIR)/cmd.c crunch.o: $(SDIR)/crunch.c X $(CC) $(CFLAGS) -c $(SDIR)/crunch.c host.o: $(SDIR)/host.c X $(CC) $(CFLAGS) -c $(SDIR)/host.c loclcomm.o: $(SDIR)/loclcomm.c X $(CC) $(CFLAGS) -c $(SDIR)/loclcomm.c micomm.o: $(SDIR)/micomm.c X $(CC) $(CFLAGS) -c $(SDIR)/micomm.c netside.o: $(SDIR)/netside.c X $(CC) $(CFLAGS) -c $(SDIR)/netside.c proc.o: $(SDIR)/proc.c X $(CC) $(CFLAGS) -c $(SDIR)/proc.c pvmd.o: $(SDIR)/pvmd.c X $(CC) $(CFLAGS) -c $(SDIR)/pvmd.c ruserpass.o: $(SDIR)/ruserpass.c X $(CC) $(CFLAGS) -c $(SDIR)/ruserpass.c startup.o: $(SDIR)/startup.c X $(CC) $(CFLAGS) -c $(SDIR)/startup.c ulib.o: $(SDIR)/ulib.c X $(CC) $(CFLAGS) -c $(SDIR)/ulib.c uliberr.o: $(SDIR)/uliberr.c X $(CC) $(CFLAGS) -c $(SDIR)/uliberr.c uside.o: $(SDIR)/uside.c X $(CC) $(CFLAGS) -c $(SDIR)/uside.c util.o: $(SDIR)/util.c X $(CC) $(CFLAGS) -c $(SDIR)/util.c wait.o: $(SDIR)/wait.c X $(CC) $(CFLAGS) -c $(SDIR)/wait.c X X# X#include deps - generated by 'grep \#include.\*\" *.c' X# archequiv.o: $(SDIR)/global.h archequiv.o: $(SDIR)/pvmd.h crunch.o: $(SDIR)/global.h crunch.o: $(SDIR)/loclcomm.h crunch.o: $(SDIR)/pvmuser.h host.o: $(SDIR)/craypatch.h host.o: $(SDIR)/xenixpatch.h host.o: $(SDIR)/titanpatch.h host.o: $(SDIR)/global.h host.o: $(SDIR)/pvmd.h host.o: $(SDIR)/sunos3patch.h loclcomm.o: $(SDIR)/loclcomm.h micomm.o: $(SDIR)/micomm.h netside.o: $(SDIR)/global.h netside.o: $(SDIR)/pvmd.h netside.o: $(SDIR)/micomm.h netside.o: $(SDIR)/rem.h netside.o: $(SDIR)/proc.h netside.o: $(SDIR)/wait.h netside.o: $(SDIR)/loclcomm.h proc.o: $(SDIR)/global.h proc.o: $(SDIR)/proc.h proc.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/fdsetpatch.h pvmd.o: $(SDIR)/craypatch.h pvmd.o: $(SDIR)/xenixpatch.h pvmd.o: $(SDIR)/titanpatch.h pvmd.o: $(SDIR)/global.h pvmd.o: $(SDIR)/pvmd.h pvmd.o: $(SDIR)/micomm.h pvmd.o: $(SDIR)/rem.h pvmd.o: $(SDIR)/proc.h pvmd.o: $(SDIR)/wait.h pvmd.o: $(SDIR)/loclcomm.h pvmd.o: $(SDIR)/sunos3patch.h startup.o: $(SDIR)/fdsetpatch.h startup.o: $(SDIR)/craypatch.h startup.o: $(SDIR)/xenixpatch.h startup.o: $(SDIR)/titanpatch.h startup.o: $(SDIR)/global.h startup.o: $(SDIR)/pvmd.h startup.o: $(SDIR)/sunos3patch.h ulib.o: $(SDIR)/global.h ulib.o: $(SDIR)/loclcomm.h ulib.o: $(SDIR)/micomm.h ulib.o: $(SDIR)/pvmuser.h uside.o: $(SDIR)/global.h uside.o: $(SDIR)/pvmd.h uside.o: $(SDIR)/micomm.h uside.o: $(SDIR)/rem.h uside.o: $(SDIR)/proc.h uside.o: $(SDIR)/wait.h uside.o: $(SDIR)/loclcomm.h util.o: $(SDIR)/global.h wait.o: $(SDIR)/global.h wait.o: $(SDIR)/wait.h END_OF_FILE if test 5228 -ne `wc -c <'pvm2.4/src/VCM2/Makefile'`; then echo shar: \"'pvm2.4/src/VCM2/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/src/VCM2/Makefile' fi if test -f 'pvm2.4/src/cmd.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/cmd.c'\" else echo shar: Extracting \"'pvm2.4/src/cmd.c'\" \(5093 characters\) sed "s/^X//" >'pvm2.4/src/cmd.c' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Cmd.c X * X * Interactive command processor for Pvmd. X * X$Log: cmd.c,v $ X * Revision 1.9 1992/03/18 21:18:50 manchek X * messed with help text X * X * Revision 1.8 1992/01/30 20:15:00 manchek X * added -o to ps help text X * X * Revision 1.7 1992/01/30 19:01:09 manchek X * proc_cmd can have 1 arg now X * X * Revision 1.6 1992/01/07 01:28:47 manchek X * added to help strings X * X * Revision 1.5 1991/12/31 21:19:10 manchek X * added lines to help text X * X * Revision 1.4 1991/12/11 23:24:29 manchek X * don't prompt after cmd unless cmd_ready is true X * X * Revision 1.3 1991/06/25 02:05:21 manchek X * added 'barr' command. X * X * Revision 1.2 1991/05/29 21:53:36 manchek X * added reset command X * X * Revision 1.1 1991/05/06 14:42:16 manchek X * Initial revision X * X * X */ X X#include X#ifndef SYSVSTRING X#include X#else X#include X#endif X#include X X#define MAXARGS 10 X extern int cmd_ready; /* from pvmd.c */ X int barr_cmd(); int cfg_cmd(); int help(); int kill_cmd(); int proc_cmd(); int reset_cmd(); X quit_cmd() X{ X bailout(0); X} X struct cmdsw { X char *cmd; X int a1; X int a2; X int (*fun)(); X} commands[] = { X { "barr", 1, 1, barr_cmd }, X { "conf", 1, 1, cfg_cmd }, X { "help", 1, 2, help }, X { "kill", 3, 3, kill_cmd }, X { "ps", 1, 2, proc_cmd }, X { "quit", 1, 1, quit_cmd }, X { "reset", 1, 1, reset_cmd }, X { 0, 0, 0, 0 } X}; X static char *aliases[] = { X "?", "help", X "h", "help", X 0 X}; X cmd() X{ X int ac; X char *av[MAXARGS]; X struct cmdsw *csp; X char **p; X char buf[256]; X int n; X X if ((n = read(0, buf, sizeof(buf))) < 1) { X fputs("quit\n", stdout); X bailout(0); X } X buf[n] = 0; X ac = sizeof(av)/sizeof(av[0]); X if (acav(buf, &ac, av)) { X fputs("command too long\n", stdout); X goto done; X } X if (!ac) goto done; X for (p = aliases; *p; p += 2) X if (!strcasecmp(av[0], *p)) { X p++; X break; X } X if (!*p) X p = &av[0]; X for (csp = commands; csp->cmd; csp++) { X if (!strcasecmp(csp->cmd, *p)) { X if (ac >= csp->a1 && ac <= csp->a2) X (csp->fun)(ac, av); X else X fputs("incorrect arg count\n", stdout); X break; X } X } X if (!csp->cmd) X fputs("unknown command\n", stdout); done: X if (cmd_ready) X write(1, "pvmd, ", 6); X} X X/* acav() X* X* Parse a string into words separated by whitespace. X* Max number of words is original value of *acp. X* X* Trashes out the original string. X* Returns 0 with av[0]..av[*acp - 1] pointing to the words. X* Returns 1 if too many words. X*/ X int acav(s, acp, av) X char *s; /* the string to parse */ X int *acp; /* max words in, ac out */ X char **av; /* pointers to args */ X{ X register int ac; X register char *p = s; X register n = *acp; X X /* separate out words of command */ X X ac = 0; X while (*p) { X while (isspace(*p)) p++; X if (*p) { X if (ac >= n) { X /* command too long */ X *acp = ac; X return 1; X } X av[ac++] = p; X while (*p && !isspace(*p)) p++; X if (*p) *p++ = 0; X } X } X *acp = ac; X return 0; X} X X static char *helptx[] = { X "barr BARRIERS - Show active 'ready' and 'barrier' names", X "barr Syntax: barr", X X "conf CONFIGURATION - Show machine configuration", X "conf Syntax: conf", X "conf Fields are:", X "conf # - Index", X "conf HOST - Host name", X "conf ARCH - Host processor architecture", X "conf ADDR - Internet address", X "conf PORT - UDP port", X "conf MAXML - Max UDP message length", X X "help HELP - Print Helpful information about a command", X "help Syntax: help|h|? [command]", X "help Commands are:", X "help barr Show Barriers", X "help conf Show Machine Configuration", X "help help Help", X "help kill Kill Process", X "help ps Process Status", X "help quit Quit", X "help reset Reset Machine", X X "kill KILL - Terminate a process", X "kill Syntax: kill (name) (instance)", X X "ps PROCESS STATUS - Show active and exited processes", X "ps Syntax: ps [-o]", X "ps Options:", X "ps o - Previous Epoch", X "ps ", X "ps Fields are:", X "ps NAME - Process Name", X "ps INUM - Process Instance number", X "ps HOST - Host Executing", X "ps FLAGS - Process Status. One or more of:", X "ps r - Running", X "ps x - Exited", X "ps c - In pvmd call", X "ps mw - Wait for message", X "ps ww - Wait for waituntil", X "ps bw - Wait for barrier", X "ps e - Enrolled", X "ps d - Died", X "ps jd - Just died", X "ps vw - Wait for virtual ckt", X "ps ul - User lib version mismatch", X X "quit QUIT", X "quit Syntax: quit", X X "reset RESET - Terminate all running processes", X "reset Syntax: reset", X 0 X}; X X/* help() X* X* X*/ X help(ac, av) X int ac; X char **av; X{ X char **p; X char *topic; X int l; X X /* if not specified, topic = help */ X if (ac > 1) X topic = av[1]; X else X topic = "help"; X X for (p = aliases; *p; p += 2) X if (!strcasecmp(topic, *p)) { X topic = *++p; X break; X } X l = strlen(topic); X X /* search through messages for ones matching topic */ X for (p = helptx; *p; p++) { X if (!strncasecmp(topic, *p, l) && (*p)[l] == ' ') X printf("%s\n", (*p) + l + 1); X } X return; X} X END_OF_FILE if test 5093 -ne `wc -c <'pvm2.4/src/cmd.c'`; then echo shar: \"'pvm2.4/src/cmd.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/cmd.c' fi if test -f 'pvm2.4/src/archequiv.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/archequiv.c'\" else echo shar: Extracting \"'pvm2.4/src/archequiv.c'\" \(3190 characters\) sed "s/^X//" >'pvm2.4/src/archequiv.c' <<'END_OF_FILE' X/* X * PVM 2.4 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 18 Mar 1992 X * X * archequiv.c X * X * Machine architecture classification. X * This file was archequiv.h, but needed a better interface. X * X$Log: archequiv.c,v $ X * Revision 1.10 1992/12/22 16:30:43 manchek X * moved C2MP to class 1, added C2MPCXFP X * X * Revision 1.9 1992/12/17 16:38:14 manchek X * added CRAYSMP X * X * Revision 1.8 1992/12/17 02:21:58 manchek X * added RT to IEEE class X * X * Revision 1.7 1992/12/15 22:43:22 manchek X * added ALPHA X * X * Revision 1.6 1992/08/12 14:38:29 manchek X * added DGAV arch X * X * Revision 1.5 1992/06/29 18:32:22 manchek X * added I386 X * X * Revision 1.4 1992/05/31 22:19:05 manchek X * added KSR1 X * X * Revision 1.3 1992/05/28 16:30:33 manchek X * readded VCM2, CM-2 with Vax front X * X * Revision 1.2 1992/05/28 16:26:45 manchek X * added CM5. moved CM2 to IEEE group. X * X * Revision 1.1 1992/03/18 19:02:12 manchek X * Initial revision X * X * X */ X X#include X#ifndef IMA_TITN X#include X#else X#include X#endif X#include X#include X#include X#ifndef NOUNIXSOC X#include X#endif X#include X#include X#ifndef SYSVSTRING X#include X#else X#include X#endif X#include "global.h" X#include "pvmd.h" X extern char *sstring(); X extern int nhosts, narchs; /* from pvmd.c */ extern pvmhost *hosts; /* from pvmd.c */ X struct archtypes { X char *archname; X int archnum; X}; X struct nl { X char *nl_name; X int nl_num; X struct nl *nl_next; X}; X X/********** X* Globals * X* * X**********/ X static struct nl *morearches = 0; static int lastarch = 0; X X/* This array groups machine types by data-representation compatibility X* i.e. machines that are integer, floating-point binary compatible X* should be in the same class number. X* X* The numbers are also used in process-process messages to identify X* the data encoding used. Stay away from 0, using it for XDR. X*/ X static struct archtypes arches[] = { X {"SUN4", 1}, {"RIOS", 1}, {"SUN3", 1}, {"NEXT", 1}, {"SGI", 1}, X {"HP9K", 1}, {"CM2", 1}, {"CM5", 1}, {"DGAV", 1}, {"RT", 1}, X {"CRAYSMP", 1}, {"C2MP", 1}, X {"IPSC", 2}, X {"I860", 3}, X {"PMAX", 4}, X {"I386", 5}, {"SYMM", 5}, X {"TITN", 6}, X {"UVAX", 7}, X {"CRAY", 8}, X {"BFLY", 9}, X {"VCM2", 10}, X {"AFX8", 11}, X {"C2MPCXFP", 12}, X {"KSR1", 13}, X {"ALPHA", 14}, X {"", 0} X}; X X/* getarchcode() X* X* Look up the integer code for a architecture string. Make up X* one if necessary and cache it. X*/ X int getarchcode(arch) X char *arch; X{ X int i; X struct nl *nlp; X X for (i = 0; arches[i].archnum; i++) X if (!strcmp(arch, arches[i].archname)) X return arches[i].archnum; X X for (nlp = morearches; nlp; nlp = nlp->nl_next) X if (!strcmp(arch, nlp->nl_name)) X return nlp->nl_num; X X if (!morearches) X for (i = 0; arches[i].archnum; i++) X lastarch = max(lastarch, arches[i].archnum); X X fprintf(stderr, "getarchcode: Warning - unknown arch %s\n", arch); X nlp = tmalloc(1, struct nl); X nlp->nl_name = sstring(arch); X nlp->nl_num = ++lastarch; X nlp->nl_next = morearches; X morearches = nlp; X return nlp->nl_num; X} X END_OF_FILE if test 3190 -ne `wc -c <'pvm2.4/src/archequiv.c'`; then echo shar: \"'pvm2.4/src/archequiv.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/archequiv.c' fi if test -f 'pvm2.4/src/craypatch.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/craypatch.h'\" else echo shar: Extracting \"'pvm2.4/src/craypatch.h'\" \(44 characters\) sed "s/^X//" >'pvm2.4/src/craypatch.h' <<'END_OF_FILE' X#define MAXPATHLEN CANBSIZ X char *index(); X END_OF_FILE if test 44 -ne `wc -c <'pvm2.4/src/craypatch.h'`; then echo shar: \"'pvm2.4/src/craypatch.h'\" unpacked with wrong size! fi # end of 'pvm2.4/src/craypatch.h' fi if test -f 'pvm2.4/src/crunch.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/crunch.c'\" else echo shar: Extracting \"'pvm2.4/src/crunch.c'\" \(13793 characters\) sed "s/^X//" >'pvm2.4/src/crunch.c' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Crunch.c X * X * Crunching of machine-independant primitive objects. X * X$Log: crunch.c,v $ X * Revision 1.14 1992/12/23 02:44:22 manchek X * moved stdio again X * X * Revision 1.13 1992/12/23 01:48:44 manchek X * moved stdio include X * X * Revision 1.12 1992/12/15 23:01:46 manchek X * vicious hack to putndfloat and getndfloat because xdr_double doesn't X * seem to work yet on ALPHA X * X * Revision 1.11 1992/07/01 19:13:50 manchek X * moved sys/param.h include above xdr includes. X * added fake xdr_float and xdr_double routines for I386 X * X * Revision 1.10 1992/03/18 19:11:38 manchek X * added globals icdataconv and ogdataconv, set by new function X * pvm_inithow() that determine how put and get functions pack data. X * X * Revision 1.9 1992/01/24 22:24:14 manchek X * converted error returns to use pvm_uerr() to optionally print message X * X * Revision 1.8 1992/01/24 18:42:42 manchek X * forgot to return 0 in putstring and getstring X * X * Revision 1.7 1992/01/22 00:52:52 manchek X * changed initsend to void X * X * Revision 1.6 1991/12/31 21:46:12 manchek X * converted to new error codes X * X * Revision 1.5 1991/12/09 17:41:39 manchek X * cleaned up commented-out trash X * X * Revision 1.4 1991/11/27 20:28:54 manchek X * switch to instrumented malloc defines X * X * Revision 1.3 1991/07/31 17:31:01 manchek X * changed MAXXMLEN to a variable, now import frgdlen from ulib.c X * this is for message length negotiation X * X * Revision 1.2 1991/07/24 16:39:16 manchek X * imports global `dorawdata' from ulib.c and conditionally does not X * use XDR to pack message data. X * cleaned up global defs. X * X * Revision 1.1 1991/05/06 14:43:32 manchek X * Initial revision X * X * X */ X X#include X#include X#include X#include X#include X#include "global.h" X#include "loclcomm.h" X#include "pvmuser.h" X extern int dorawdata; /* from ulib.c */ extern int maxxmlen; /* from ulib.c */ extern int frgdlen; /* from ulib.c */ extern int pvm_errno; /* from uliberr.c */ X X X/********** X* Globals * X* * X**********/ X frag *ogchain = 0; /* og msg frag list */ frag *ogcur = 0; /* og msg current frag */ XXDR ogxdr; /* og msg current xdr state */ int ogdataconv = PVM_XDR; /* og data conversion type */ frag *icchain = 0; /* last rx msg frag list */ frag *iccur = 0; /* last rx msg current frag */ XXDR icxdr; /* last rx msg current xdr state */ int icdataconv = PVM_XDR; /* last rx msg data conv type */ X X X/*************** X* internal use * X* * X***************/ X freefrags(f) X frag *f; X{ X frag *nf; X X while (f) { X if (f->fr_data) X m_free(f->fr_data); X nf = f->fr_next; X m_free(f); X f = nf; X } X} X X/* moresnd() X* X* allocate and init a new outgoing fragment, and tack it onto ogchain X*/ X static int moresnd() X{ X frag *newfr; X X if (!(newfr = tmalloc(1, frag)) X || !(newfr->fr_data = tmalloc(maxxmlen, char))) { X return 0; X } X newfr->fr_next = 0; X if (ogcur) X ogcur->fr_length = xdr_getpos(&ogxdr); X xdrmem_create(&ogxdr, newfr->fr_data + FRHDLEN, frgdlen, XDR_ENCODE); X newfr->fr_length = 0; X if (ogcur) X ogcur->fr_next = newfr; X else X ogchain = newfr; X ogcur = newfr; X return 1; X} X X/* steprcv() X* X* move to the next fragment in the incoming frag chain. X*/ X static int steprcv() X{ X if (!(iccur = iccur->fr_next)) X return 0; X xdrmem_create(&icxdr, iccur->fr_data, iccur->fr_length, XDR_DECODE); X return 1; X} X X/* bytepack() X* X* Insert a stream of bytes into xdr data. Use multiple fragments X* if necessary. Round length to multiple of 4 bytes and set X* the xdr position. X*/ X static int bytepack(cp, len) X char *cp; X int len; X{ X int done = 0; X int u; X int togo = len; X int n; X X while (done < len) { X u = xdr_getpos(&ogxdr); X if (u + togo <= frgdlen) { X bcopy(&cp[done], &(ogcur->fr_data[FRHDLEN + u]), togo); X togo = (togo + 3) & ~3; X xdr_setpos(&ogxdr, u + togo); X break; X } else { X if ((n = frgdlen - u) > 0) { X bcopy(&cp[done], &(ogcur->fr_data[FRHDLEN + u]), n); X done += n; X togo -= n; X xdr_setpos(&ogxdr, u + n); X } X if (!moresnd()) X return 0; X } X } X return 1; X} X X/* byteunpk() X* X* Unpack a stream of bytes from xdr data. Copy at most (max) X* bytes to cp[], but move the xdr position ahead by (len). X* --> max MUST be <= len. X*/ X static int byteunpk(cp, max, len) X char *cp; X int max; X int len; X{ X int done = 0; X int togo = max; X int u; X int n; X X while (done < max) { X u = xdr_getpos(&icxdr); X if (u + togo <= iccur->fr_length) { X bcopy(&(iccur->fr_data[u]), &cp[done], togo); X togo = (togo + 3) & ~3; X xdr_setpos(&icxdr, u + togo); X done = max; X togo = 0; X } else { X if ((n = iccur->fr_length - u) > 0) { X bcopy(&(iccur->fr_data[u]), &cp[done], n); X done += n; X togo -= n; X } X if (!steprcv()) X return 0; X } X } X len = (len + 3) & ~3; X len -= (max + 3) & ~3; X while (len > 0) { X u = xdr_getpos(&icxdr); X if (u + len <= iccur->fr_length) { X xdr_setpos(&icxdr, u + len); X break; X } else { X n = iccur->fr_length - u; X len -= n; X if (!steprcv()) X return 0; X } X } X return 1; X} X X/**************************************************** X* ckogm() and loopback() are for testing purposes * X* * X****************************************************/ X static hdump(p, n) X char *p; X int n; X{ X int i; X for (i = 0; i < n; i++) X fprintf(stderr, "%02x%s", 0xff & (int)p[i], X (i < n - 1) ? (((i & 15) == 15) ? "\n" : " ") : "\n"); X} X ckogm() X{ X frag *fp; X int i = 0; X X fputs("ckogm:\n", stderr); X if (ogcur) X ogcur->fr_length = xdr_getpos(&ogxdr); X for (fp = ogchain; fp; fp = fp->fr_next) { X fprintf(stderr, "frag #%d len %d:\n", ++i, fp->fr_length); X hdump(fp->fr_data + FRHDLEN, fp->fr_length); X } X} X loopback() X{ X frag *fp1, *fp2, **fp2a; X X freefrags(icchain); X if (ogcur) X ogcur->fr_length = xdr_getpos(&ogxdr); X X fp2a = &icchain; X for (fp1 = ogchain; fp1; fp1 = fp1->fr_next) { X fp2 = tmalloc(1, frag); X fp2->fr_length = fp1->fr_length; X fp2->fr_data = tmalloc(fp2->fr_length, char); X bcopy(fp1->fr_data + FRHDLEN, fp2->fr_data, fp2->fr_length); X fp2->fr_next = 0; X *fp2a = fp2; X fp2a = &(fp2->fr_next); X } X iccur = icchain; X xdrmem_create(&icxdr, iccur->fr_data, iccur->fr_length, X XDR_DECODE); X freefrags(ogchain); X ogcur = ogchain = 0; X} X X/************************* X* user library functions * X* * X*************************/ X int pvm_inithow(how) X int how; X{ X switch (how) { X case PvmDataDefault: X ogdataconv = dorawdata ? PVM_RAW : PVM_XDR; X break; X X case PvmDataRaw: X ogdataconv = PVM_RAW; X break; X X default: X return pvm_uerr("pvm_inithow", PvmBadParam); X } X freefrags(ogchain); X ogcur = ogchain = 0; X return 0; X} X void initsend() X{ X (void)pvm_inithow(PvmDataDefault); X} X int putnint(np, cnt) X int *np; X int cnt; X{ X if (!ogcur && !moresnd()) X return pvm_uerr("putnint", PvmNoMem); X switch (ogdataconv) { X case PVM_RAW: X bytepack((char*)np, cnt * sizeof(int)); X break; X X case PVM_XDR: X for (; cnt-- > 0; np++) X if (!xdr_int(&ogxdr, np) X && (!moresnd() || !xdr_int(&ogxdr, np))) X return pvm_uerr("putnint", PvmNoMem); X break; X X default: X return pvm_uerr("putnint", PvmSysErr); X } X return 0; X} X int getnint(np, cnt) X int *np; X int cnt; X{ X if (!iccur) X return pvm_uerr("getnint", PvmNoData); X switch (icdataconv) { X case PVM_RAW: X return byteunpk((char*)np, cnt * sizeof(int), cnt * sizeof(int)) X ? 0 : pvm_uerr("getnint", PvmNoData); X X case PVM_XDR: X for (; cnt-- > 0; np++) X if (!xdr_int(&icxdr, np) X && (!steprcv() || !xdr_int(&icxdr, np))) X return pvm_uerr("getnint", PvmNoData); X break; X X default: X return pvm_uerr("getnint", PvmSysErr); X } X return 0; X} X int putnshort(np, cnt) X short *np; X int cnt; X{ X if (!ogcur && !moresnd()) X return pvm_uerr("putnshort", PvmNoMem); X switch (ogdataconv) { X case PVM_RAW: X bytepack((char*)np, cnt * sizeof(short)); X break; X case PVM_XDR: X for (; cnt-- > 0; np++) X if (!xdr_short(&ogxdr, np) X && (!moresnd() || !xdr_short(&ogxdr, np))) X return pvm_uerr("putnshort", PvmNoMem); X break; X X default: X return pvm_uerr("putnshort", PvmSysErr); X } X return 0; X} X int getnshort(np, cnt) X short *np; X int cnt; X{ X if (!iccur) X return pvm_uerr("getnshort", PvmNoData); X switch (icdataconv) { X case PVM_RAW: X return byteunpk((char*)np, cnt * sizeof(short), X cnt * sizeof(short)) X ? 0 : pvm_uerr("getnshort", PvmNoData); X X case PVM_XDR: X for (; cnt-- > 0; np++) X if (!xdr_short(&icxdr, np) X && (!steprcv() || !xdr_short(&icxdr, np))) X return pvm_uerr("getnshort", PvmNoData); X break; X X default: X return pvm_uerr("getnshort", PvmSysErr); X } X return 0; X} X int putnlong(np, cnt) X long *np; X int cnt; X{ X if (!ogcur && !moresnd()) X return pvm_uerr("putnlong", PvmNoMem); X switch (ogdataconv) { X case PVM_RAW: X bytepack((char*)np, cnt * sizeof(long)); X break; X X case PVM_XDR: X for (; cnt-- > 0; np++) X if (!xdr_long(&ogxdr, np) X && (!moresnd() || !xdr_long(&ogxdr, np))) X return pvm_uerr("putnlong", PvmNoMem); X break; X X default: X return pvm_uerr("putnlong", PvmSysErr); X } X return 0; X} X int getnlong(np, cnt) X long *np; X int cnt; X{ X if (!iccur) X return pvm_uerr("getnlong", PvmNoData); X switch (icdataconv) { X case PVM_RAW: X return byteunpk((char*)np, cnt * sizeof(long), X cnt * sizeof(long)) X ? 0 : pvm_uerr("getnlong", PvmNoData); X X case PVM_XDR: X for (; cnt-- > 0; np++) X if (!xdr_long(&icxdr, np) X && (!steprcv() || !xdr_long(&icxdr, np))) X return pvm_uerr("getnlong", PvmNoData); X break; X X default: X return pvm_uerr("getnlong", PvmSysErr); X } X return 0; X} X X#ifdef IMA_I386 X int xdr_float(xdrp, fp) X XDR *xdrp; X float *fp; X{ X return xdr_long(xdrp, (long*)fp); X} X int xdr_double(xdrp, dp) X XDR *xdrp; X double *dp; X{ X return xdr_long(xdrp, (long*)dp + 1) X && xdr_long(xdrp, (long*)dp); X} X X#endif/*IMA_I386*/ X int putnfloat(fp, cnt) X float *fp; X int cnt; X{ X if (!ogcur && !moresnd()) X return pvm_uerr("putnfloat", PvmNoMem); X switch (ogdataconv) { X case PVM_RAW: X bytepack((char*)fp, cnt * sizeof(float)); X break; X X case PVM_XDR: X for (; cnt-- > 0; fp++) X if (!xdr_float(&ogxdr, fp) X && (!moresnd() || !xdr_float(&ogxdr, fp))) X return pvm_uerr("putnfloat", PvmNoMem); X break; X X default: X return pvm_uerr("putnfloat", PvmSysErr); X } X return 0; X} X X int getnfloat(fp, cnt) X float *fp; X int cnt; X{ X if (!iccur) X return pvm_uerr("getnfloat", PvmNoData); X switch (icdataconv) { X case PVM_RAW: X return byteunpk((char*)fp, cnt * sizeof(float), X cnt * sizeof(float)) X ? 0 : pvm_uerr("getnfloat", PvmNoData); X X case PVM_XDR: X for (; cnt-- > 0; fp++) X if (!xdr_float(&icxdr, fp) X && (!steprcv() || !xdr_float(&icxdr, fp))) X return pvm_uerr("getnfloat", PvmNoData); X break; X X default: X return pvm_uerr("getnfloat", PvmSysErr); X } X return 0; X} X X int putndfloat(dp, cnt) X double *dp; X int cnt; X{ X if (!ogcur && !moresnd()) X return pvm_uerr("putndfloat", PvmNoMem); X switch (ogdataconv) { X case PVM_RAW: X bytepack((char*)dp, cnt * sizeof(double)); X break; X X case PVM_XDR: X for (; cnt-- > 0; dp++) X#ifdef IMA_ALPHA /* XXX aargh, rip this out if you find it */ X { X if (!xdr_int(&ogxdr, (int*)dp + 1) X && (!moresnd() || !xdr_int(&ogxdr, (int*)dp + 1))) X return pvm_uerr("putndfloat", PvmNoMem); X if (!xdr_int(&ogxdr, (int*)dp) X && (!moresnd() || !xdr_int(&ogxdr, (int*)dp))) X return pvm_uerr("putndfloat", PvmNoMem); X } X#else X if (!xdr_double(&ogxdr, dp) X && (!moresnd() || !xdr_double(&ogxdr, dp))) X return pvm_uerr("putndfloat", PvmNoMem); X#endif X break; X X default: X return pvm_uerr("putndfloat", PvmSysErr); X } X return 0; X} X X int getndfloat(dp, cnt) X double *dp; X int cnt; X{ X if (!iccur) X return pvm_uerr("getndfloat", PvmNoData); X switch (icdataconv) { X case PVM_RAW: X return byteunpk((char*)dp, cnt * sizeof(double), X cnt * sizeof(double)) X ? 0 : pvm_uerr("getndfloat", PvmNoData); X X case PVM_XDR: X for (; cnt-- > 0; dp++) X#ifdef IMA_ALPHA /* XXX aargh, rip this out if you find it */ X { X if (!xdr_int(&icxdr, (int*)dp + 1) X && (!steprcv() || !xdr_int(&icxdr, (int*)dp + 1))) X return pvm_uerr("getndfloat", PvmNoData); X if (!xdr_int(&icxdr, (int*)dp) X && (!steprcv() || !xdr_int(&icxdr, (int*)dp))) X return pvm_uerr("getndfloat", PvmNoData); X } X#else X if (!xdr_double(&icxdr, dp) X && (!steprcv() || !xdr_double(&icxdr, dp))) X return pvm_uerr("getndfloat", PvmNoData); X#endif X break; X X default: X return pvm_uerr("getndfloat", PvmSysErr); X } X return 0; X} X int putncplx(xp, cnt) X float *xp; X int cnt; X{ X if (cnt > 0) X return putnfloat(xp, cnt * 2); X return 0; X} X int getncplx(xp, cnt) X float *xp; X int cnt; X{ X if (cnt > 0) X return getnfloat(xp, cnt * 2); X return 0; X} X int putndcplx(zp, cnt) X double *zp; X int cnt; X{ X if (cnt > 0) X return putndfloat(zp, cnt * 2); X return 0; X} X int getndcplx(zp, cnt) X double *zp; X int cnt; X{ X if (cnt > 0) X return getndfloat(zp, cnt * 2); X return 0; X} X int putbytes(cp, len) X char *cp; X int len; X{ X if (len < 0) X return pvm_uerr("putbytes", PvmBadParam); X if (putnint(&len, 1)) X return pvm_uerr("putbytes", PvmNoMem); X return bytepack(cp, len) ? 0 : pvm_uerr("putbytes", PvmNoMem); X} X int getbytes(cp, len) X char *cp; X int len; X{ X int aclen; X X if (getnint(&aclen, 1) || aclen < 0) X return pvm_uerr("getbytes", PvmNoData); X return byteunpk(cp, (len < aclen ? len : aclen), aclen) X ? 0 : pvm_uerr("getbytes", PvmNoData); X} X int putstring(cp) X char *cp; X{ X int len = strlen(cp) + 1; X X if (putnint(&len, 1) || !bytepack(cp, len)) X return pvm_uerr("putstring", PvmNoMem); X return 0; X} X int getstring(cp) X char *cp; X{ X int aclen; X X if (getnint(&aclen, 1) || aclen < 0 || !byteunpk(cp, aclen, aclen)) X return pvm_uerr("getstring", PvmNoData); X return 0; X} X END_OF_FILE if test 13793 -ne `wc -c <'pvm2.4/src/crunch.c'`; then echo shar: \"'pvm2.4/src/crunch.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/crunch.c' fi if test -f 'pvm2.4/src/fdsetpatch.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/fdsetpatch.h'\" else echo shar: Extracting \"'pvm2.4/src/fdsetpatch.h'\" \(599 characters\) sed "s/^X//" >'pvm2.4/src/fdsetpatch.h' <<'END_OF_FILE' X/* X * fdsetpatch.h X * X * use this whenever fd_set stuff doesn't exist. X */ X X#ifdef FDSETPATCH X X#ifndef NBBY X#define NBBY 8 X#endif NBBY X X#ifndef FD_SETSIZE X#define FD_SETSIZE (sizeof(fd_set) * 8) X#endif FD_SETSIZE X X#ifndef FD_SET X#define FD_SET(n,p) ((p)->fds_bits[(n)/8] |= (1 << ((n) & 7))) X#endif FD_SET X X#ifndef FD_CLR X#define FD_CLR(n,p) ((p)->fds_bits[(n)/8] &= ~(1 << ((n) & 7))) X#endif FD_CLR X X#ifndef FD_ISSET X#define FD_ISSET(n,p) ((p)->fds_bits[(n)/8] & (1 << ((n) & 7))) X#endif FD_ISSET X X#ifndef FD_ZERO X#define FD_ZERO(p) bzero((char*)p, sizeof(*(p))) X#endif FD_ZERO X X#endif FDSETPATCH X END_OF_FILE if test 599 -ne `wc -c <'pvm2.4/src/fdsetpatch.h'`; then echo shar: \"'pvm2.4/src/fdsetpatch.h'\" unpacked with wrong size! fi # end of 'pvm2.4/src/fdsetpatch.h' fi if test -f 'pvm2.4/src/global.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/global.h'\" else echo shar: Extracting \"'pvm2.4/src/global.h'\" \(2008 characters\) sed "s/^X//" >'pvm2.4/src/global.h' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * global.h X * X * Generic includes for PVM X * X$Log: global.h,v $ X * Revision 1.14 1992/12/23 00:03:16 manchek X * proc-pvmd protocol changes, so version changes X * X * Revision 1.13 1992/12/15 22:33:48 manchek X * added real version - not used for protocol compat X * X * Revision 1.12 1992/05/31 21:02:43 manchek X * changed version, added define for trealloc X * X * Revision 1.11 1992/01/07 01:29:24 manchek X * added user lib version string X * X * Revision 1.10 1992/01/01 00:14:30 manchek X * version change to 2.4.0 X * X * Revision 1.9 1991/11/27 20:22:44 manchek X * oops, forgot one X * X * Revision 1.8 1991/11/27 20:21:02 manchek X * added m_* defines for malloc, free, ... to allow instrumenting X * X * Revision 1.7 1991/11/26 19:09:33 manchek X * added MAXXMLEN def for crays X * X * X */ X X#define m_malloc(n) malloc(n) X#define m_free(p) free(p) X#define m_realloc(p,n) realloc(p,n) X X#define tmalloc(n,t) (t*)m_malloc((unsigned)((n)*sizeof(t))) X#define trealloc(p,n,t) (t*)m_realloc(p,(unsigned)((n)*sizeof(t))) X X/* DEFMAXXMLEN should be set to the largest UDP message length X your system can handle. */ X X#ifdef IMA_SGI X#define DEFMAXXMLEN 1024 X#endif X#ifdef IMA_SUN_3_3_5 X#define DEFMAXXMLEN 2048 X#endif X#ifdef IMA_CRAY X#include X#define DEFMAXXMLEN UDPSENDSPACE X#endif X X#ifndef DEFMAXXMLEN X#define DEFMAXXMLEN 4096 /* generic max message length */ X#endif X X#define LASTPORT 30000 /* last inet port number to try binding to */ X X/* used for protocol compatibility */ X X#ifndef PVM_VERSION X#define PVM_VERSION "2.4.1" /* check for match during connection */ X /* set this so incompatible pvmds */ X /* won't try to work together */ X#endif X X#ifndef PVM_UVERS X#define PVM_UVERS "u2.4.2" /* this is for pvmd<->ulib */ X#endif X X#ifndef PVM_RELVERSION X#define PVM_RELVERSION "2.4.2" X#endif X X#ifndef PVM_RELUVERS X#define PVM_RELUVERS "u2.4.2" X#endif X END_OF_FILE if test 2008 -ne `wc -c <'pvm2.4/src/global.h'`; then echo shar: \"'pvm2.4/src/global.h'\" unpacked with wrong size! fi # end of 'pvm2.4/src/global.h' fi if test -f 'pvm2.4/src/host.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/host.c'\" else echo shar: Extracting \"'pvm2.4/src/host.c'\" \(8720 characters\) sed "s/^X//" >'pvm2.4/src/host.c' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Host.c X * X * Host-file and host-table stuff. X * X$Log: host.c,v $ X * Revision 1.13 1992/12/16 07:05:05 manchek X * decrufted somewhat X * X * Revision 1.12 1992/12/16 06:29:06 manchek X * added a few casts for retentiveness X * X * Revision 1.11 1992/06/29 18:30:13 manchek X * fixed iflist() to work with variable size struct ifreq and non-AF_INET X * entries X * X * Revision 1.10 1992/06/03 18:57:38 manchek X * need to include sys/time.h X * X * Revision 1.9 1992/05/28 18:00:04 manchek X * Added TITN ifdefs X * X * Revision 1.8 1992/05/21 17:56:00 manchek X * added iflist() to get host's interfaces. X * readhosts() now uses interface addresses instead of gethostbyname() X * X * Revision 1.7 1992/05/05 17:38:09 manchek X * aargh, really fixed ep= this time X * X * Revision 1.6 1992/05/05 17:26:23 manchek X * forgot to copy epath from default settings to host entry X * X * Revision 1.5 1992/01/20 18:57:46 manchek X * accepts 'ep=' field in hostfile to set h_epath X * X * Revision 1.4 1992/01/17 18:34:25 manchek X * sets h_fname field to first element of hostname X * X * Revision 1.3 1991/11/27 20:30:46 manchek X * switch to instrumented malloc defines X * X * Revision 1.2 1991/11/27 20:08:10 manchek X * improved hostfile checking: X * - flags repeated entries for a host X * - complains if master host missing X * - master host can be anywhere in file. X * - uses hostname '*' to set defaults for options X * X * Revision 1.1 1991/11/26 19:07:54 manchek X * Initial revision X * X * X */ X X#include X#ifndef IMA_TITN X#include X#include X#else X#include X#include X#endif X#include X#include X#include X#include X#include X#include X#include X#ifndef SYSVSTRING X#include X#define CINDEX(s,c) index(s,c) X#else X#include X#define CINDEX(s,c) strchr(s,c) X#endif X#include X#ifdef IMA_CRAY X#include "craypatch.h" X#endif X#if defined(IMA_I860) || defined(IMA_IPSC) X#include "xenixpatch.h" X#endif X#ifdef IMA_TITN X#include "titanpatch.h" X#endif X#include "global.h" X#include "pvmd.h" X#ifdef SUNOS3PATCH X#include "sunos3patch.h" X#endif X X#ifdef SOCKADHASLEN X#define SIZ(p) max(sizeof(p), (p).sa_len) X#else X#define SIZ(p) sizeof(p) X#endif X extern char *sstring(); X extern int errno; extern pvmhost *hosts; /* from pvmd.c */ extern int nhosts; /* from pvmd.c */ extern int htlen; /* from pvmd.c */ X X X/* iflist() X* X* Return list of addresses for active network interfaces. X*/ X int iflist(alp, np) X struct in_addr **alp; /* return list of addresses */ X int *np; /* return len of alp */ X{ X int soc = -1; /* socket */ X static struct in_addr *iplist = 0; /* list of interface addrs found */ X int nip = 0; /* length of iplist */ X char buf[4096]; /* return space for SIOCGIOCONF */ X struct ifconf sif; X struct ifreq *reqp; X struct ifreq req; X char *cp; X X if (iplist) X free(iplist); X iplist = tmalloc(10, struct in_addr); X X if ((soc = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { X perror("socket"); X goto bail; X } X X sif.ifc_ifcu.ifcu_buf = buf; X sif.ifc_len = sizeof(buf); X if (ioctl(soc, SIOCGIFCONF, &sif) == -1) { X perror("ioctl"); X goto bail; X } X X for (cp = sif.ifc_ifcu.ifcu_buf; X cp - sif.ifc_ifcu.ifcu_buf < sif.ifc_len; X cp += sizeof(*reqp) - sizeof(struct sockaddr) + SIZ(reqp->ifr_addr)) X { X reqp = (struct ifreq*)cp; X if (reqp->ifr_addr.sa_family != AF_INET) X continue; X bcopy(reqp->ifr_name, req.ifr_name, sizeof(req.ifr_name)); X if (ioctl(soc, SIOCGIFFLAGS, &req) == -1) { X perror("ioctl"); X goto bail; X } X if (IFF_UP & req.ifr_ifru.ifru_flags) { X if (nip > 0 && !(nip % 10)) X iplist = trealloc(iplist, (nip + 10), struct in_addr); X iplist[nip++] = X ((struct sockaddr_in*)(&reqp->ifr_ifru.ifru_addr))->sin_addr; X } X } X X *alp = iplist; X *np = nip; X return 0; X bail: X (void)close(soc); X return -1; X} X X/* readhosts() X* X* We are the master pvmd. Read host file and set up table. X*/ X readhosts(name) X char *name; X{ X FILE *ff; X char lbuf[1024]; X int err = 0; X int oerr; X char *p; X int lnum = 0; X struct hostent *he; X char *av[16]; /* words of hostfile line */ X int ac; /* word count of hostfile line */ X struct in_addr *my_in_addrs; X int num_addrs; X struct pvmhost defaults; X struct pvmhost newhost; X int i; X X if (iflist(&my_in_addrs, &num_addrs) == -1 || num_addrs < 1) { X fprintf(stderr, "readhosts: iflist failed\n"); X exit(1); X } X X bzero((char*)&defaults, sizeof(defaults)); X defaults.h_adres.sin_family = AF_INET; X X /* reserve the first slot in the host table for the localhost */ X X hosts[0].h_name = NULL; X X if (!(ff = fopen(name, "r"))) { X fprintf(stderr, "%s: can't read\n", name); X exit(1); X } X while (fgets(lbuf, sizeof(lbuf), ff)) { X lnum++; X for (p = lbuf; *p && isspace(*p); p++); X if (!*p || *p == '#') /* skip comments */ X continue; X X ac = sizeof(av)/sizeof(av[0]); X if (acav(p, &ac, av)) { X fprintf(stderr, "line %d: line too long.\n", lnum); X err++; X continue; X } X X if (nhosts >= htlen) X hosts = trealloc(hosts, (htlen += 10), struct pvmhost); X X bzero((char*)&newhost, sizeof(newhost)); X newhost.h_adres.sin_family = AF_INET; X X oerr = 0; X while (--ac > 0) { X if (!strcmp(av[ac], "pw")) { X newhost.h_flags |= H_ASK_PW; X continue; X } X if (!strncmp(av[ac], "lo=", 3)) { X newhost.h_login = sstring(av[ac] + 3); X continue; X } X if (!strncmp(av[ac], "dx=", 3)) { X newhost.h_daemon = sstring(av[ac] + 3); X continue; X } X if (!strncmp(av[ac], "ep=", 3)) { X newhost.h_epath = sstring(av[ac] + 3); X continue; X } X fprintf(stderr, "line %d: unknown option \"%s\".\n", X lnum, av[ac]); X err++; X oerr++; X } X if (oerr) X continue; X X /* X * if host == "*", change the default options X * instead of adding a new host to the list X */ X X if (strcmp(av[0], "*") == 0) { X defaults.h_flags = newhost.h_flags; X defaults.h_login = newhost.h_login; X defaults.h_daemon = newhost.h_daemon; X defaults.h_epath = newhost.h_epath; X continue; X } X X /* Set unspecified newhost fields to default ones. X XXX Note this leaves the potential disaster of having X multiply referenced space, i.e. the loginnames. X Also, it's a possible memory leak. */ X X if (!(newhost.h_flags & H_ASK_PW)) X newhost.h_flags |= defaults.h_flags & H_ASK_PW; X if (!newhost.h_login) X newhost.h_login = defaults.h_login; X if (!newhost.h_daemon) X newhost.h_daemon = defaults.h_daemon; X if (!newhost.h_epath) X newhost.h_epath = defaults.h_epath; X if (!newhost.h_epath) X newhost.h_epath = "pvm/%"; X X newhost.h_name = sstring(av[0]); X if (p = CINDEX(av[0], '.')) X *p = 0; X newhost.h_fname = sstring(av[0]); X if (!(he = gethostbyname(newhost.h_name))) { X fprintf(stderr, "line %d: %s: can't gethostbyname()\n", X lnum, newhost.h_name); X err++; X continue; X } X bcopy(he->h_addr_list[0], X (char*)&newhost.h_adres.sin_addr, X sizeof(struct in_addr)); X X /* check to see if "new host" is already defined X * XXX note this may break if hosts are multi-headed X */ X X for (i = 0; i < nhosts; ++i) { X X /* slot 0 may not be filled in yet; so skip if name is NULL */ X if (hosts[i].h_name == NULL) X continue; X if (strcmp(hosts[i].h_name, newhost.h_name) == 0) { X fprintf(stderr, "line %d: host %s repeated\n", X lnum, newhost.h_name); X err++; X oerr++; X break; X } else X if (bcmp((char*)&hosts[i].h_adres.sin_addr, X (char*)&newhost.h_adres.sin_addr, X sizeof(struct in_addr)) == 0) { X fprintf(stderr, X "line %d: host %s has same address as host %s\n", X lnum, newhost.h_name, hosts[i].h_name); X err++; X oerr++; X break; X } X } X if (oerr) X continue; X /* X * Add new host to list of hosts. If IP address matches X * master host, add in slot 0; otherwise add at end of list. X */ X for (i = 0; i < num_addrs; i++) { X if (bcmp((char*)&my_in_addrs[i], (char*)&newhost.h_adres.sin_addr, X sizeof (struct in_addr)) == 0) X break; X } X if (i < num_addrs) { X X /* master host; add in slot 0 */ X hosts[0] = newhost; X if (!nhosts) X nhosts = 1; X X } else { X /* add at end of list; realloc if necessary to add room */ X if (!nhosts) /* slot 0 is reserved for master */ X nhosts = 1; X if (nhosts >= htlen) X hosts = trealloc(hosts, (htlen += 10), struct pvmhost); X hosts[nhosts] = newhost; X nhosts++; X } X } X (void)fclose(ff); X endhostent(); X X if (err) X exit(1); X if (!nhosts) { X fputs("empty host file\n", stderr); X exit(1); X } X if (!hosts[0].h_name) { X fprintf(stderr, "%s: master host not in host file\n", name); X exit(1); X } X} X END_OF_FILE if test 8720 -ne `wc -c <'pvm2.4/src/host.c'`; then echo shar: \"'pvm2.4/src/host.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/host.c' fi if test -f 'pvm2.4/src/imalloc.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/imalloc.c'\" else echo shar: Extracting \"'pvm2.4/src/imalloc.c'\" \(10186 characters\) sed "s/^X//" >'pvm2.4/src/imalloc.c' <<'END_OF_FILE' X/* X * imalloc.c X * X * Instrumented malloc library. X * X * 7 Jun 1991 Robert Manchek manchek@CS.UTK.EDU. X * 6 Sep 1991 added static glob and check features. X * 17 Dec 1991 added i_realloc, cleaned up. X * X * To use, add something like the following to your code: X * #define malloc(n) i_malloc(n) X * #define realloc(p,n) i_realloc(p,n) X * #define free(p) i_free(p) X * recompile, and link. X * X * Facilities: X * X * $ All errors written to fd 2 (not using stdio). X * X * $ Configurable to die on error for debugger. X * Define DIEONERROR as 0 or 1. X * X * $ Configurable to use statically allocated space for recordkeeping. X * This makes imalloc more immune to bad heap space trashing. X * Define STATICGLOBS as nonzero. X * X * $ I_malloc(): X * Error on [adjustable] unreasonble length or malloc() failed. X * Hashes descriptors of all chunks for i_free() checking. X * Numbers requests to indicate order received. X * Writes [adjustable] pseudo-random head and tail pads to X * aid in checking overrun of chunk. X * X * $ I_free(ptr): X * Error if chunk not i_malloc()d. X * Checks head and tail pads. X * [Optionally] zeros chunk to aid in detecting late use. X * Define ZEROONFREE as 0 or 1. X * X * $ I_dump(how): X * Callable from user program. X * Dumps the hash table to see what chunks are active. X * If how is 1, checks each chunk's head and tail pads. X * X */ X X#include X#include X X#ifndef DIEONERROR X#define DIEONERROR 1 X#endif X#ifndef ZEROONFREE X#define ZEROONFREE 1 X#endif X#ifndef STATICGLOBS X#define STATICGLOBS 2000 X#endif X X#if DIEONERROR X#define CHOKE { char *p = 0; *p = 1; } X#else X#define CHOKE X#endif X X#define NEXTRN(x) (x = (x) + (x) + (((x ^ (x >> 3)) & 0x2000) ? 1 : 0)) X#define HASH(p) (((int)(p) ^ ((int)(p) >> 8) ^ ((int)(p) >> 16) ^ ((int)(p) >> 24)) & 0xff) X X/* write a null-term string */ X X#define SWRITE(fd,s) write((fd),(s),strlen(s)) X X/* this describes a chunk of memory */ X struct glob { X char *base; /* baseaddr of user chunk */ X int len; /* len of user chunk */ X int id; /* chunk id */ X int lop; /* nbytes head padding */ X int hip; /* nbytes tail padding */ X int rst; /* starting random state */ X struct glob *next; /* next glob in hash bucket */ X}; X X/* default values */ X static int debfd = 2; /* debug file descriptor */ static int lengthlimit = 1048576; /* max length malloc allowed */ static int lopad = 16; /* chunk head pad */ static int hipad = 16; /* chunk tail pad */ X X/* globals */ X static int rnstate = 1; /* random sequence gen. */ static struct glob *hashtbl[256]; /* chunk hash table */ static char msbuf[256]; /* error message buffer */ static int firsttime = 1; static int globid = 0; /* chunk id counter */ X#if STATICGLOBS > 0 static struct glob globheap[STATICGLOBS]; static struct glob *globfl = 0; static int globavail = STATICGLOBS; X#endif X X/* i_malloc() X* X* Allocate a buffer of given length. X*/ X char* i_malloc(len) X int len; /* number of bytes */ X{ X char *ptr; X struct glob *ob; /* hash tbl entry */ X struct glob **he; X int i; /* gp */ X X if (firsttime) { X firsttime = 0; X bzero((char*)hashtbl, sizeof(hashtbl)); X X#if STATICGLOBS > 0 X /* initialize the glob freelist */ X ob = 0; X for (i = STATICGLOBS-1; i >= 0; i--) { X globheap[i].next = ob; X ob = &globheap[i]; X } X globfl = ob; X#endif X } X X /* check req length */ X X if (len < 1 || len > lengthlimit) { X (void)sprintf(msbuf, "i_malloc: bogus len=%d\n", len); X (void)SWRITE(debfd, msbuf); X CHOKE; X return (char*)0; X } X X /* do actual malloc */ X X if (!(ptr = (char*)malloc(len + lopad + hipad))) { X (void)sprintf(msbuf, "i_malloc: malloc failed len=%d\n", len); X (void)SWRITE(debfd, msbuf); X CHOKE; X return (char*)0; X } X X /* get descriptor */ X X#if STATICGLOBS > 0 X if (ob = globfl) { X globfl = globfl->next; X globavail--; X X } else { X (void)sprintf(msbuf, "i_malloc: glob allocate failed (max %d)\n", X STATICGLOBS); X (void)SWRITE(debfd, msbuf); X CHOKE; X return (char*)0; X } X#else X if (!(ob = (struct glob*)malloc(sizeof(struct glob)))) { X (void)sprintf(msbuf, "i_malloc: malloc failed for glob\n"); X (void)SWRITE(debfd, msbuf); X CHOKE; X return (char*)0; X } X#endif X X /* enter descriptor, write head and tail pads */ X X ob->id = ++globid; X ob->len = len; X ob->lop = lopad; X ob->hip = hipad; X ob->rst = rnstate; X for (i = lopad; i-- > 0; *ptr++ = NEXTRN(rnstate)); X ob->base = ptr; X he = &hashtbl[HASH(ptr)]; X for (i = hipad, ptr += len; i-- > 0; *ptr++ = NEXTRN(rnstate)); X ob->next = *he; X *he = ob; X return ob->base; X} X X/* i_free() X* X* Give up a previously allocated buffer. X*/ X i_free(loc) X char *loc; /* ptr to buffer */ X{ X struct glob *ob; /* freeing this object */ X struct glob *preob; /* object before in chain */ X int rs; /* reproduced random seqn */ X char *ptr = loc; /* gp */ X struct glob **he; /* hash tbl entry */ X int i; /* gp */ X X /* sanity check */ X X if (firsttime) { X char *s = "i_free: called before i_malloc?\n"; X SWRITE(debfd, s); X CHOKE; X return; X } X X /* delete from hash tbl */ X X he = &hashtbl[HASH(loc)]; X for (preob = 0, ob = *he; ob && ob->base != loc; preob = ob, ob = ob->next); X if (!ob) { X (void)sprintf(msbuf, "i_free: bogus loc=0x%x\n", loc); X (void)SWRITE(debfd, msbuf); X CHOKE; X return; X } X rs = ob->rst; X X /* check head and tail pads */ X X for (i = ob->lop, ptr -= i; i > 0; i--) X if ((0xff & (int)(*ptr++)) != (0xff & NEXTRN(rs))) { X (void)sprintf(msbuf, "i_free: scribbled in 0x%x[%d]\n", loc, -i); X (void)SWRITE(debfd, msbuf); X CHOKE; X } X for (i = ob->hip, ptr += ob->len; i > 0; i--) X if ((0xff & (int)(*ptr++)) != (0xff & NEXTRN(rs))) { X (void)sprintf(msbuf, "i_free: scribbled in 0x%x[%d+%d]\n", X loc, ob->len, ob->hip - i); X (void)SWRITE(debfd, msbuf); X CHOKE; X } X X /* do actual free */ X X#if ZEROONFREE X bzero(loc - ob->lop, ob->len + ob->lop + ob->hip); X#endif X free(loc - ob->lop); X X /* reclaim descriptor */ X X if (preob) X preob->next = ob->next; X else X *he = ob->next; X#if STATICGLOBS > 0 X ob->next = globfl; X globfl = ob; X globavail++; X#else X free((char*)ob); X#endif X} X X/* i_realloc() X* X* Resize a previously allocated buffer (possibly relocate as well) X* and leave the contents unchanged up to the minimum of the old X* and new lengths. X*/ X char* i_realloc(loc, len) X char *loc; /* old buffer */ X int len; /* length of new buffer */ X{ X struct glob *ob; /* freeing this object */ X struct glob *preob; /* object before in chain */ X int rs; /* reproduced random seqn */ X char *ptr = loc; /* gp */ X struct glob **he; /* hash tbl entry */ X int i; /* gp */ X X /* sanity check */ X X if (firsttime) { X char *s = "i_realloc: called before i_malloc?\n"; X SWRITE(debfd, s); X CHOKE; X return (char*)0; X } X X /* check req length */ X X if (len < 1 || len > lengthlimit) { X (void)sprintf(msbuf, "i_realloc: bogus len=%d\n", len); X (void)SWRITE(debfd, msbuf); X CHOKE; X return (char*)0; X } X X /* delete from hash tbl */ X X he = &hashtbl[HASH(loc)]; X for (preob = 0, ob = *he; ob && ob->base != loc; preob = ob, ob = ob->next); X if (!ob) { X (void)sprintf(msbuf, "i_realloc: bogus loc=0x%x\n", loc); X (void)SWRITE(debfd, msbuf); X CHOKE; X return (char*)0; X } X rs = ob->rst; X X /* check head and tail pads */ X X for (i = ob->lop, ptr -= i; i > 0; i--) X if ((0xff & (int)(*ptr++)) != (0xff & NEXTRN(rs))) { X (void)sprintf(msbuf, "i_realloc: scribbled in 0x%x[%d]\n", loc, -i); X (void)SWRITE(debfd, msbuf); X CHOKE (char*)0; X } X for (i = ob->hip, ptr += ob->len; i > 0; i--) X if ((0xff & (int)(*ptr++)) != (0xff & NEXTRN(rs))) { X (void)sprintf(msbuf, "i_realloc: scribbled in 0x%x[%d+%d]\n", X loc, ob->len, ob->hip - i); X (void)SWRITE(debfd, msbuf); X CHOKE (char*)0; X } X X /* remove descriptor */ X X if (preob) X preob->next = ob->next; X else X *he = ob->next; X X /* realloc */ X X if (!(ptr = (char*)realloc(loc - ob->lop, len + lopad + hipad))) { X (void)sprintf(msbuf, "i_realloc: malloc failed len=%d\n", len); X (void)SWRITE(debfd, msbuf); X CHOKE; X return (char*)0; X } X X /* rewrite descriptor, write head and tail pads */ X X ob->id = ++globid; /* XXX ? */ X ob->len = len; X ob->lop = lopad; X ob->hip = hipad; X ob->rst = rnstate; X for (i = lopad; i-- > 0; *ptr++ = NEXTRN(rnstate)); X ob->base = ptr; X he = &hashtbl[HASH(ptr)]; X for (i = hipad, ptr += len; i-- > 0; *ptr++ = NEXTRN(rnstate)); X ob->next = *he; X *he = ob; X return ob->base; X} X X/* ascdump() X* X* Convert byte string to printable characters. X*/ X static ascdump(o, p, e) X char **o; /* addr of pointer to output space (passed back) */ X char *p; /* string to convert */ X int e; /* length of string */ X{ X char *r = *o; X char c; X X while (e-- > 0) { X c = 0x7f & *p; X if (c < ' ' || c == 0x7f) { X c = (c + '@') & 0x7f; X *r++ = '^'; X } else X *r++ = ' '; X *r++ = c; X p++; X } X *r++ = '\n'; X *r = 0; X *o = r; X} X X#define DUMPHDR "i_dump():" X X/* i_dump() X* X* Dump the table of contents of allocated buffers. X*/ X i_dump(how) X int how; /* != 0 also do sanity checking */ X{ X int ht; /* hash table index */ X struct glob *ob; X char *r; X int i; X int rs; /* reproduced random seqn */ X char *ptr; /* gp */ X int err; X X#if STATICGLOBS > 0 X sprintf(msbuf, "%s %d globs free\n", DUMPHDR, globavail); X (void)SWRITE(debfd, msbuf); X#else X sprintf(msbuf, "%s\n", DUMPHDR); X (void)SWRITE(debfd, msbuf); X#endif X for (ht = 0; ht < 256; ht++) { X for (ob = hashtbl[ht]; ob; ob = ob->next) { X rs = ob->rst; X ptr = ob->base; X err = 0; X if (how) { X for (i = ob->lop, ptr -= i; i > 0; i--) X if ((0xff & (int)(*ptr++)) != (0xff & NEXTRN(rs))) { X (void)sprintf(msbuf, X "%5d 0x%08x[%d]: scribbled in [%d]\n", X ob->id, ob->base, ob->len, -i); X (void)SWRITE(debfd, msbuf); X err++; X } X for (i = ob->hip, ptr += ob->len; i > 0; i--) X if ((0xff & (int)(*ptr++)) != (0xff & NEXTRN(rs))) { X (void)sprintf(msbuf, X "%5d 0x%08x[%d]: scribbled in [%d+%d]\n", X ob->id, ob->base, ob->len, ob->len, ob->hip - i); X (void)SWRITE(debfd, msbuf); X err++; X } X } X if (!err) { X sprintf(msbuf, "%5d 0x%08x[%4d]", ob->id, ob->base, ob->len); X r = msbuf + strlen(msbuf); X *r++ = ' '; X if ((i = ob->len) > 16) X i = 16; X ascdump(&r, ob->base, i); X (void)SWRITE(debfd, msbuf); X } X } X } X} X END_OF_FILE if test 10186 -ne `wc -c <'pvm2.4/src/imalloc.c'`; then echo shar: \"'pvm2.4/src/imalloc.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/imalloc.c' fi if test -f 'pvm2.4/src/loclcomm.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/loclcomm.c'\" else echo shar: Extracting \"'pvm2.4/src/loclcomm.c'\" \(1301 characters\) sed "s/^X//" >'pvm2.4/src/loclcomm.c' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Loclcomm.c X * X * Communication between user process and pvmd. X * X$Log: loclcomm.c,v $ X * Revision 1.1 1991/05/06 14:43:32 manchek X * Initial revision X * X * X */ X X#include "loclcomm.h" X X#define ladj(l) (((l) + 3) & ~3) X X/***************************************** X* Machine-Dep integer and string passing * X*****************************************/ X X/* lpaci() X* X* Pack an int into a buffer. X*/ X lpaci(p, i) X char **p; X int i; X{ X bcopy((char*)&i, *p, sizeof(i)); X *p += sizeof(i); X} X X/* lupai() X* X* Unpack an int from a buffer. X*/ X int lupai(p) X char **p; X{ X int i; X X bcopy(*p, (char*)&i, sizeof(i)); X *p += sizeof(i); X return i; X} X X/* lpacs() X* X* Pack a string into a buffer. X* Needs length (including trailing \0). X*/ X X/* XXX doesn't really use length but maybe should for efficiency */ X lpacs(p, s, len) X char **p; X char *s; X int len; X{ X int l, al; X X l = strlen(s) + 1; X al = ladj(l); X bcopy(s, *p, l); X *p += al; X} X X/* lupps() X* X* Unpack a string from a buffer. X* Optionally returns length (including trailing \0). X*/ X char* lupps(p, l) X char **p; X int *l; X{ X int len; X char *str; X X len = strlen(*p) + 1; X str = *p; X if (l) X *l = len; X *p += ladj(len); X return str; X} X END_OF_FILE if test 1301 -ne `wc -c <'pvm2.4/src/loclcomm.c'`; then echo shar: \"'pvm2.4/src/loclcomm.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/loclcomm.c' fi if test -f 'pvm2.4/src/loclcomm.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/loclcomm.h'\" else echo shar: Extracting \"'pvm2.4/src/loclcomm.h'\" \(3341 characters\) sed "s/^X//" >'pvm2.4/src/loclcomm.h' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Loclcomm.h X * X * Definitions for communication between user process and pvmd. X * Also some user-user stuff sutck in. X * X$Log: loclcomm.h,v $ X * Revision 1.7 1992/03/18 19:19:28 manchek X * added defines PVM_RAW and XDR for packing/unpacking messages X * [these aren't in an appropriate place...] X * changed unused field in uumh to data encoding field X * X * Revision 1.6 1992/03/16 19:06:24 manchek X * added UMC_MSTAT msg class X * X * Revision 1.5 1992/01/23 23:22:56 manchek X * added UF_ALRDY flag for enroll response X * X * Revision 1.4 1992/01/07 01:30:00 manchek X * added UMC_VERSION msg type X * X * Revision 1.3 1991/12/31 21:52:53 manchek X * added defines for virt ckt msg hdrs and pvmd calls X * X * Revision 1.2 1991/07/24 15:32:34 manchek X * added UMC_PSTAT message type X * X * Revision 1.1 1991/05/06 14:43:57 manchek X * Initial revision X * X * X */ X X#define UTOPSOC "/tmp/pvmd.%s" /* socket user->pvmd */ X#define PTOUSOC "/tmp/pvmu.%d" /* socket pvmd->user */ X X#define FRHDLEN 104 /* space reserved for local comm plus pvmd overhead */ X X#define MAXUPROCNAMELEN 32 /* arbitrary limit to make things manageable */ X X/* user<->user msg flags */ X X#define UUF_STP 1 /* starting packet */ X#define UUF_ENP 2 /* ending packet */ X X/* message fragments */ X typedef struct frag { X int fr_length; /* frag length */ X char *fr_data; /* frag data */ X struct frag *fr_next; /* next frag */ X} frag; X X/* internal flags for data conversion */ X X#define PVM_RAW 0 X#define PVM_XDR 1 X X/* ulib<->pvmd message classes */ X X#define UMC_ENROLL 1 X#define UMC_INIT 2 X#define UMC_TERM 3 X#define UMC_WHOAMI 4 X#define UMC_LEAVE 5 X#define UMC_SEND 6 X#define UMC_RECV 7 X#define UMC_BARR 8 X#define UMC_STAT 9 X#define UMC_PSTAT 10 X#define UMC_INST 11 X#define UMC_GETVC 12 X#define UMC_SETVC 13 X#define UMC_VERSION 14 X#define UMC_MSTAT 15 X X/* status */ X X#define UF_ACK 0x0001 /* yes condition/not fail */ X X#define UF_RUN 0x0002 /* running/active */ X#define UF_NMSG 0x0004 /* no messages */ X#define UF_NPROC 0x0008 /* no such process */ X#define UF_NEXE 0x0010 /* no executable */ X#define UF_NHOST 0x0020 /* no host/class */ X#define UF_BQM 0x0040 /* barrier quorum mismatch */ X#define UF_ALRDY 0x0080 /* process already enrolled */ X X/* command modifiers */ X X#define UF_NBLK 0x0100 /* dont block if no mesg for U_RECV */ X#define UF_IN 0x0800 /* specify stdin to U_INIT */ X#define UF_OUT 0x1000 /* specify stdout to U_INIT */ X#define UF_ERR 0x2000 /* specify stderr to U_INIT */ X#define UF_BARR 0x4000 /* else waituntil */ X#define UF_RDY 0x8000 /* trigger waituntil */ X X/* length adjust for packing strings */ X X#define LLADJ(l) ((((l) + 3) & ~3)) X X/* user message header - Dont have to be mach indep */ X typedef struct userm { X int um_pid; X int um_type; X int um_seq; X int um_flg; X} userm; X X#define um_data(m) (((char*)(m)) + sizeof(userm)) X extern char *lupps(); X X/* proc<->proc direct message header (>1 byte msb first) X must be multiple of 8 bytes long */ X struct uumh { X char uu_xx; /* not used */ X char uu_flags; /* flags */ X char uu_bcr[2]; /* broadcast root */ X char uu_type[4]; /* u msg type */ X char uu_len[4]; /* msg len (incl header) */ X char uu_encoding[4];/* data encoding */ X}; X END_OF_FILE if test 3341 -ne `wc -c <'pvm2.4/src/loclcomm.h'`; then echo shar: \"'pvm2.4/src/loclcomm.h'\" unpacked with wrong size! fi # end of 'pvm2.4/src/loclcomm.h' fi if test -f 'pvm2.4/src/micomm.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/micomm.c'\" else echo shar: Extracting \"'pvm2.4/src/micomm.c'\" \(1953 characters\) sed "s/^X//" >'pvm2.4/src/micomm.c' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Micomm.c X * X * Machine-independant communication for pvm. X * X$Log: micomm.c,v $ X * Revision 1.1 1991/05/06 14:43:33 manchek X * Initial revision X * X * X */ X X#include X#include X#include X#include "micomm.h" X X#define xadj(l) (((l) + 3) & ~3) X X/* xpaci() X* X* Pack an integer into a buffer. X*/ X xpaci(p, i) X char **p; X int i; X{ X char *r; X u_long l = i; X X if (sizeof(l) == PVM_INT) { X l = htonl(l); X bcopy((char*)&l, *p, PVM_INT); X *p += PVM_INT; X } else { X if (sizeof(l) > PVM_INT) { X r = *p; /* XXX assumes PVM_INT = 4 */ X *r++ = l >> 24; X *r++ = l >> 16; X *r++ = l >> 8; X *r++ = l; X *p = r; X } else { X /* XXX seriously, this will never be used */ X fputs("xpaci(): I can't do small integers. Fix me.\n", stderr); X exit(1); X } X } X X} X X/* xupai() X* X* Unpack an int from a buffer. X*/ X int xupai(p) X char **p; X{ X u_long l; X char *r; X X if (sizeof(l) == PVM_INT) { X bcopy(*p, (char*)&l, PVM_INT); X l = ntohl(l); X *p += PVM_INT; X } else { X if (sizeof(l) > PVM_INT) { X r = *p; /* XXX assumes PVM_INT = 4 */ X l = ((0xff & *r) << 24) X + ((0xff & *(r+1)) << 16) X + ((0xff & *(r+2)) << 8) X + (0xff & *(r+3)); X if (l & 0x80000000) X l |= -1 & ~0x7fffffff; X *p += PVM_INT; X } else { X /* XXX seriously, this will never be used */ X fputs("xupai(): I can't do small integers. Fix me.\n", stderr); X exit(1); X } X } X return (int)l; X} X X/* xpacs() X* X* Pack a string into a buffer. X*/ X xpacs(p, s) X char **p; X char *s; X{ X int l, al; X X l = strlen(s) + 1; X al = xadj(l); X bcopy(s, *p, l); X *p += al; X} X X/* xupps() X* X* Unpack a string from a buffer. X* Optionally returns length (including trailing \0). X*/ X char* xupps(p, l) X char **p; X int *l; X{ X int len; X char *str; X X len = strlen(*p) + 1; X str = *p; X if (l) X *l = len; X *p += xadj(len); X return str; X} X END_OF_FILE if test 1953 -ne `wc -c <'pvm2.4/src/micomm.c'`; then echo shar: \"'pvm2.4/src/micomm.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/micomm.c' fi if test -f 'pvm2.4/src/micomm.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/micomm.h'\" else echo shar: Extracting \"'pvm2.4/src/micomm.h'\" \(436 characters\) sed "s/^X//" >'pvm2.4/src/micomm.h' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Micomm.h X * X * Definitions for machine-independant communication. X * X$Log: micomm.h,v $ X * Revision 1.1 1991/05/06 14:43:57 manchek X * Initial revision X * X * X */ X X#define PVM_INT 4 /* size of integer in message */ X#define XLADJ(l) (((l) + 3) & ~3) /* packed length of string */ X extern char *xupps(); X END_OF_FILE if test 436 -ne `wc -c <'pvm2.4/src/micomm.h'`; then echo shar: \"'pvm2.4/src/micomm.h'\" unpacked with wrong size! fi # end of 'pvm2.4/src/micomm.h' fi if test -f 'pvm2.4/src/netside.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/netside.c'\" else echo shar: Extracting \"'pvm2.4/src/netside.c'\" \(18928 characters\) sed "s/^X//" >'pvm2.4/src/netside.c' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Netside.c X * X * Network entry points to Pvmd. X * X$Log: netside.c,v $ X * Revision 1.17 1992/12/16 07:08:21 manchek X * decrufted somewhat X * X * Revision 1.16 1992/01/17 18:35:41 manchek X * more compact proc listing format X * X * Revision 1.15 1992/01/07 01:31:02 manchek X * traded random code for croak(). X * use string from proc.h for printf format in n_psack X * X * Revision 1.14 1991/12/31 22:59:55 manchek X * added support for virtual ckts. X * moved deliver() to pvmd.c. X * cleaned up malloc leaks in n_inumack() X * X * Revision 1.13 1991/12/30 17:29:16 manchek X * but in n_ps() - didn't set msg len correctly. X * X * Revision 1.12 1991/12/11 23:27:00 manchek X * entry points to support new proc_cmd() (PVM_PS and PVM_PSACK) X * X * Revision 1.11 1991/12/11 17:12:22 manchek X * now don't have to set PVM_BC when using toall() X * X * Revision 1.10 1991/12/09 17:47:21 manchek X * cleaned up stuff after endifs X * X * Revision 1.9 1991/11/27 20:23:57 manchek X * switch to instrumented malloc defines X * X * Revision 1.8 1991/11/26 01:46:39 manchek X * made a switch table for netwk entry points X * X * Revision 1.7 1991/09/13 17:44:37 manchek X * added warning message on recv unknown pvmd message type X * X * Revision 1.6 1991/07/31 17:34:01 manchek X * added maxxmlen to UMC_ENROLL reply (for msg len negot.) X * X * Revision 1.5 1991/06/18 13:54:19 manchek X * added myhost==0 check to entry points that should only be used on pvmd[0] X * X * Revision 1.4 1991/06/17 15:36:38 manchek X * changed const 12 to PVM_HSIZ in fromnet(). X * X * Revision 1.3 1991/06/16 20:59:15 manchek X * small memory leak in n_inumack() fixed. X * X * Revision 1.2 1991/06/13 03:46:11 manchek X * fixed free goof in n_inumack() X * fixed free goof in n_hostack() (wp getting freed before wp->w_mhdr) X * X * Revision 1.1 1991/05/06 14:43:33 manchek X * Initial revision X * X * X */ X X#include X#include X#include X#ifndef NOUNIXSOC X#include X#endif X#include X#include X#include X#ifndef SYSVSTRING X#include X#else X#include X#endif X#include "global.h" X#include "pvmd.h" X#include "micomm.h" X#include "rem.h" X#include "proc.h" X#include "wait.h" X#include "loclcomm.h" X char *sstring(); X extern int myhost; /* from pvmd.c */ extern int nhosts, narchs; /* from pvmd.c */ extern pvmhost *hosts; /* from pvmd.c */ extern int maxxmlen; /* from pvmd.c */ extern lproc *lproclist; /* from proc.c */ extern xproc *xproclist; /* from proc.c */ X X/**************************** X* Network-side entry points * X* * X****************************/ X int n_bogus(), X n_usermsg(), n_inumget(), n_inumack(), n_inotify(), n_xnotify(), X n_isproc(), n_locate(), n_init(), n_hostget(), n_hostack(), n_ready(), X n_epoch(), n_term(), n_barrier(), n_ps(), n_psack(), n_cnt(), X n_cntack(), n_vcnot(); X static int (*nswitch[])() = { X n_bogus, X n_usermsg, X n_inumget, X n_inumack, X n_inotify, X n_xnotify, X n_isproc, X n_locate, X n_init, X n_hostget, X n_hostack, X n_ready, X n_epoch, X n_term, X n_barrier, X n_ps, X n_psack, X n_cnt, X n_cntack, X n_vcnot X}; X fromnet(hp, rhdr) X pvmhost *hp; X pvmg *rhdr; X{ X int t; X X rhdr->pv_data += PVM_HSIZ; X rhdr->pv_len -= PVM_HSIZ; X#ifdef DEBUG X fprintf(stderr, "fromnet: len=%d type=%d flg=0x%x\n", X rhdr->pv_len, rhdr->pv_type, rhdr->pv_flg); X#endif X X t = rhdr->pv_type; X if (t < 0 || t >= sizeof(nswitch)/sizeof(nswitch[0])) X n_bogus(hp, rhdr); X else X (nswitch[t])(hp, rhdr); X X rhdr->pv_data -= PVM_HSIZ; X rhdr->pv_len += PVM_HSIZ; X} X n_bogus(hp, rhdr) X pvmhost *hp; X pvmg *rhdr; X{ X fprintf(stderr, "fromnet(): bogus msg from pvmd %d type %d\n", X hp - hosts, rhdr->pv_type); X} X X/* n_vcnot() X* X* Notification of virt ckt addr for process X*/ X n_vcnot(hp, rhdr) X/*ARGSUSED*/ X pvmhost *hp; X pvmg *rhdr; X{ X char *p = rhdr->pv_data; X char *name = xupps(&p, (int*)0); X int inum = xupai(&p); X long theaddr = xupai(&p); X short theport = xupai(&p); X struct sockaddr_in sin; X xproc *xpp; X X bzero((char*)&sin, sizeof(sin)); X sin.sin_family = AF_INET; X sin.sin_addr.s_addr = htonl(theaddr); X sin.sin_port = htons(theport); X X if (xpp = get_xpp(name, inum)) X bcopy((char*)&sin, (char*)&xpp->xp_vad, sizeof(struct sockaddr_in)); X deliver_vc(name, inum, &sin); X} X X/* n_cnt() X* X* Query for highest instance of given proc name. X*/ X n_cnt(hp, rhdr) X/*ARGSUSED*/ X pvmhost *hp; X pvmg *rhdr; X{ X char *p = rhdr->pv_data; X char *name; /* process name */ X int namlen; X struct xproc *xpp; /* to search xproclist */ X int numi = -1; /* count of instances found */ X pvmg thdr; /* the reply message */ X X name = xupps(&p, &namlen); X for (xpp = xproclist; xpp; xpp = xpp->xp_next) X if (xpp->xp_flg & PS_RUN X && !strcmp(xpp->xp_name, name) X && xpp->xp_inum > numi) X numi = xpp->xp_inum; X numi++; X X thdr.pv_len = PVM_HSIZ + XLADJ(namlen) + PVM_INT; X thdr.pv_data = tmalloc(thdr.pv_len, char); X thdr.pv_type = PVM_CNTACK; X thdr.pv_wchan = rhdr->pv_wchan; X thdr.pv_flg = 0; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, name); X xpaci(&p, numi); X tohost(hp, &thdr, 0, (waitc*)0); X} X n_cntack(hp, rhdr) X/*ARGSUSED*/ X pvmhost *hp; X pvmg *rhdr; X{ X struct waitc *wp; /* wait channel */ X int numi; /* number of instances */ X userm *uhdr; X char *p = rhdr->pv_data; X X if (wp = get_wait(rhdr->pv_wchan)) { X xupps(&p, (int*)0); /* don't care about name */ X numi = xupai(&p); X switch (wp->w_what) { X X case WT_CNT: /* was getting instance count for proc */ X uhdr = (userm*)m_malloc(sizeof(userm) + sizeof(int)); X uhdr->um_flg = UF_ACK; X p = um_data(uhdr); X lpaci(&p, numi); X touser(wp->w_proc, uhdr, sizeof(*uhdr) + sizeof(int)); X m_free(uhdr); X break; X X default: X break; X } X m_free(wp); X } X} X X/* n_psack() X* X* Remote pvmd reply to PVM_PS query. X* Print out process list from reply and count down to command ready. X*/ X n_psack(hp, rhdr) X/*ARGSUSED*/ X pvmhost *hp; X pvmg *rhdr; X{ X char *p; X int n; X char *name; X int inum; X int flg; X X p = rhdr->pv_data; X n = xupai(&p); X while (n-- > 0) { X name = xupps(&p, (int*)0); X inum = xupai(&p); X flg = xupai(&p); X fprintf(stderr, PROC_FORMAT, name, inum, hp->h_fname, procflags(flg)); X } X is_cmd_rdy(); X} X X/* n_ps() X* X* Request for our local process list from a remote pvmd. X*/ X n_ps(hp, rhdr) X/*ARGSUSED*/ X pvmhost *hp; X pvmg *rhdr; X{ X pvmg thdr; X lproc *lp; X int n = 0; X char *p; X X thdr.pv_len = maxxmlen; X thdr.pv_data = tmalloc(thdr.pv_len, char); X thdr.pv_type = PVM_PSACK; X thdr.pv_flg = 0; X thdr.pv_wchan = 0; X p = thdr.pv_data + PVM_HSIZ; X X for (lp = lproclist; lp; lp = lp->lp_next) X n++; X xpaci(&p, n); X X for (lp = lproclist; lp; lp = lp->lp_next) { X xpacs(&p, lp->lp_name ? lp->lp_name : "?"); X xpaci(&p, lp->lp_inum); X xpaci(&p, lp->lp_flg); X } X thdr.pv_len = p - thdr.pv_data; X tohost(hp, &thdr, 0, (waitc*)0); X} X X/* n_term() X* X* We are asked to terminate a process. No response required. X*/ X n_term(hp, rhdr) X/*ARGSUSED*/ X pvmhost *hp; X pvmg *rhdr; X{ X char *p = rhdr->pv_data; X char *name = xupps(&p, (int*)0); X int inum = xupai(&p); X lproc *lpp; X X/* X fprintf(stderr, "Gonna Waste <%s,%d>\n", name, inum); X*/ X if (locate(name, inum, (xproc**)0, &lpp) == 1) { X kill(lpp->lp_pid, SIGKILL); X croak(lpp); X } X} X n_epoch(hp, rhdr) X/*ARGSUSED*/ X pvmhost *hp; X pvmg *rhdr; X{ X new_epoch(); X} X n_barrier(hp, rhdr) X/*ARGSUSED*/ X pvmhost *hp; X pvmg *rhdr; X{ X char *p = rhdr->pv_data; X char *name = xupps(&p, (int*)0); X int quorum = xupai(&p); X X (void)isbarr(name, quorum); /* notify local procs */ X} X n_ready(hp, rhdr) X/*ARGSUSED*/ X pvmhost *hp; X pvmg *rhdr; X{ X char *p = rhdr->pv_data; X char *name = xupps(&p, (int*)0); X X isready(name); /* notify local procs */ X} X n_hostack(hp, rhdr) X/*ARGSUSED*/ X pvmhost *hp; X pvmg *rhdr; X{ X char *p = rhdr->pv_data; X int host = xupai(&p); X waitc *wp; X pvmg thdr; X X if (wp = get_wait(rhdr->pv_wchan)) { X X /* if got a host, pass initiate message on */ X X if (host != -1) { X bcopy((char*)(wp->w_mhdr), (char*)&thdr, sizeof(thdr)); X m_free(wp->w_mhdr); X wp->w_mhdr = 0; X add_waitc(wp); X tohost(&hosts[host], &thdr, 0, (waitc*)0); X X /* else send nack to user */ X X } else { X userm umh; X X umh.um_flg = 0; X touser(wp->w_proc, &umh, sizeof(umh)); X X m_free(wp->w_mhdr->pv_data); X m_free(wp->w_mhdr); X m_free(wp); X } X X } else { /* XXX uh oh */ X } X} X X/* n_hostget() X* X* Reply to HOSTGET message with HOSTACK message. X* Reply with host == -1 if can't match requirements. X* Only pvmd[0] should ever receive this message. X*/ X n_hostget(hp, rhdr) X pvmhost *hp; X pvmg *rhdr; X{ X pvmg thdr; X char *p = rhdr->pv_data; X char *arch; X static int lasthost = 0; X int i; X X if (myhost) { X fprintf(stderr, "n_hostget: myhost = %d, got request from %d\n", X myhost, hp - hosts); X return; X } X arch = xupps(&p, (int*)0); X X lasthost = (lasthost + 1) % nhosts; X thdr.pv_data = tmalloc(thdr.pv_len = PVM_HSIZ + PVM_INT, char); X thdr.pv_type = PVM_HOSTACK; X thdr.pv_flg = 0; X thdr.pv_wchan = rhdr->pv_wchan; X p = thdr.pv_data + PVM_HSIZ; X if (*arch) { X i = lasthost; X while (1) { X if (!strcmp(arch, hosts[i].h_arch)) { X lasthost = i; X break; X } X i = (i + 1) % nhosts; X if (i == lasthost) { X i = -1; X break; X } X } X xpaci(&p, i); X X } else { /* just pick next host */ X xpaci(&p, lasthost); X } X#ifdef DEBUG X fprintf(stderr, "n_hostget() telling <%s> host %d\n", hp->h_name, lasthost); X#endif X tohost(hp, &thdr, 0, (waitc*)0); X} X X/* XXX this needs to be extended to more than just a name */ n_init(hp, rhdr) X pvmhost *hp; X pvmg *rhdr; X{ X char *p = rhdr->pv_data; X char *name; X int namlen; X waitc *wp; X pvmg thdr; X X name = xupps(&p, &namlen); X X wp = new_waitc(WT_CREAT); X wp->w_rwait = rhdr->pv_wchan; X wp->w_host = hp - hosts; X wp->w_data = sstring(name); X wp->w_length = namlen; X X thdr.pv_data = tmalloc(thdr.pv_len = PVM_HSIZ + XLADJ(namlen), char); X thdr.pv_type = PVM_INUMGET; X thdr.pv_flg = 0; X thdr.pv_wchan = wp->w_serial; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, name); X X add_waitc(wp); X tohost(hosts, &thdr, 0, (waitc*)0); X} X X/* n_locate() X* X* Host of process (name, instance) has been located (or not). X* Continue with what we were doing. X*/ X n_locate(hp, rhdr) X/*ARGSUSED*/ X pvmhost *hp; X pvmg *rhdr; X{ X char *p = rhdr->pv_data; X char *name; X int namlen; X int inum; X int host; X int pflg; X waitc *wp; X userm uhdr; X xproc *xpp; X X if (wp = get_wait(rhdr->pv_wchan)) { X name = xupps(&p, &namlen); X inum = xupai(&p); X host = xupai(&p); X pflg = xupai(&p); X X#ifdef DEBUG X fprintf(stderr, "n_locate() informed that <%s,%d> is on host %d\n", X name, inum, host); X#endif X X /* put this in our table */ X X if (host >= 0) { X X xpp = new_xpp(); X xpp->xp_name = sstring(name); X xpp->xp_inum = inum; X xpp->xp_host = host; X xpp->xp_flg = pflg; X add_xpp(xpp); X } X X /* pick up what we were doing */ X X switch (wp->w_what) { X X case WT_USEND: /* was sending user msg to the process */ X if (host < 0) { X uhdr.um_flg = UF_ACK|UF_NPROC; X touser(wp->w_proc, &uhdr, sizeof(uhdr)); X m_free(wp->w_mhdr->pv_data); X m_free(wp->w_mhdr); X wp->w_mhdr = 0; X X } else { X uhdr.um_flg = UF_ACK; X touser(wp->w_proc, &uhdr, sizeof(uhdr)); X X tohost(&hosts[host], wp->w_mhdr, 0, (waitc*)0); X m_free(wp->w_mhdr); X wp->w_mhdr = 0; X } X break; X X case WT_STATUS: /* user wanted status of this proc */ X uhdr.um_flg = UF_ACK | (host >= 0 ? UF_RUN : 0); X touser(wp->w_proc, &uhdr, sizeof(uhdr)); X break; X X case WT_TERM: /* we were sending a terminate */ X if (host < 0) { X uhdr.um_flg = UF_ACK|UF_NPROC; X touser(wp->w_proc, &uhdr, sizeof(uhdr)); X m_free(wp->w_mhdr->pv_data); X m_free(wp->w_mhdr); X wp->w_mhdr = 0; X X } else { X uhdr.um_flg = UF_ACK; X touser(wp->w_proc, &uhdr, sizeof(uhdr)); X X tohost(&hosts[host], wp->w_mhdr, 0, (waitc*)0); X } X break; X X default: /* XXX oh well */ X break; X } X X m_free(wp); X } X} X X/* n_isproc() X* X* Accept an ISPROC message (request for process location) and return X* a LOCATE message. Only pvmd[0] should receive this request. X*/ X n_isproc(hp, rhdr) X pvmhost *hp; X pvmg *rhdr; X{ X char *p = rhdr->pv_data; X char *name; X int namlen; X int inum; X xproc *xpp; X lproc *lpp; X pvmg thdr; X int where; X X if (myhost) { X fprintf(stderr, "n_isproc: myhost = %d, got request from %d\n", X myhost, hp - hosts); X return; X } X name = xupps(&p, &namlen); X inum = xupai(&p); X X/* X fprintf(stderr, "pvmd[0] been axed where <%s,%d> is\n", name, inum); X*/ X X where = locate(name, inum, &xpp, &lpp); X X thdr.pv_data = tmalloc(thdr.pv_len = PVM_HSIZ + XLADJ(namlen) + 3*PVM_INT, X char); X thdr.pv_type = PVM_LOCATE; X thdr.pv_wchan = rhdr->pv_wchan; X thdr.pv_flg = 0; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, name); X xpaci(&p, inum); X if (where == 0) { X xpaci(&p, -1); X xpaci(&p, 0); X } else { X xpaci(&p, (where == 2) ? xpp->xp_host : myhost); X xpaci(&p, (where == 2) ? xpp->xp_flg : lpp->lp_flg & PS_XFLGM); X } X tohost(hp, &thdr, 0, (waitc*)0); X} X n_usermsg(hp, rhdr) X/*ARGSUSED*/ X pvmhost *hp; X pvmg *rhdr; X{ X char *p = rhdr->pv_data; X char *toname = xupps(&p, (int*)0); X int toinum = xupai(&p); X char *frname = xupps(&p, (int*)0); X int frinum = xupai(&p); X int udlen = rhdr->pv_len - (p - rhdr->pv_data); X lproc *lpp; X X#ifdef DEBUG X fprintf(stderr, "n_usermsg() from <%s,%d> to <%s,%d>\n", X frname, frinum, toname, toinum); X#endif X X if (toinum == -1) { /* broadcast */ X for (lpp = lpbname((lproc*)0, toname); X lpp; X lpp = lpbname(lpp, toname)) { X deliver(lpp, frname, frinum, p, udlen); X } X X } else { /* dial direct */ X if (locate(toname, toinum, (xproc**)0, &lpp) == 1) X deliver(lpp, frname, frinum, p, udlen); X } X} X X/* n_inotify() X* X* Have received an INOTIFY message. Note a new external process in X* xproclist. X*/ X n_inotify(hp, rhdr) X pvmhost *hp; X pvmg *rhdr; X{ X char *p = rhdr->pv_data; X char *name; X int num; X xproc *xpp; X X name = xupps(&p, (int*)0); X num = xupai(&p); X X xpp = new_xpp(); X xpp->xp_name = sstring(name); X xpp->xp_inum = num; X xpp->xp_host = hp - hosts; X xpp->xp_flg = PS_RUN; X add_xpp(xpp); X X#ifdef DEBUG X fprintf(stderr, "new xproc <%s,%d>@%s\n", X name, num, hosts[xpp->xp_host].h_name); X#endif X} X X/* n_xnotify() X* X* Have received an XNOTIFY message. Note external process exit X* in xproclist. X*/ X n_xnotify(hp, rhdr) X/*ARGSUSED*/ X pvmhost *hp; X pvmg *rhdr; X{ X char *p = rhdr->pv_data; X char *name; X int num; X X name = xupps(&p, (int*)0); X num = xupai(&p); X#ifdef DEBUG X fprintf(stderr, "xproc exit <%s,%d>\n", name, num); X#endif X X die_xpp(name, num); X return; X} X X/* n_inumget() X* X* Accept INUMGET message (request instance number for new process) X* and reply with INUMACK message. X* Only pvmd[0] should ever receive this message. X*/ X n_inumget(hp, rhdr) X pvmhost *hp; X pvmg *rhdr; X{ X char *p = rhdr->pv_data; X char *name; X int inum; X xproc *xpp; X waitc *wp; X pvmg thdr; X X if (myhost) { X fprintf(stderr, "n_inumget: myhost = %d, got request from %d\n", X myhost, hp - hosts); X return; X } X name = xupps(&p, (int*)0); X thdr.pv_data = tmalloc(thdr.pv_len = PVM_HSIZ + PVM_INT, char); X X#ifdef DEBUG X fprintf(stderr, "asked for inum for <%s>\n", name); X#endif X X thdr.pv_type = PVM_INUMACK; X thdr.pv_flg = 0; X thdr.pv_wchan = rhdr->pv_wchan; X p = thdr.pv_data + PVM_HSIZ; X X inum = newinum(name); X xpaci(&p, inum); X X xpp = new_xpp(); X xpp->xp_name = sstring(name); X xpp->xp_inum = inum; X xpp->xp_host = hp - hosts; X X if (hp - hosts != myhost) { X xpp->xp_flg = 0; X add_xpp(xpp); X wp = new_waitc(WT_INUMRXD); X wp->w_data = (char*)xpp; X X } else { X wp = 0; X xpp->xp_flg = PS_RUN; X add_xpp(xpp); X } X X tohost(hp, &thdr, 0, wp); X} X X/* n_inumack() X* X* Got an instance number we requested. Notify local enrolling X* process or remote requesting pvmd. X*/ X n_inumack(hp, rhdr) X/*ARGSUSED*/ X pvmhost *hp; X pvmg *rhdr; X{ X char *p = rhdr->pv_data; X waitc *wp; X lproc *lpp; X userm *uhdr; X int inum = xupai(&p); X X if (wp = get_wait(rhdr->pv_wchan)) { X switch (wp->w_what) { X X case WT_ENROLL: /* was enrolling local process */ X lpp = wp->w_proc; X lpp->lp_inum = inum; X lpp->lp_flg |= PS_RUN; X X uhdr = (userm*)m_malloc(sizeof(userm) + 2 * sizeof(int) X + sizeof(struct in_addr)); X uhdr->um_flg = UF_ACK; X p = um_data(uhdr); X lpaci(&p, lpp->lp_inum); X lpaci(&p, maxxmlen); X bcopy((char*)&hosts[myhost].h_adres.sin_addr, p, X sizeof(struct in_addr)); X touser(lpp, uhdr, X sizeof(*uhdr) + 2 * sizeof(int) + sizeof(struct in_addr)); X m_free(uhdr); X { X int namlen = strlen(lpp->lp_name) + 1; X pvmg thdr; X X thdr.pv_data = tmalloc(thdr.pv_len = PVM_HSIZ + XLADJ(namlen) X + PVM_INT, char); X thdr.pv_type = PVM_INOTIFY; X thdr.pv_flg = 0; X thdr.pv_wchan = 0; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, lpp->lp_name); X xpaci(&p, lpp->lp_inum); X toall(&thdr, 0); X } X break; X X case WT_CREAT: /* am creating local process for remote */ X { X int pid; X lproc *lpp; X pvmg thdr; X int namlen; X X pid = start(wp->w_data); X X if (pid == -1) { X /* send pvmd[0] an exited message */ X namlen = strlen(wp->w_data) + 1; X thdr.pv_data = tmalloc( X thdr.pv_len = PVM_HSIZ + XLADJ(namlen) + PVM_INT, char); X thdr.pv_type = PVM_XNOTIFY; X thdr.pv_flg = 0; X thdr.pv_wchan = 0; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, wp->w_data); X xpaci(&p, inum); X tohost(&hosts[0], &thdr, 0, (waitc*)0); X m_free(wp->w_data); X X /* nack to requesting host */ X thdr.pv_data = tmalloc(thdr.pv_len = PVM_HSIZ + PVM_INT, X char); X thdr.pv_type = PVM_INUMACK; X thdr.pv_flg = 0; X thdr.pv_wchan = wp->w_rwait; X p = thdr.pv_data + PVM_HSIZ; X xpaci(&p, -1); X tohost(&hosts[wp->w_host], &thdr, 0, (waitc*)0); X X } else { X /* enter into local proc tbl */ X lpp = mak_lpp(pid); X lpp->lp_name = wp->w_data; X lpp->lp_inum = inum; X lpp->lp_flg = PS_RUN; X X /* notify requesting pvmd */ X thdr.pv_data = tmalloc(thdr.pv_len = PVM_HSIZ + PVM_INT, X char); X thdr.pv_type = PVM_INUMACK; X thdr.pv_flg = 0; X thdr.pv_wchan = wp->w_rwait; X p = thdr.pv_data + PVM_HSIZ; X xpaci(&p, inum); X tohost(&hosts[wp->w_host], &thdr, 0, (waitc*)0); X X /* notify all pvmds */ X namlen = strlen(lpp->lp_name) + 1; X thdr.pv_data = tmalloc( X thdr.pv_len = PVM_HSIZ + XLADJ(namlen) + PVM_INT, X char); X X thdr.pv_type = PVM_INOTIFY; X thdr.pv_flg = 0; X thdr.pv_wchan = 0; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, lpp->lp_name); X xpaci(&p, lpp->lp_inum); X toall(&thdr, 0); X } X } X break; X X case WT_INIT: /* waiting for remote to create process */ X { X userm *umh; X char ubuf[sizeof(*umh) + sizeof(int)]; X X lpp = wp->w_proc; X umh = (userm*)ubuf; X if (inum == -1) X umh->um_flg = UF_ACK|UF_NEXE; X else X umh->um_flg = UF_ACK; X p = um_data(umh); X lpaci(&p, inum); X touser(lpp, umh, sizeof(ubuf)); X } X break; X X default: X break; X } X m_free(wp); X } X} X END_OF_FILE if test 18928 -ne `wc -c <'pvm2.4/src/netside.c'`; then echo shar: \"'pvm2.4/src/netside.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/netside.c' fi if test -f 'pvm2.4/src/proc.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/proc.c'\" else echo shar: Extracting \"'pvm2.4/src/proc.c'\" \(9954 characters\) sed "s/^X//" >'pvm2.4/src/proc.c' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Proc.c X * X * Process list management. X * X$Log: proc.c,v $ X * Revision 1.12 1992/12/16 06:31:15 manchek X * added a few casts for retentiveness X * X * Revision 1.11 1992/01/07 01:32:09 manchek X * added support for new flag PS_VNOK. X * added croak(), cleanup and notify when a local process dies X * X * Revision 1.10 1991/12/31 23:04:58 manchek X * added support for virt ckts (have to clear new fields) X * X * Revision 1.9 1991/12/11 23:25:54 manchek X * moved procflags() (formerly psflg()) here from pvmd.c X * X * Revision 1.8 1991/12/09 17:48:26 manchek X * cleaned up stuff after endifs X * X * Revision 1.7 1991/11/27 20:28:00 manchek X * switch to instrumented malloc defines X * X * Revision 1.6 1991/07/24 16:40:13 manchek X * forgot to comment out debug line in isbarr() X * X * Revision 1.5 1991/06/25 02:07:27 manchek X * added barr_cmd() to display active barriers X * X * Revision 1.4 1991/06/04 20:41:42 manchek X * use of sizeof on sockaddr_un now even more retentive. X * X * Revision 1.3 1991/06/02 23:22:42 manchek X * change to sockaddr_un made sun_family a bit field - can't use sizeof X * X * Revision 1.2 1991/06/02 21:30:59 manchek X * fixed lpbname() - have to check lp_name for NULL X * X * Revision 1.1 1991/05/06 14:43:33 manchek X * Initial revision X * X * X */ X X#include X#include X#include X#ifndef NOUNIXSOC X#include X#endif X#include X#ifndef SYSVSTRING X#include X#else X#include X#endif X#include "global.h" X#include "proc.h" X#include "loclcomm.h" X char *sstring(); X lproc *lproclist = 0; /* local processes */ xproc *xproclist = 0; /* external processes */ xproc *lastxpl = 0; /* processes from last epoch */ X extern int myhost; /* from pvmd.c */ X int prcount = 0; /* total running processes only used in pvmd[0] */ X struct nlist *readies = 0; /* waituntil/ready events that have happend */ X lproc* get_lpp(pid) X int pid; X{ X lproc *lpp; X X for (lpp = lproclist; lpp; lpp = lpp->lp_next) X if (pid == lpp->lp_pid) X break; X return lpp; X} X lproc* mak_lpp(pid) X int pid; X{ X lproc *lpp; X X for (lpp = lproclist; lpp; lpp = lpp->lp_next) X if (pid == lpp->lp_pid) X break; X if (!lpp) { X lpp = tmalloc(1, lproc); X lpp->lp_name = 0; X lpp->lp_inum = -1; X lpp->lp_pid = pid; X lpp->lp_flg = PS_VNOK; X lpp->lp_iq = 0; X lpp->lp_iqtail = 0; X lpp->lp_bn = 0; X lpp->lp_bin = 0; X lpp->lp_next = lproclist; X#ifdef NOUNIXSOC X bzero((char*)&lpp->lp_sad, sizeof(struct sockaddr_in)); X lpp->lp_adlen = 0; X#else X lpp->lp_sad.sun_family = AF_UNIX; X (void)sprintf(lpp->lp_sad.sun_path, PTOUSOC, lpp->lp_pid); X lpp->lp_adlen = sizeof(lpp->lp_sad) X - sizeof(lpp->lp_sad.sun_path) X + strlen(lpp->lp_sad.sun_path); X#endif /*NOUNIXSOC*/ X bzero((char*)&lpp->lp_vad, sizeof(struct sockaddr_in)); X lproclist = lpp; X } X return lpp; X} X free_lpp(lpp) X lproc *lpp; X{ X imqbuf *iq, *iq2; X X if (lpp->lp_name) X m_free(lpp->lp_name); X if (lpp->lp_bn) X m_free(lpp->lp_bn); X for (iq = lpp->lp_iq; iq; iq = iq2) { X if (iq->iq_data) X m_free(iq->iq_data); X iq2 = iq->iq_next; X m_free(iq); X } X m_free(lpp); X} X die_lpp(lpp) X lproc *lpp; X{ X lproc **lpa; X X for (lpa = &lproclist; *lpa; lpa = &((*lpa)->lp_next)) { X if (*lpa == lpp) { X *lpa = lpp->lp_next; X#ifndef NOUNIXSOC X (void)unlink(lpp->lp_sad.sun_path); X#endif X free_lpp(lpp); X return; X } X } X} X add_xpp(newxpp) X xproc *newxpp; X{ X xproc *xpp; X X for (xpp = xproclist; xpp; xpp = xpp->xp_next) X if (newxpp->xp_inum == xpp->xp_inum X && !strcmp(newxpp->xp_name, xpp->xp_name)) { X free_xpp(newxpp); X return; X } X X newxpp->xp_next = xproclist; X xproclist = newxpp; X prcount++; X} X die_xpp(name, inum) X char *name; X int inum; X{ X xproc *xpp; X X if ((xpp = get_xpp(name, inum)) && xpp->xp_flg & PS_RUN) { X xpp->xp_flg &= ~PS_RUN; X xpp->xp_flg |= PS_EXIT; X if (!(--prcount)) { X if (myhost == 0) { X free_xpplist(lastxpl); X lastxpl = xproclist; X xproclist = 0; X new_epoch(); X } X } X } X} X int newinum(name) X char *name; X{ X int inum = 0; X xproc *xpp; X X for (xpp = xproclist; xpp; xpp = xpp->xp_next) X if (!strcmp(name, xpp->xp_name) && xpp->xp_inum >= inum) X inum = xpp->xp_inum + 1; X return inum; X} X free_xpplist(xpp) X xproc *xpp; X{ X xproc *xp2; X X while (xpp) { X xp2 = xpp->xp_next; X free_xpp(xpp); X xpp = xp2; X } X} X free_xpp(xpp) X xproc *xpp; X{ X if (xpp->xp_name) X m_free(xpp->xp_name); X m_free(xpp); X} X xproc* new_xpp() X{ X xproc *xpp; X X xpp = tmalloc(1, xproc); X xpp->xp_name = 0; X xpp->xp_inum = 0; X xpp->xp_host = 0; X xpp->xp_flg = 0; X bzero((char*)&xpp->xp_vad, sizeof(struct sockaddr_in)); X xpp->xp_next = 0; X return xpp; X} X xproc* get_xpp(name, inum) X char *name; X int inum; X{ X xproc *xpp; X X for (xpp = xproclist; xpp; xpp = xpp->xp_next) X if (xpp->xp_inum == inum X && !strcmp(xpp->xp_name, name)) X return xpp; X return (xproc*)0; X} X X/* locate() X* X* Find a process (name, instance) in local or remote proc tbl. X* Returns 0 if not found, X* 1 if found locally (and sets lpa) X* 2 if found remote (and sets xpa) X*/ X locate(name, inum, xpa, lpa) X char *name; X int inum; X xproc **xpa; X lproc **lpa; X{ X lproc *lpp; X xproc *xpp; X X for (lpp = lproclist; lpp; lpp = lpp->lp_next) X if ((lpp->lp_flg & PS_RUN) X && inum == lpp->lp_inum X && lpp->lp_name X && !strcmp(name, lpp->lp_name)) { X if (lpa) X *lpa = lpp; X return 1; X } X X for (xpp = xproclist; xpp; xpp = xpp->xp_next) X if ((xpp->xp_flg & PS_RUN) X && inum == xpp->xp_inum X && xpp->xp_name X && !strcmp(name, xpp->xp_name)) { X if (xpa) X *xpa = xpp; X return 2; X } X return 0; X} X X/* lpbname() X* X* Find local process by name. Return pointer to lproc struct. X* Takes proclist as arg to allow scanning the list. X* If arg == 0, starts at beginning of list. X*/ X lproc* lpbname(list, name) X lproc *list; X char *name; X{ X if (!list) X list = lproclist; X else X list = list->lp_next; X while (list && (!list->lp_name || strcmp(list->lp_name, name))) X list = list->lp_next; X return list; X} X X/* lppready() X* X* Notify any local procs that name has become ready X*/ X lppready(name) X char *name; X{ X lproc *lpp; X userm umh; X X for (lpp = lproclist; lpp; lpp = lpp->lp_next) { X if ((lpp->lp_flg & (PS_RUN|PS_WUW)) == (PS_RUN|PS_WUW) X && !strcmp(name, lpp->lp_bn)) { X lpp->lp_flg &= ~PS_WUW; X umh.um_flg = UF_ACK; X touser(lpp, &umh, sizeof(umh)); X } X } X} X struct nlist * new_nlist() X{ X struct nlist *nlp; X X if (nlp = tmalloc(1, struct nlist)) { X nlp->nl_name = 0; X nlp->nl_quorum = 0; X nlp->nl_got = 0; X nlp->nl_next = 0; X } X return nlp; X} X free_nlist(nlp) X struct nlist *nlp; X{ X if (nlp->nl_name) X m_free(nlp->nl_name); X m_free(nlp); X} X X/* isready() X* X* Set flag (name) to ready state; inform any local processes X* that are sleeping on the name. X*/ X isready(name) X char *name; X{ X struct nlist *nlp; X X if (!ckready(name)) { X nlp = new_nlist(); X nlp->nl_name = sstring(name); X nlp->nl_next = readies; X readies = nlp; X } X lppready(name); X} X X/* ckready() X* X* Check if (name) is in a ready state. Return 1 if ready, else 0. X*/ X ckready(name) X char *name; X{ X struct nlist *nlp; X X for (nlp = readies; nlp; nlp = nlp->nl_next) X if (nlp->nl_quorum == 0 && !strcmp(name, nlp->nl_name)) X return 1; X return 0; X} X X/* ckbarr() X* X* Check if barrier name exists, and return pointer, else NULL. X*/ X struct nlist * ckbarr(name) X char *name; X{ X struct nlist *nlp; X X for (nlp = readies; nlp; nlp = nlp->nl_next) X if (nlp->nl_quorum != 0 && !strcmp(name, nlp->nl_name)) X return nlp; X return (struct nlist*)0; X} X X/* isbarr() X* X* Increment has-reached cnt for barrier name, or create new barrier. X* Return 0 if okay, else 1 if quorum doesn't agree with already X* existing barrier. X*/ X isbarr(name, quo) X char *name; /* channel name */ X int quo; /* count to go at */ X{ X struct nlist *nlp; X int bad = 0; X X if (nlp = ckbarr(name)) { X if (nlp->nl_quorum != quo) X nlp->nl_got += nlp->nl_quorum; X if (++nlp->nl_got > nlp->nl_quorum) X bad = 1; X X } else { /* new barrier */ X nlp = new_nlist(); X nlp->nl_name = sstring(name); X nlp->nl_quorum = quo; X nlp->nl_got = 1; X nlp->nl_next = readies; X readies = nlp; X } X/* fprintf(stderr, "@@ isbarr(%s, %d) bad=%d @@\n", name, quo, bad); X*/ X if (bad || nlp->nl_got >= nlp->nl_quorum) X lppbarr(name, bad); X return 0; X} X X/* lppbarr() X* X* Notify any local procs that barrier has been met X*/ X lppbarr(name, bad) X char *name; X int bad; /* was a quorum mismatch */ X{ X lproc *lpp; X userm umh; X X for (lpp = lproclist; lpp; lpp = lpp->lp_next) { X if ((lpp->lp_flg & (PS_RUN|PS_BAW)) == (PS_RUN|PS_BAW) X && !strcmp(name, lpp->lp_bn)) { X lpp->lp_flg &= ~PS_BAW; X if (bad) X umh.um_flg = UF_ACK|UF_BQM; X else X umh.um_flg = UF_ACK; X touser(lpp, &umh, sizeof(umh)); X } X } X} X X/* barr_cmd() X* X* Show active readies and barriers. X*/ X barr_cmd(ac, av) X int ac; X char **av; X{ X struct nlist *nlp; X X fputs("Barriers: NAME NUM CNT\n", stderr); X for (nlp = readies; nlp; nlp = nlp->nl_next) X if (nlp->nl_quorum) X fprintf(stderr, "%16s %3d %3d\n", X nlp->nl_name, nlp->nl_quorum, nlp->nl_got); X X fputs("Readies: NAME\n", stderr); X for (nlp = readies; nlp; nlp = nlp->nl_next) X if (!nlp->nl_quorum) X fprintf(stderr, "%16s\n", nlp->nl_name); X} X static char *procflnames[] = { X "r", "x", "", "", "", "", "", "", X "c", "mw", "ww", "bw", "e", "d", "jd", "vw", "ul", X 0 X}; X X/* procflags() X* X* Convert process flags to text description. X*/ X char* procflags(f) X int f; X{ X static char buf[64]; X char **p; X int a = 0; X X (void)sprintf(buf, "%5x<", f); X for (p = procflnames; *p; p++) { X if (f & 1) { X if (a) X (void)strcat(buf, ","); X (void)strcat(buf, *p); X a = 1; X } X f >>= 1; X } X (void)strcat(buf, ">"); X return buf; X} X croak(lpp) X lproc *lpp; X{ X lpp->lp_flg &= ~PS_RUN; X lpp->lp_flg |= PS_EXIT; X X if (lpp->lp_name) { X die_bcast(lpp); X if (myhost == 0) X die_xpp(lpp->lp_name, lpp->lp_inum); X } X die_lpp(lpp); X} X END_OF_FILE if test 9954 -ne `wc -c <'pvm2.4/src/proc.c'`; then echo shar: \"'pvm2.4/src/proc.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/proc.c' fi if test -f 'pvm2.4/src/proc.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/proc.h'\" else echo shar: Extracting \"'pvm2.4/src/proc.h'\" \(2733 characters\) sed "s/^X//" >'pvm2.4/src/proc.h' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Proc.h X * X * Process list data definitions. X * X$Log: proc.h,v $ X * Revision 1.5 1992/01/17 18:34:53 manchek X * more compact proc listing format X * X * Revision 1.4 1992/01/07 01:33:22 manchek X * added new flag PS_VNOK. X * added format string for process listing X * X * Revision 1.3 1991/12/31 23:07:08 manchek X * added support for virt ckts (new proc fields) X * X * Revision 1.2 1991/12/11 23:26:19 manchek X * declaration for procflags() X * X * Revision 1.1 1991/05/06 14:43:58 manchek X * Initial revision X * X * X */ X X X#define PS_RUN 0x00001 /* process running */ X#define PS_EXIT 0x00002 /* process exited */ X#define PS_XFLGM 0x000ff /* External Flag Mask */ X#define PS_PWAIT 0x00100 /* process in pvmd wait */ X#define PS_MW 0x00200 /* process in message wait */ X#define PS_WUW 0x00400 /* process in waituntil() wait */ X#define PS_BAW 0x00800 /* process in barrier() wait */ X#define PS_EN 0x01000 /* process has enrolled */ X#define PS_DIED 0x02000 /* process has exit()ed */ X#define PS_FRESHLYDEAD 0x04000 /* pvmd just signaled of process exit */ X#define PS_VCW 0x08000 /* process in virt ckt addr wait */ X#define PS_VNOK 0x10000 /* process ulib version not ok */ X#define PS_LFLGM 0xfff00 /* Local Flag Mask */ X X/* Rxd messages for a process */ X typedef struct imqbuf { X int iq_length; X char *iq_data; X struct imqbuf *iq_next; X} imqbuf; X X/* About a local process */ X typedef struct lproc { X char *lp_name; /* name */ X int lp_inum; /* instance */ X int lp_flg; /* status */ X int lp_pid; /* pid */ X#ifdef NOUNIXSOC X struct sockaddr_in lp_sad; /* to-sock addr */ X#else X struct sockaddr_un lp_sad; /* to-sock addr */ X#endif X int lp_adlen; /* addr length */ X int lp_seqlast; /* current request seq num */ X imqbuf *lp_iq; /* rxd message q */ X imqbuf *lp_iqtail; /* rxd message q */ X char *lp_bn; /* barrier/ready name waiting on, or vc proc */ X int lp_bin; /* vc instance */ X struct sockaddr_in lp_vad; /* virt ckt addr */ X struct lproc *lp_next; X} lproc; X X/* About an external process */ X typedef struct xproc { X char *xp_name; /* name */ X int xp_inum; /* instance */ X int xp_flg; /* status */ X int xp_host; /* host process runs on */ X struct sockaddr_in xp_vad; /* virt ckt addr */ X struct xproc *xp_next; X} xproc; X X/* for inefficient name list storage */ X struct nlist { X char *nl_name; X int nl_quorum; X int nl_got; X struct nlist *nl_next; X}; X lproc *get_lpp(), *mak_lpp(), *lpbname(); xproc *new_xpp(), *get_xpp(); int app_xpp(); char *procflags(); X X/* format for ps listing */ X X#define PROC_FORMAT "%16s %4d %16s %s\n" X END_OF_FILE if test 2733 -ne `wc -c <'pvm2.4/src/proc.h'`; then echo shar: \"'pvm2.4/src/proc.h'\" unpacked with wrong size! fi # end of 'pvm2.4/src/proc.h' fi if test -f 'pvm2.4/src/putenv.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/putenv.c'\" else echo shar: Extracting \"'pvm2.4/src/putenv.c'\" \(1268 characters\) sed "s/^X//" >'pvm2.4/src/putenv.c' <<'END_OF_FILE' X extern char **environ; X X/* putenv() X* X* Replacement for systems that don't have it. X* Tries to be conservative, i.e. doesn't assume that environ X* points to malloc'd space. X*/ X int putenv(s) X char *s; /* string of form "NAME=Value" */ X{ X char *p; /* gp */ X int l; /* length of env var name or env */ X static char **myen = 0; /* last environ that i created */ X char **newen; /* new env if extending */ X char **ep, **ep2; /* gp */ X X /* sanity check the string and locate the '=' */ X X if (!s) X return -1; X for (p = s; *p && *p != '='; p++); X if (p == s || !*p) X return -1; X l = p - s; X X /* search current environ for name */ X X for (ep = environ; *ep; ep++) X if (!strncmp(*ep, s, l)) X break; X X if (*ep) { /* already there, replace it */ X *ep = s; X X } else { /* not there, must extend environ */ X X /* length needed is? */ X X for (l = 2, ep = environ; *ep; l++, ep++); X X if (environ == myen) { /* mine, reallocate */ X if (!(newen = (char**)realloc(environ, l * sizeof(char*)))) X return -1; X X } else { /* not mine, alloc new and copy */ X if (!(newen = (char**)malloc(l * sizeof(char*)))) X return -1; X for (ep = environ, ep2 = newen; *ep2++ = *ep++; ); X } X newen[l - 2] = s; X newen[l - 1] = 0; X environ = myen = newen; X } X return 0; X} X END_OF_FILE if test 1268 -ne `wc -c <'pvm2.4/src/putenv.c'`; then echo shar: \"'pvm2.4/src/putenv.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/putenv.c' fi if test -f 'pvm2.4/src/pvmd.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/pvmd.c'\" else echo shar: Extracting \"'pvm2.4/src/pvmd.c'\" \(34457 characters\) sed "s/^X//" >'pvm2.4/src/pvmd.c' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Pvmd.c X * X * PVM Daemon. X * X$Log: pvmd.c,v $ X * Revision 1.38 1992/12/23 01:13:49 manchek X * moved stdio include X * X * Revision 1.37 1992/12/16 07:09:55 manchek X * decrufted somewhat X * X * Revision 1.36 1992/12/16 06:34:36 manchek X * added a few casts for retentiveness X * X * Revision 1.35 1992/12/15 22:34:33 manchek X * conf now prints release version not protocol version X * X * Revision 1.34 1992/07/28 21:43:56 manchek X * shouldn't catch() INT, HUP, QUIT, TERM if already IGN'd X * X * Revision 1.33 1992/06/29 18:32:42 manchek X * cleaned up lint glarp with casts X * X * Revision 1.32 1992/05/28 18:00:40 manchek X * Added TITN ifdefs X * X * Revision 1.31 1992/03/18 19:05:41 manchek X * added global myndf which is local host data format code. X * archequiv.h was moved to archequiv.c, X * findnumarchs now uses getarchcode X * X * Revision 1.30 1992/01/31 16:44:31 manchek X * improved output format of stats() X * X * Revision 1.29 1992/01/30 19:01:40 manchek X * added '-o' flag to proc_cmd X * X * Revision 1.28 1992/01/21 22:33:52 manchek X * proc_cmd checks for nhosts==1 to delay cmd prompt X * X * Revision 1.27 1992/01/20 18:58:28 manchek X * searches h_epath for program components instead of just pvm/ARCH X * X * Revision 1.26 1992/01/19 04:53:51 manchek X * unused local var lpa in reset_cmd() X * X * Revision 1.25 1992/01/17 18:35:11 manchek X * more compact proc listing format. X * get_host() now matches to h_fname in addition to h_name X * X * Revision 1.24 1992/01/08 00:14:23 manchek X * lognam now set whether master or slave, so /tmp/ socket gets X * cleaned up. X * X * Revision 1.23 1992/01/07 01:33:49 manchek X * traded random code for croak(). X * use proc list format string from proc.h in proc_cmd() X * X * Revision 1.22 1991/12/31 23:14:28 manchek X * moved deliver() here, added vc_deliver() for virt ckt support. X * now removes socket in /tmp on exit X * X * Revision 1.21 1991/12/11 23:26:40 manchek X * modified proc_cmd() to query remote pvmds so we can get more info X * X * Revision 1.20 1991/12/11 17:12:51 manchek X * now don't have to set PVM_BC when using toall() X * X * Revision 1.19 1991/12/09 17:50:22 manchek X * cleaned up stuff after endifs X * X * Revision 1.18 1991/11/27 20:26:54 manchek X * switch to instrumented malloc defines X * X * Revision 1.17 1991/11/26 19:06:50 manchek X * moved slave starting stuff to 'start.c'. X * moved hostfile stuff to 'host.c'. X * X * Revision 1.16 1991/11/25 17:13:24 manchek X * made rsh path absolute (/usr/ucb). X * improved signal handling, added arg to reap() and catch(). X * added lread() function to read complete lines at slave startup. X * X * Revision 1.15 1991/09/06 21:30:09 manchek X * used nhosts instead of n in ldconfg() X * X * Revision 1.14 1991/09/06 17:49:59 manchek X * removed static limit on number of hosts. 'hosts' is now X * realloc'd when you need more than 'htlen' entries. X * zero out sockaddr_ins when allocating, bind sometimes failed. X * X * Revision 1.13 1991/08/01 19:36:56 manchek X * pvmds now do maximum message length negotiation at startup. X * slaves pass their maxxmlens to master, which passes back minimum X * value. X * X * Revision 1.12 1991/07/24 17:23:44 manchek X * added findnumarchs() to set narchs at startup time. X * X * Revision 1.11 1991/07/01 14:54:36 manchek X * 2 fixes (at fork()s) to close _all_ fds except 0-2. X * X * Revision 1.10 1991/06/04 20:40:55 manchek X * use of sizeof on sockaddr_un now even more retentive. X * X * Revision 1.9 1991/06/04 19:45:47 manchek X * cosmetic change to cfg_cmd() X * X * Revision 1.8 1991/06/04 19:37:48 manchek X * modified get_host() to take "." as "this host" X * X * Revision 1.7 1991/06/02 23:21:57 manchek X * change to sockaddr_un made sun_family a bit field - can't use sizeof X * X * Revision 1.6 1991/05/29 21:53:20 manchek X * added reset_cmd() X * X * Revision 1.5 1991/05/28 18:49:47 manchek X * added rsh startup capability, reconnect command, etc. X * made startup syntax more retentive. X * changed hostfile syntax- columns after first are per-host options. X * implicitly fixed arch-not-getting-to-slave-pvmds bug X * scrapped encrypted passwd stuff (at least for now). X * X * Revision 1.4 1991/05/09 15:29:25 manchek X * a few [nh]to[nh]s were missing in mksocs() and ldconfg() X * X * Revision 1.3 1991/05/07 19:36:25 manchek X * netwk UDP sock now binds to given ipaddr not IPADDR_ANY. this ensures X * that packets come from the correct host head. X * X * Revision 1.2 1991/05/06 17:14:37 manchek X * hostname/ip addr in master host file is now the definitive one X * (not loaded from slaves any longer) X * pvmds communicate and check version info at startup to ensure match X * X * Revision 1.1 1991/05/06 14:43:34 manchek X * Initial revision X * X * X */ X X#include X#ifndef IMA_TITN X#include X#else X#include X#endif X#include X#include X#include X#ifndef NOUNIXSOC X#include X#endif X#include X#ifndef IMA_CRAY X#include X#endif X#ifdef IMA_RIOS X#include X#endif X#include X#include X#include X#include X#include X#include X#ifndef SYSVSTRING X#include X#define CINDEX(s,c) index(s,c) X#else X#include X#define CINDEX(s,c) strchr(s,c) X#endif X#include X#ifdef FDSETPATCH X#include "fdsetpatch.h" X#endif X#ifdef IMA_CRAY X#include "craypatch.h" X#endif X#if defined(IMA_I860) || defined(IMA_IPSC) X#include "xenixpatch.h" X#endif X#ifdef IMA_TITN X#include "titanpatch.h" X#endif X#include "global.h" X#include "pvmd.h" X#include "micomm.h" X#include "rem.h" X#include "proc.h" X#include "wait.h" X#include "loclcomm.h" X#ifdef SUNOS3PATCH X#include "sunos3patch.h" X#endif X#if !defined(SYSVSIGNAL) && defined(SIGCLD) && !defined(SIGCHLD) X#define SYSVSIGNAL X#endif X X#define nextseq(h) \ X (++(h)->h_toseq > 30000 ? ((h)->h_toseq = -30000) : (h)->h_toseq) X#define incseq(i,j) ((j) > (i) || (j < 0 && i > 0)) X extern char *getenv(); X extern char *sstring(); extern long xtoi(); extern int ucall(); extern int fromnet(); extern int getarchcode(); void stats(), catch(); /* XXX for debugging */ void findnumarchs(); X extern int errno; X extern lproc *lproclist; /* from proc.c */ extern xproc *xproclist; /* from proc.c */ extern struct nlist *readies; /* from proc.c */ extern xproc *lastxpl; /* from proc.c */ extern waitc *waitlist; /* from wait.c */ X char *myarch = ARCHCLASS; X#ifdef NOUNIXSOC short cportno; /* client port if no unix sockets */ X#endif int nsock = -1; /* network UDP socket */ int usock = -1; /* unix local socket */ int csock = -1; /* to client processes */ pvmhost *hosts = 0; /* array of host descriptors */ int myhost = -1; /* my index in hosts */ int nhosts = 0; /* length of hosts */ int narchs = 0; /* number of diff archs */ char *homedir; /* home dir of user */ char **epaths; /* search path for execs */ int *spsocks; int epoch = 0; /* how many times all die- only used in pvmd[0] */ int undead = 0; /* flag children have just bailed */ int cmd_ready = 0; /* should (pvmd[0]) accept tty input */ int cmd_tilready = 0; /* events to go until cmd_ready */ char *lognam = 0; /* loginname of process uid */ int maxxmlen = DEFMAXXMLEN; /* max message length to use */ int htlen = 10; /* host table length */ int myndf = 0; /* my host native data format code */ X X/* bailout() X* X* Pvmd is leaving the scene. Waste any processes we know about that X* might be running. X*/ X bailout(es) X int es; X{ X lproc *lpp; X X for (lpp = lproclist; lpp; lpp = lpp->lp_next) { X (void)kill(lpp->lp_pid, SIGKILL); X#ifndef NOUNIXSOC X (void)unlink(lpp->lp_sad.sun_path); X#endif X } X if (lognam) { X char buf[128]; X X (void)sprintf(buf, UTOPSOC, lognam); X (void)unlink(buf); X } X exit(es); X} X X/* catch() X* X* Caught a terminate-like signal. Clean up and bail out. X*/ X void catch(sig) X int sig; X{ X fprintf(stderr, "catch: caught signal %d\n", sig); X stats(); X bailout(sig); X} X X/* evilsig() X* X* Caught a bad signal (like SEGV). Clean up and bail out. X*/ X void evilsig(sig) X int sig; X{ X (void)signal(SIGILL, SIG_DFL); X (void)signal(SIGFPE, SIG_DFL); X (void)signal(SIGBUS, SIG_DFL); X (void)signal(SIGSEGV, SIG_DFL); X (void)signal(SIGSYS, SIG_DFL); X fprintf(stderr, "evilsig: caught signal %d\n", sig); X stats(); X bailout(sig); X} X X/* reap() X* X* Child process has bailed out. Set its FRESHLYDEAD flag and also the X* global undead so main loop knows to cleanup. X*/ X void reap(sig) X int sig; X{ X int pid; X lproc *lpp; X X#ifndef SYSVSIGNAL X/* X while ((pid = wait3((union wait *)0, WNOHANG, (struct rusage *)0)) > 0) X*/ X while ((pid = wait3(0, WNOHANG, (struct rusage *)0)) > 0) X if (lpp = get_lpp(pid)) { X lpp->lp_flg |= PS_FRESHLYDEAD; X undead++; X } X#else X if ((pid = wait((int *)0)) > 0) X if (lpp = get_lpp(pid)) { X lpp->lp_flg |= PS_FRESHLYDEAD; X undead++; X } X (void)signal(SIGCLD, reap); X#endif X} X X/* strsepels() X* X* Break a string on a given character into one or more strings. X* Also do macro substitution on another character. X* Return array of strings, all in new malloc'd space. X* XXX gag, did I really have to write this? X*/ X char ** strsepels(s, bc, ms, mc) X char *s; /* the string to break up */ X char bc; /* the char to break on */ X char *ms; /* string to replace macro char */ X char mc; /* macro char */ X{ X char **sps; X int nel = 2; X char *p, *q, *r; X char buf[MAXPATHLEN]; X X for (p = s; p = CINDEX(p, bc); p++) X nel++; X/* X fprintf(stderr, "strsepels: sps is %d long\n", nel); X*/ X sps = tmalloc(nel, char*); X nel = 0; X for (p = s; p; p = q) { X if (q = CINDEX(p, bc)) X *q++ = 0; X for (r = buf; *p; p++) { X if (*p == mc) { X strcpy(r, ms); X r += strlen(r); X } else X *r++ = *p; X } X *r = 0; X/* X fprintf(stderr, "strsepels: sps[%d] = \"%s\"\n", nel, buf); X*/ X sps[nel++] = sstring(buf); X } X sps[nel] = 0; X return sps; X} X main(argc, argv) X int argc; X char **argv; X{ X char *hfn = 0; X char *p, **a; X int bad = 0; X struct passwd *pe; X int uid; X X for (a = argv + 1; *a; a++) { X if (*(p = *a) == '-') { X while (*++p) X switch (*p) { X case 'i': X cmd_ready = 1; X break; X default: X fprintf(stderr, "unknown switch: %c\n", *p); X bad++; X break; X } X } else { X if (hfn) { X fprintf(stderr, "extra arg: %s\n", p); X bad++; X } X hfn = p; X } X } X if (bad) X goto usage; X X if ((uid = getuid()) == -1) { X fputs("can't getuid()\n", stderr); X exit(1); X } X if (!(pe = getpwuid(uid))) { X fputs("can't getpwent()\n", stderr); X exit(1); X } X lognam = sstring(pe->pw_name); X endpwent(); X X if (argc < 2) { X ldconfg(); X findnumarchs(); X X } else { /* I am the master */ X if (!hfn) { X fputs("no hostfile specified\n", stderr); X goto usage; X } X hosts = tmalloc(htlen, pvmhost); X readhosts(hfn); X myhost = 0; X hosts[myhost].h_arch = sstring(myarch); X hosts[myhost].h_maxml = maxxmlen; X mksocs(); X slconfg(); X findnumarchs(); X fputs("pvm is ready.\n", stderr); X } X#ifdef DEBUG X if (myhost == 0) { X int i; X for (i = 0; i < nhosts; i++) { X fprintf(stderr, " %d <%s> <%s> 0x%08x:%d\n", X i, X hosts[i].h_name, X hosts[i].h_arch, X ntohl((u_long)hosts[i].h_adres.sin_addr.s_addr), X (u_long)(ntohs(hosts[i].h_adres.sin_port))); X } X } X#endif X X#ifndef SYSVSIGNAL X (void)signal(SIGCHLD, reap); X#else X (void)signal(SIGCLD, reap); X#endif X X if (cmd_ready) X (void)signal(SIGINT, SIG_IGN); X else X if (signal(SIGINT, SIG_IGN) != SIG_IGN) X (void)signal(SIGINT, catch); X if (signal(SIGHUP, SIG_IGN) != SIG_IGN) X (void)signal(SIGHUP, catch); X if (signal(SIGQUIT, SIG_IGN) != SIG_IGN) X (void)signal(SIGQUIT, catch); X if (signal(SIGTERM, SIG_IGN) != SIG_IGN) X (void)signal(SIGTERM, catch); X (void)signal(SIGILL, evilsig); X (void)signal(SIGFPE, evilsig); X (void)signal(SIGBUS, evilsig); X (void)signal(SIGSEGV, evilsig); X (void)signal(SIGSYS, evilsig); X X X if (!(homedir = getenv("HOME"))) X homedir = "/tmp"; X if (chdir(homedir) == -1) { X perror(homedir); X exit(1); X } X epaths = strsepels(hosts[myhost].h_epath, ':', hosts[myhost].h_arch, '%'); X X work(); X exit(0); X usage: X fputs("usage: pvmd [-i] [hostfile]\n", stderr); X exit(1); X} X X/* mksocs() X* X* Make X* usock (UNIX domain DGRAM socket for listening to clients), X* nsock (INET domain DGRAM socket for talking to other pvmds), X* csock (UNIX domain DGRAM socket for talking to clients). X* Needs X* hosts[], myhost X*/ X mksocs() X{ X struct sockaddr_in sin; X#ifdef NOUNIXSOC X char buf[128]; X int d; X#else X struct sockaddr_un usad; X int l; X#endif X#ifndef IMA_TITN X int bsz; X#endif X short portno; X X /* make pvmd network socket */ X if ((nsock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { X perror("socket"); X exit(1); X } X for (portno = IPPORT_USERRESERVED; portno < LASTPORT; portno++) { X bcopy((char*)&hosts[myhost].h_adres, (char*)&sin, sizeof(sin)); X sin.sin_port = htons(portno); X if (!bind(nsock, (struct sockaddr*)&sin, sizeof(sin))) X break; X } X if (portno >= LASTPORT) { X perror("bind nsock"); X exit(1); X } X hosts[myhost].h_adres.sin_port = htons((short)portno); X X /* make to/from client sockets */ X#ifdef NOUNIXSOC X if ((usock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { X perror("socket"); X exit(1); X } X for (cportno = portno + 1; cportno < LASTPORT; cportno++) { X sin.sin_family = AF_INET; X sin.sin_port = htons(cportno); X sin.sin_addr.s_addr = htonl(INADDR_ANY); X if (!bind(usock, (struct sockaddr*)&sin, sizeof(sin))) X break; X } X if (cportno >= LASTPORT) { X perror("bind usock"); X exit(1); X } X (void)sprintf(buf, UTOPSOC, lognam); X (void)unlink(buf); X if ((d = open(buf, O_CREAT|O_WRONLY|O_TRUNC, 0666)) == -1) { X perror(buf); X exit(1); X } X (void)sprintf(buf, "%d\n", 0xffff & cportno); X (void)write(d, buf, strlen(buf)); X (void)close(d); X csock = usock; X#else /*NOUNIXSOC*/ X usad.sun_family = AF_UNIX; X (void)sprintf(usad.sun_path, UTOPSOC, lognam); X (void)unlink(usad.sun_path); X X if ((usock = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) { X perror("socket"); X exit(1); X } X l = sizeof(usad) - sizeof(usad.sun_path) + strlen(usad.sun_path); X if (bind(usock, (struct sockaddr*)&usad, l) == -1) { X perror("bind usock"); X exit(1); X } X X if ((csock = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) { X perror("socket"); X exit(1); X } X#endif /*NOUNIXSOC*/ X X#ifndef IMA_TITN X bsz = maxxmlen * 2; X if (setsockopt(nsock, SOL_SOCKET, SO_SNDBUF, (char*)&bsz, sizeof(bsz)) == -1 X || setsockopt(nsock, SOL_SOCKET, SO_RCVBUF, (char*)&bsz, sizeof(bsz)) == -1 X || setsockopt(usock, SOL_SOCKET, SO_SNDBUF, (char*)&bsz, sizeof(bsz)) == -1 X || setsockopt(usock, SOL_SOCKET, SO_RCVBUF, (char*)&bsz, sizeof(bsz)) == -1 X || setsockopt(csock, SOL_SOCKET, SO_SNDBUF, (char*)&bsz, sizeof(bsz)) == -1 X || setsockopt(csock, SOL_SOCKET, SO_RCVBUF, (char*)&bsz, sizeof(bsz)) == -1) X { X perror("setsockopt"); X exit(1); X } X#endif /*IMA_TITN*/ X} X X/* work() X* X* The everything loop. X*/ X work() X{ X pvmhost *hp; X mqueue *mqp; X time_t now; X time_t tout; X struct timeval tv; X int dotmout; X fd_set rfds; X int nsel; X char *msg; /* incoming message buffer */ X struct sockaddr_in other; /* msg rcvd from */ X int addrlen; X int msglen; /* length of rx message */ X pvmg rhdr; /* rx msg descriptor */ X int seqn; /* rx sequence number */ X int root, base, step; /* for propagating bcasts */ X char *p; /* gp */ X#ifdef IMA_TITN X int nfds; /* highest fd in select set */ X#endif X X msg = tmalloc(maxxmlen, char); X if (myhost == 0 && cmd_ready) X write(1, "pvmd, ", 6); X X for (; ; ) { X X /* clean up after any children that have bailed out */ X /* XXX race here to reset undead. */ X X if (undead) { X dodied(); X undead = 0; X } X X /* retry any messages, get timeout till next */ X X tout = (now = time(0)) - 1; X for (hp = hosts; hp - hosts < nhosts; hp++) { X if (mqp = hp->h_mq) { X if (mqp->mq_at <= now) { X X /* discard message after too many retry */ X if (--mqp->mq_retry < 1) { X fprintf(stderr, X "retry exhausted, message dropped to <%s> seq=%d\n", X hp->h_name, mqp->mq_seq); X if (hp->h_mqtail == mqp) X hp->h_mq = hp->h_mqtail = 0; X else X hp->h_mq = mqp->mq_next; X/* XXX send mqp->mq_data->pm_waitc a fail message clean up mqp, etc */ X continue; X } X X fprintf(stderr, "resend to <%s> seq=%d, retry=%d\n", X hp->h_name, mqp->mq_seq, mqp->mq_retry); X X if (sendto(nsock, mqp->mq_data, mqp->mq_len, 0, X (struct sockaddr*)&hp->h_adres, sizeof(hp->h_adres)) X == -1) X perror("sendto"); X X mqp->mq_at += RETRYT; X } X if (mqp->mq_at > now X && (tout < now || mqp->mq_at < tout)) X tout = mqp->mq_at; X } X } X X /* select next message, timeout if retries pend */ X if (tout >= now) { X dotmout = 1; X tv.tv_sec = tout - now; X tv.tv_usec = 0; X } else X dotmout = 0; X X/* XXX the select set construction is not very efficient... */ X FD_ZERO(&rfds); X#ifdef IMA_TITN X nfds = 0; X#endif X X /* if master pvmd, add stdout streams of slaves for debugging */ X if (myhost == 0) { X int h; X for (h = 1; h < nhosts; h++) { X FD_SET(spsocks[h], &rfds); X#ifdef IMA_TITN X nfds = max(nfds, spsocks[h]); X#endif X } X X } X if (myhost != 0 || cmd_ready) X FD_SET(0, &rfds); X FD_SET(nsock, &rfds); X FD_SET(usock, &rfds); X#ifdef IMA_TITN X nfds = max(nfds, nsock); X nfds = max(nfds, usock); X nfds++; X#endif X X if ((nsel = select( X#ifndef IMA_TITN X FD_SETSIZE, X#else X nfds, X#endif X &rfds, (fd_set*)0, (fd_set*)0, X dotmout ? &tv : (struct timeval*)0)) X == -1) { X if (errno != EINTR) { X perror("select"); X exit(1); X } X continue; X } X X if (nsel > 0) { X X /* if master pvmd, pass debug info from slaves */ X X if (myhost == 0) { X int h; X char lbuf[512]; X int n; X char *cp, *cpl, *cpe; X X for (h = 1; h < nhosts; h++) X if (FD_ISSET(spsocks[h], &rfds)) X if ((n = read(spsocks[h], lbuf, sizeof(lbuf)-1)) > 0) { X cpe = &lbuf[n]; X for (cp = lbuf; cp < cpe; cp = cpl) { X for (cpl = cp; cpl < cpe && *cpl != '\n'; cpl++) X ; X fprintf(stderr, "pvmd@%s:", hosts[h].h_name); X *cpl++ = '\n'; X (void)write(2, cp, cpl - cp); X } X } else { X if (n == -1) { X sprintf(lbuf, "pvmd@%s", hosts[h].h_name); X perror(lbuf); X } else X fprintf(stderr, "pvmd@%s has exited!\n", X hosts[h].h_name); X bailout(1); X } X X } X X /* if slave, exit on any stdin; if master, accept commands */ X if (FD_ISSET(0, &rfds)) { X if (myhost == 0) { X cmd(); X } else { X fputs("slave pvmd exiting on master request\n", stderr); X bailout(0); X } X } X X if (FD_ISSET(nsock, &rfds)) { X addrlen = sizeof(other); X if ((msglen = recvfrom(nsock, msg, maxxmlen, X 0, (struct sockaddr*)&other, &addrlen)) == -1) { X perror("recvfrom"); X } X X else if (msglen >= PVM_HSIZ) { X X /* verify from a group host */ X for (hp = hosts; hp - hosts < nhosts; hp++) X if (other.sin_addr.s_addr X == hp->h_adres.sin_addr.s_addr X && other.sin_port == hp->h_adres.sin_port) X break; X X if (hp - hosts < nhosts ) { X /* unpack header */ X rhdr.pv_type = 0xff & msg[0]; X rhdr.pv_flg = 0xff & msg[1]; X rhdr.pv_root = (0xff00 & (msg[2] << 8)) X | (0xff & msg[3]); X p = msg + 4; X seqn = xupai(&p); X rhdr.pv_wchan = xupai(&p); X rhdr.pv_data = msg; X rhdr.pv_len = msglen; X X /* if ack, check our send queue */ X if (rhdr.pv_flg & PVM_ACK) { X if (hp->h_mq && hp->h_mq->mq_seq == seqn) { X mqp = hp->h_mq; X hp->h_mq = mqp->mq_next; X if (hp->h_mqtail == mqp) X hp->h_mqtail = 0; X m_free(mqp->mq_data); X if (mqp->mq_wait) X acktion(mqp->mq_wait); X m_free(mqp); X X /* if ack has exposed another message in q, send it */ X if (mqp = hp->h_mq) { X mqp->mq_retry = NRETRY; X mqp->mq_at = now + RETRYT; X if (sendto(nsock, X mqp->mq_data, mqp->mq_len, 0, X (struct sockaddr*)&hp->h_adres, X sizeof(hp->h_adres)) X == -1) X perror("sendto"); X } X } X X } else { X /* send ack */ X msg[1] |= PVM_ACK; X if (sendto(nsock, msg, PVM_HSIZ, 0, X (struct sockaddr*)&other, addrlen) == -1) X perror("sendto"); X X if (incseq(hp->h_seqlast, seqn)) { X hp->h_seqlast = seqn; X X if (rhdr.pv_flg & PVM_BC) { X /* propagate broadcast */ X root = rhdr.pv_root; X base = (myhost - root + nhosts) % nhosts; X step = (myhost - (hp - hosts) + nhosts) X % nhosts; X X for (step *= 2; base + step < nhosts; step += step) { X#ifdef DEBUG X fprintf(stderr, "BC root=%d pass to %d\n", root, (myhost + step) % nhosts); X#endif X tohost(&hosts[(myhost + step) % nhosts], X &rhdr, 1, (waitc*)0); X } X hp = &hosts[root]; X } X fromnet(hp, &rhdr); X } X } X } X } X } X X if (FD_ISSET(usock, &rfds)) { X addrlen = sizeof(other); X if ((msglen = recvfrom(usock, msg, maxxmlen, 0, X (struct sockaddr*)&other, &addrlen)) == -1) X perror("recvfrom"); X else X if (msglen >= sizeof(userm)) X#ifdef NOUNIXSOC X ucall((userm*)msg, msglen, &other); X#else X ucall((userm*)msg, msglen); X#endif X } X } X } X} X X/* acktion() X* X* This is called when an ack is received for a message packet and X* mq_wait was set. X*/ X acktion(wp) X waitc *wp; X{ X xproc *newxpp; X X switch(wp->w_what) { X X case WT_INUMRXD: /* can start advertising new */ X newxpp = (xproc*)wp->w_data; X newxpp->xp_flg |= PS_RUN; X break; X X default: X break; X } X m_free(wp); X} X X/* toall() X* X* Initiate broadcast of a message to all pvmds. X*/ X toall(thdr, copyit) X pvmg *thdr; X int copyit; X{ X int i; X X thdr->pv_root = myhost; X thdr->pv_flg |= PVM_BC; X for (i = 1; i < nhosts; i += i) X tohost(&hosts[(myhost + i) % nhosts], thdr, 1, (waitc*)0); X if (!copyit) X m_free(thdr->pv_data); X} X X/* tohost() X* X* Send a packet to another pvmd (or queue it). X* Short ckt to ourself if its for us; ideally this shouldn't happen X* but sometimes it makes the code easier. X*/ X tohost(hp, thdr, copyit, wp) X pvmhost *hp; X pvmg *thdr; X int copyit; X waitc *wp; /* action to take when acked */ X{ X mqueue *mqp; X char *p; X X if (hp - hosts == myhost) { X fromnet(hp, thdr); X if (!copyit) X m_free(thdr->pv_data); X if (wp) X acktion(wp); X X } else { X X /* allocate queue entry */ X mqp = tmalloc(1, mqueue); X if (copyit) { X mqp->mq_data = tmalloc(thdr->pv_len, char); X bcopy(thdr->pv_data, mqp->mq_data, thdr->pv_len); X } else { X mqp->mq_data = thdr->pv_data; X } X mqp->mq_len = thdr->pv_len; X mqp->mq_wait = wp; X mqp->mq_seq = nextseq(hp); X mqp->mq_next = 0; X X /* externalize header info */ X mqp->mq_data[0] = thdr->pv_type; X mqp->mq_data[1] = thdr->pv_flg; X mqp->mq_data[2] = thdr->pv_root >> 8; X mqp->mq_data[3] = thdr->pv_root; X p = mqp->mq_data + 4; X xpaci(&p, mqp->mq_seq); X xpaci(&p, thdr->pv_wchan); X X /* queue up and send if first in queue */ X if (hp->h_mqtail) { X hp->h_mqtail->mq_next = mqp; X hp->h_mqtail = mqp; X X } else { X hp->h_mq = hp->h_mqtail = mqp; X mqp->mq_retry = NRETRY; X mqp->mq_at = time(0) + RETRYT; X if (sendto(nsock, mqp->mq_data, mqp->mq_len, 0, X (struct sockaddr*)&hp->h_adres, sizeof(hp->h_adres)) == -1) X perror("sendto"); X } X } X} X X/* touser() X* X* Send packet to one of our processes. X*/ X touser(lpp, hdr, msglen) X lproc *lpp; X userm *hdr; X int msglen; X{ X int e; X int retry = 5; X X hdr->um_pid = 0; X hdr->um_type = 0; X hdr->um_seq = lpp->lp_seqlast; X do { X e = sendto(csock, (char*)hdr, msglen, 0, X (struct sockaddr*)&lpp->lp_sad, lpp->lp_adlen); X if (e == -1) { X perror("sendto"); X sleep(1); X } X } while (e == -1 && --retry > 0); X X lpp->lp_flg &= ~PS_PWAIT; X X /* XXX danger, can't really remove the lproc here because we X XXX may rip it out from under something. should mark it X XXX freshly dead and let work() handle things */ X if (e == -1) X croak(lpp); X} X X/* die_bcast() X* X* Broadcast end of process message to all pvmds. X*/ X die_bcast(lpp) X lproc *lpp; X{ X pvmg thdr; X int namlen = strlen(lpp->lp_name) + 1; X char *p; X X thdr.pv_len = PVM_HSIZ + XLADJ(namlen) + PVM_INT; X thdr.pv_data = tmalloc(thdr.pv_len, char); X thdr.pv_type = PVM_XNOTIFY; X thdr.pv_flg = 0; X thdr.pv_wchan = 0; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, lpp->lp_name); X xpaci(&p, lpp->lp_inum); X toall(&thdr, 0); X} X X/* start() X* X* Search directories in 'epaths' for given file. X* Clean up any files we opened, fork and exec the named process. X* Leave std{out,err} open so the process can whine if it needs to. X* Return the pid (or -1 if error). X*/ X start(name) X char *name; X{ X int pid; X struct stat sb; X int h; X char **epp; X char exepath[MAXPATHLEN]; X X for (epp = epaths; *epp; epp++) { X/* XXX should be a strncat or something */ X (void)strcpy(exepath, *epp); X (void)strcat(exepath, "/"); X (void)strcat(exepath, name); X X#ifdef DEBUG X fprintf(stderr, "forkexec <%s>\n", exepath); X#endif X if (stat(exepath, &sb) == -1 X || ((sb.st_mode & S_IFMT) != S_IFREG) X || !(sb.st_mode & S_IEXEC)) X continue; X if (!(pid = fork())) { X X /* close any random fds */ X X for (h = getdtablesize(); --h > 2; ) X (void)close(h); X X execl(exepath, exepath, (char*)0); X exit(-1); X } X return pid; X } X return -1; X} X X/* new_epoch() X* X* Force reset of proclists, barriers, etc. from pvmd[0]. X*/ X new_epoch() X{ X struct nlist *nlp, *nlp2; X lproc *lpp, *lpp2; X X epoch++; X X free_xpplist(xproclist); X xproclist = 0; X for (lpp = lproclist; lpp; lpp = lpp2) { X lpp2 = lpp->lp_next; X free_lpp(lpp); X } X lproclist = 0; X for (nlp = readies; nlp; nlp = nlp2) { X nlp2 = nlp->nl_next; X free_nlist(nlp); X } X readies = 0; X X if (myhost == 0) { X pvmg thdr; X X thdr.pv_data = tmalloc(thdr.pv_len = PVM_HSIZ, char); X thdr.pv_type = PVM_EPOCH; X thdr.pv_flg = 0; X toall(&thdr, 0); X fprintf(stderr, "New epoch %d\n", epoch); X } X} X X/* dodied() X* X* Clean up after child processes that have died. X*/ X dodied() X{ X lproc *lpp; X X for (lpp = lproclist; lpp; lpp = lpp->lp_next) { X X if (lpp->lp_flg & PS_FRESHLYDEAD) { X lpp->lp_flg &= ~PS_FRESHLYDEAD; X croak(lpp); X } X } X} X X/* get_host() X* X* Get host number by name from our host table. X* Name can match long name or first element. X* "." means the current host. X*/ X get_host(host) X char *host; X{ X int i; X X if (host && host[0] == '.' && !host[1]) X return myhost; X for (i = 0; i < nhosts; i++) X if (!strcmp(host, hosts[i].h_name)) X return i; X for (i = 0; i < nhosts; i++) X if (!strcmp(host, hosts[i].h_fname)) X return i; X return -1; X} X X/* isarch() X* X* Return whether any hosts of specified arch are in the club. X*/ X isarch(arch) X char *arch; X{ X int i; X X for (i = 0; i < nhosts; i++) X if (!strcmp(arch, hosts[i].h_arch)) X return 1; X return 0; X} X X/* proc_cmd() X* X* Print current processes command. X*/ X proc_cmd(ac, av) X int ac; X char **av; X{ X pvmg thdr; X xproc *xp; X X if (ac == 2 && !strcmp(av[1], "-o")) { X fputs(" NAME INUM HOST FLAGS\n", stderr); X for (xp = lastxpl; xp; xp = xp->xp_next) X if (xp->xp_flg & PS_EXIT) X fprintf(stderr, PROC_FORMAT, X xp->xp_name ? xp->xp_name : "?", X xp->xp_inum, X hosts[xp->xp_host].h_fname, X procflags(xp->xp_flg)); X return; X } X X /* shut of prompt until all hosts check back in */ X X if (nhosts > 1) { X cmd_ready = 0; X cmd_tilready = nhosts; X } X X /* print header and dead processes since they go away from X lproclist */ X X fputs(" NAME INUM HOST FLAGS\n", stderr); X for (xp = xproclist; xp; xp = xp->xp_next) X if (xp->xp_flg & PS_EXIT) X fprintf(stderr, PROC_FORMAT, X xp->xp_name ? xp->xp_name : "?", X xp->xp_inum, X hosts[xp->xp_host].h_fname, X procflags(xp->xp_flg)); X X /* broadcast query to all pvmds */ X X thdr.pv_len = PVM_HSIZ; X thdr.pv_data = tmalloc(thdr.pv_len, char); X thdr.pv_type = PVM_PS; X thdr.pv_flg = 0; X thdr.pv_wchan = 0; X tohost(&hosts[myhost], &thdr, 1, (waitc*)0); X toall(&thdr, 0); X} X X char * ipadstr(a) X struct in_addr a; X{ X u_long n; X static char buf[16]; X X n = ntohl(0xffffffff & a.s_addr); X sprintf(buf, "%d.%d.%d.%d", X (n >> 24) & 0xff, X (n >> 16) & 0xff, X (n >> 8) & 0xff, X n & 0xff); X return buf; X} X X/* cfg_cmd() X* X* Print pvmd/host configuration command. X*/ X cfg_cmd() X{ X int i; X X fprintf(stderr, "Version=%s Ulib=%s\n", PVM_RELVERSION, PVM_RELUVERS); X fprintf(stderr, "Max Frag Length=%d Do Msg Enc=%s\n", X maxxmlen, (narchs > 1 ? "true" : "false")); X fputs( X"\n # HOST ARCH ADDR PORT MAXML\n", X stderr); X for (i = 0; i < nhosts; i++) X fprintf(stderr, "%2d %32s %8s %15s %5d %5d\n", X i, X hosts[i].h_name, X hosts[i].h_arch, X ipadstr(hosts[i].h_adres.sin_addr), X (int)ntohs(hosts[i].h_adres.sin_port), X hosts[i].h_maxml X ); X} X kill_cmd(ac, av) X int ac; X char **av; X{ X xproc *xpa; X lproc *lpa; X pvmhost *hp; X char *name = av[1]; X int inum = atoi(av[2]); X int namlen; X pvmg thdr; X char *p; X X switch (locate(name, inum, &xpa, &lpa)) { X X case 1: /* it's local */ X hp = &hosts[myhost]; X goto send; X break; X X case 2: /* it's remote */ X hp = &hosts[xpa->xp_host]; send: X namlen = strlen(name) + 1; X thdr.pv_data = tmalloc(thdr.pv_len = PVM_HSIZ + XLADJ(namlen) + PVM_INT, X char); X thdr.pv_type = PVM_TERM; X thdr.pv_flg = 0; X thdr.pv_wchan = 0; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, name); X xpaci(&p, inum); X tohost(hp, &thdr, 0, (waitc*)0); X break; X X default: X fputs("no such process\n", stderr); X break; X } X} X reset_cmd(ac, av) X int ac; X char **av; X{ X xproc *xpp; X int namlen; X pvmg thdr; X char *p; X X for (xpp = xproclist; xpp; xpp = xpp->xp_next) X if (xpp->xp_flg & PS_RUN) { X X namlen = strlen(xpp->xp_name) + 1; X thdr.pv_data = tmalloc(thdr.pv_len = X PVM_HSIZ + XLADJ(namlen) + PVM_INT, char); X thdr.pv_type = PVM_TERM; X thdr.pv_flg = 0; X thdr.pv_wchan = 0; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, xpp->xp_name); X xpaci(&p, xpp->xp_inum); X tohost(&hosts[xpp->xp_host], &thdr, 0, (waitc*)0); X } X} X X/* findnumarchs() X* X* Count the number of architecture classes in the virtual machine X* host pool. Sets globals narchs and myndf. X*/ X void findnumarchs() X{ X int i, j; X unsigned long mask = 0, tmpmask; X X myndf = getarchcode(hosts[myhost].h_arch); X narchs = 0; X for (i = 0; i < nhosts; i++) { X j = getarchcode(hosts[i].h_arch); X tmpmask = (1 << j); X if (tmpmask & ~mask) X narchs++; X mask |= tmpmask; X } X} X is_cmd_rdy() X{ X if (cmd_tilready > 0 X && !--cmd_tilready) { X cmd_ready = 1; X write(1, "pvmd, ", 6); X } X} X X/* deliver() X* X* Deliver message to process. If process is in mwait, send it the X* message directly, else queue it. X*/ X deliver(lpp, frname, frinum, data, len) X lproc *lpp; X char *frname; X int frinum; X char *data; X int len; X{ X int frnaml; X int ublen; X char *ubuf; X char *q; X X if (lpp->lp_flg & PS_RUN) { X frnaml = strlen(frname) + 1; X ublen = LLADJ(frnaml) + sizeof(int) + sizeof(userm) + len; X ubuf = tmalloc(ublen, char); X q = um_data(ubuf); X X lpacs(&q, frname, frnaml); X lpaci(&q, frinum); X bcopy(data, q, len); X X /* if proc has PS_MW set, pass message right to it */ X X if (lpp->lp_flg & PS_MW) { X userm *ruhdr = (userm*)ubuf; X X ruhdr->um_flg = UF_ACK; X touser(lpp, ruhdr, ublen); X lpp->lp_flg &= ~PS_MW; X m_free(ubuf); X X /* else queue it */ X X } else { X X imqbuf *newimq = tmalloc(1, imqbuf); X X newimq->iq_length = ublen; X newimq->iq_next = 0; X newimq->iq_data = ubuf; X X if (lpp->lp_iqtail) X lpp->lp_iqtail->iq_next = newimq; X else X lpp->lp_iq = newimq; X lpp->lp_iqtail = newimq; X } X X } else { /* XXX uh, oh - bury it quietly */ X } X} X X/* deliver_vc() X* X* Scan local procs and wake up any waiting on this virt ckt addr we have. X*/ X deliver_vc(name, inum, sad) X char *name; X int inum; X struct sockaddr_in *sad; X{ X lproc *lpp; X userm *uhdr; X X/* X int theaddr = ntohl(0xffffffff & sad->sin_addr.s_addr); X int theport = 0xffff & ntohs(sad->sin_port); X X fprintf(stderr, "deliver_vc(%s, %d, 0x%08x, %d)\n", X name, inum, theaddr, theport); X*/ X for (lpp = lproclist; lpp; lpp = lpp->lp_next) { X if ((lpp->lp_flg & PS_VCW) X && lpp->lp_bin == inum X && !strcmp(lpp->lp_bn, name)) { X uhdr = (userm*)m_malloc(sizeof(userm) + sizeof(struct sockaddr_in)); X uhdr->um_flg = UF_ACK; X bcopy((char*)sad, um_data(uhdr), sizeof(struct sockaddr_in)); X touser(lpp, uhdr, sizeof(*uhdr) + sizeof(struct sockaddr_in)); X m_free(uhdr); X lpp->lp_flg &= ~PS_VCW; X } X } X} X X/************************************* X* XXX Stuff below is for debugging * X*************************************/ X hdump(p, n) X char *p; X int n; X{ X int i; X for (i = 0; i < n; i++) X fprintf(stderr, "%02x%s", 0xff & (int)p[i], X (i < n - 1) ? (((i & 15) == 15) ? "\n" : " ") : "\n"); X} X void stats() X{ X lproc *lp; X xproc *xp; X waitc *wp; X int i; X imqbuf *imq; X struct nlist *nlp; X int theport; X X fputs("hosts:\n", stderr); X fputs( X" # HOST ARCH ADDR PORT MAXML\n", X stderr); X for (i = 0; i < nhosts; i++) X fprintf(stderr, "%2d%c%32s %8s %15s %5d %5d\n", X i, X (i == myhost ? '*' : ' '), X hosts[i].h_name, X hosts[i].h_arch, X ipadstr(hosts[i].h_adres.sin_addr), X (int)ntohs(hosts[i].h_adres.sin_port), X hosts[i].h_maxml X ); X fputs("lprocs:\n", stderr); X for (lp = lproclist; lp; lp = lp->lp_next) { X theport = 0xffff & ntohs(lp->lp_vad.sin_port); X fprintf(stderr, "0x%08x <%s,%d> pid %d flg=%s vc port=%d\n", X lp, X lp->lp_name ? lp->lp_name : "?", X lp->lp_inum, X lp->lp_pid, X procflags(lp->lp_flg), X theport); X if (lp->lp_iq) X fputs(" messages:\n", stderr); X for (imq = lp->lp_iq; imq; imq = imq->iq_next) X fprintf(stderr, " %s%d bytes\n", X (imq == lp->lp_iqtail) ? "*" : "", X imq->iq_length); X } X fputs("xprocs:\n", stderr); X for (xp = xproclist; xp; xp = xp->xp_next) X fprintf(stderr, "0x%08x <%s,%d>@%s flg=%s\n", X xp, X xp->xp_name ? xp->xp_name : "?", X xp->xp_inum, X hosts[xp->xp_host].h_name, X procflags(xp->xp_flg)); X X fputs("waits:\n", stderr); X for (wp = waitlist; wp; wp = wp->w_next) X fprintf(stderr, "0x%08x #%d type %d\n", X wp, X wp->w_serial, X wp->w_what); X fputs("readies:\n", stderr); X for (nlp = readies; nlp; nlp = nlp->nl_next) X if (nlp->nl_quorum == 0) X fprintf(stderr, "<%s>\n", nlp->nl_name); X fputs("barriers:\n", stderr); X for (nlp = readies; nlp; nlp = nlp->nl_next) X if (nlp->nl_quorum != 0) X fprintf(stderr, "<%s> q=%d r=%d\n", X nlp->nl_name, nlp->nl_quorum, nlp->nl_got); X} X END_OF_FILE if test 34457 -ne `wc -c <'pvm2.4/src/pvmd.c'`; then echo shar: \"'pvm2.4/src/pvmd.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/pvmd.c' fi if test -f 'pvm2.4/src/pvmd.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/pvmd.h'\" else echo shar: Extracting \"'pvm2.4/src/pvmd.h'\" \(1985 characters\) sed "s/^X//" >'pvm2.4/src/pvmd.h' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Pvmd.h X * X * Defines for pvmd.c X * X$Log: pvmd.h,v $ X * Revision 1.6 1992/01/20 18:57:24 manchek X * added h_epath field to host entry X * X * Revision 1.5 1992/01/19 04:55:02 manchek X * old EDITOR define ripped out X * X * Revision 1.4 1992/01/17 18:33:55 manchek X * added h_fname field for short hostname X * X * Revision 1.3 1991/07/31 17:29:05 manchek X * added h_maxml field for message length negotiation X * X * Revision 1.2 1991/05/28 18:54:50 manchek X * ripped encrypted passwd stuff (at least for now). X * X * Revision 1.1 1991/05/06 14:43:58 manchek X * Initial revision X * X * X */ X X#define PVMDFILE "/tmp/pvm/pvmd" /* location of pvmd executable */ X struct imqbuf; struct lproc; struct mqueue; struct pvmhost; struct waitc; struct xproc; X X/* About a host */ X typedef struct pvmhost { X char *h_name; /* name */ X char *h_fname; /* short name (first el) */ X char *h_arch; /* processor arch class */ X char *h_login; /* loginname */ X char *h_daemon; /* daemon executable */ X char *h_epath; /* executable search path */ X int h_maxml; /* max UDP message length */ X int h_flags; X struct sockaddr_in h_adres; /* address/port */ X int h_seqlast; /* last rcvd message seqnum */ X int h_toseq; /* xmit sequence counter */ X struct mqueue *h_mq; /* message queue to host */ X struct mqueue *h_mqtail; /* tail of mq */ X} pvmhost; X X#define H_ASK_PW 1 /* ask for password at startup */ X X/* Outgoing message queue */ X typedef struct mqueue { X int mq_seq; /* sequence number */ X int mq_retry; /* retry countdown */ X time_t mq_at; /* retry when */ X char *mq_data; /* the message */ X int mq_len; /* length */ X struct waitc *mq_wait; /* action waiting on message delivery */ X struct mqueue *mq_next; X} mqueue; X X#ifndef max X#define max(a,b) (((a)>(b))?(a):(b)) X#endif X X#ifndef min X#define min(a,b) (((a)<(b))?(a):(b)) X#endif X END_OF_FILE if test 1985 -ne `wc -c <'pvm2.4/src/pvmd.h'`; then echo shar: \"'pvm2.4/src/pvmd.h'\" unpacked with wrong size! fi # end of 'pvm2.4/src/pvmd.h' fi if test -f 'pvm2.4/src/pvmuser.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/pvmuser.h'\" else echo shar: Extracting \"'pvm2.4/src/pvmuser.h'\" \(4266 characters\) sed "s/^X//" >'pvm2.4/src/pvmuser.h' <<'END_OF_FILE' X/* X * PVM 2.4 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 31 Dec 1991 X * X * Pvmuser.h X * X * Interface defines for libpvm. X * X$Log: pvmuser.h,v $ X * Revision 1.8 1992/05/21 18:37:43 manchek X * added check for multiple include. X * added extern "C" declaration for C++ X * X * Revision 1.7 1992/03/18 19:07:53 manchek X * added decl for pvm_inithow() and defs for PvmDataDefault and Raw. X * added def for PvmBadMsg for rcv and variants X * X * Revision 1.6 1992/03/16 19:11:49 manchek X * added pvm_mstat and pvm_perror prototypes X * X * Revision 1.5 1992/03/12 22:04:50 manchek X * added (void) to prototypes for initsend and leave X * to indicate no args X * X * Revision 1.4 1992/01/24 19:20:41 manchek X * changed PvmSyserr to PvmSysErr X * X * Revision 1.3 1992/01/23 23:23:28 manchek X * added PvmAlready error code X * X * Revision 1.2 1992/01/22 00:53:22 manchek X * added function definitions/prototypes X * X * Revision 1.1 1991/12/31 23:16:36 manchek X * Initial revision X * X * X */ X X#ifndef PvmOk X X/* X* Error return codes from libpvm calls X*/ X X#define PvmOk 0 /* okay */ X#define PvmSysErr -1 /* some system error */ X#define PvmBadParam -2 /* bad parameter (neg msg id, etc) */ X#define PvmMismatch -3 /* barrier count mismatch */ X#define PvmTooLong -4 /* name too long (32) */ X#define PvmNoData -5 /* read past end of buffer */ X#define PvmNoHost -6 /* no such host */ X#define PvmNoFile -7 /* no such executable */ X#define PvmNoComp -8 /* no such process component */ X#define PvmNoMsg -9 /* no message available */ X#define PvmNoMem -10 /* can't get memory */ X#define PvmAlready -11 /* process already enrolled */ X#define PvmBadMsg -12 /* received msg can't be decoded */ X X/* X* Data conversion options for pvm_inithow X*/ X X#define PvmDataDefault 0 /* use LCD algorithm */ X#define PvmDataRaw 1 /* do no data conversion */ X X#ifdef __ProtoGlarp__ X#undef __ProtoGlarp__ X#endif X#if defined(__STDC__) || defined(__cplusplus) X#define __ProtoGlarp__(x) x X#else X#define __ProtoGlarp__(x) () X#endif X X#ifdef __cplusplus extern "C" { X#endif X int barrier __ProtoGlarp__((char *name, int num)); int enroll __ProtoGlarp__((char *proc)); int getbytes __ProtoGlarp__((char *cp, int n)); int getncplx __ProtoGlarp__((float *xp, int n)); int getndcplx __ProtoGlarp__((double *zp, int n)); int getndfloat __ProtoGlarp__((double *dp, int n)); int getnfloat __ProtoGlarp__((float *fp, int n)); int getnint __ProtoGlarp__((int *np, int n)); int getnlong __ProtoGlarp__((long *np, int n)); int getnshort __ProtoGlarp__((short *np, int n)); int getstring __ProtoGlarp__((char *cp)); int initiate __ProtoGlarp__((char *proc, char *arch)); int initiateM __ProtoGlarp__((char *proc, char *host)); void initsend __ProtoGlarp__((void)); int pvm_inithow __ProtoGlarp__((int how)); void leave __ProtoGlarp__((void)); int pvm_mstat __ProtoGlarp__((int *na, int **hsa, char*** hna, char*** haa)); void pvm_perror __ProtoGlarp__((char *s)); int probe __ProtoGlarp__((int mt)); int probemulti __ProtoGlarp__((int ntypes, int *mta)); int pstatus __ProtoGlarp__((int *ncpu, int *mixed)); int putbytes __ProtoGlarp__((char *cp, int n)); int putncplx __ProtoGlarp__((float *xp, int n)); int putndcplx __ProtoGlarp__((double *zp, int n)); int putndfloat __ProtoGlarp__((double *dp, int n)); int putnfloat __ProtoGlarp__((float *fp, int n)); int putnint __ProtoGlarp__((int *np, int n)); int putnlong __ProtoGlarp__((long *np, int n)); int putnshort __ProtoGlarp__((short *np, int n)); int putstring __ProtoGlarp__((char *cp)); int rcv __ProtoGlarp__((int mt)); int rcvinfo __ProtoGlarp__((int *len, int *mt, char *proc, int *inst)); int rcvmulti __ProtoGlarp__((int ntypes, int *mta)); int ready __ProtoGlarp__((char *event)); int snd __ProtoGlarp__((char *proc, int inst, int mt)); int status __ProtoGlarp__((char *proc, int inst)); int terminate __ProtoGlarp__((char *proc, int inst)); int vrcv __ProtoGlarp__((int mt)); int vrcvmulti __ProtoGlarp__((int ntypes, int *mta)); int vsnd __ProtoGlarp__((char *proc, int inst, int mt)); int waituntil __ProtoGlarp__((char *event)); int whoami __ProtoGlarp__((char *proc, int *inst)); X X#ifdef __cplusplus X} X#endif X X#endif /*PvmOk*/ X END_OF_FILE if test 4266 -ne `wc -c <'pvm2.4/src/pvmuser.h'`; then echo shar: \"'pvm2.4/src/pvmuser.h'\" unpacked with wrong size! fi # end of 'pvm2.4/src/pvmuser.h' fi if test -f 'pvm2.4/src/rem.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/rem.h'\" else echo shar: Extracting \"'pvm2.4/src/rem.h'\" \(1874 characters\) sed "s/^X//" >'pvm2.4/src/rem.h' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Rem.h X * X * Defines for inter-pvmd message headers. X * X$Log: rem.h,v $ X * Revision 1.3 1991/12/31 23:18:39 manchek X * added message types to support virt ckts X * X * Revision 1.2 1991/12/11 23:24:51 manchek X * added PVM_PS, PVM_PSACK message classes X * X * Revision 1.1 1991/05/06 14:43:58 manchek X * Initial revision X * X * X */ X X#define RETRYT 4 /* seconds between message retry */ X#define NRETRY 10 /* max retries */ X X/* Message flags */ X X#define PVM_ACK 0x01 /* ack message */ X#define PVM_BC 0x02 /* broadcast message */ X X/* pvmd<->pvmd message types */ X X#define PVM_USERMSG 1 /* user message */ X#define PVM_INUMGET 2 /* request inum */ X#define PVM_INUMACK 3 /* reply to inum */ X#define PVM_INOTIFY 4 /* notify of proc creat */ X#define PVM_XNOTIFY 5 /* notify of proc exit */ X#define PVM_ISPROC 6 /* query status/location of proc */ X#define PVM_LOCATE 7 /* return status/location of proc */ X#define PVM_INIT 8 /* initiate a process */ X#define PVM_HOSTGET 9 /* get host to send initiate to */ X#define PVM_HOSTACK 10 /* host to send initiate to */ X#define PVM_READY 11 /* user ready() signal */ X#define PVM_EPOCH 12 /* signal from pvmd[0] to reset procs, barriers */ X#define PVM_TERM 13 /* terminate process */ X#define PVM_BARRIER 14 /* user barrier() signal */ X#define PVM_PS 15 /* proc list req */ X#define PVM_PSACK 16 /* proc list ack */ X#define PVM_CNT 17 /* count inst of proc */ X#define PVM_CNTACK 18 /* reply to CNT */ X#define PVM_VCNOT 19 /* announce virt ckt addr */ X X#define PVM_HSIZ 12 /* size of message header */ X X/* Internal-format pvmd<->pvmd message header - not actually sent */ X typedef struct pvmg { X int pv_type; X int pv_flg; X int pv_root; X int pv_wchan; X int pv_len; X char *pv_data; X} pvmg; X END_OF_FILE if test 1874 -ne `wc -c <'pvm2.4/src/rem.h'`; then echo shar: \"'pvm2.4/src/rem.h'\" unpacked with wrong size! fi # end of 'pvm2.4/src/rem.h' fi if test -f 'pvm2.4/src/startup.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/startup.c'\" else echo shar: Extracting \"'pvm2.4/src/startup.c'\" \(16242 characters\) sed "s/^X//" >'pvm2.4/src/startup.c' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Startup.c X * X * Remote pvmd exec stuff. X * X$Log: startup.c,v $ X * Revision 1.10 1992/12/16 06:36:19 manchek X * added a few casts for retentiveness X * X * Revision 1.9 1992/06/29 18:33:08 manchek X * ifdefd out rexec() for I386. X * cleaned up lint glarp with casts X * X * Revision 1.8 1992/05/28 18:08:17 manchek X * Added TITN ifdefs X * X * Revision 1.7 1992/01/31 16:44:46 manchek X * added maxxmlen sanity check (< 200) at config time X * X * Revision 1.6 1992/01/20 18:58:13 manchek X * passes h_epath info to slave pvmds X * X * Revision 1.5 1992/01/17 18:34:44 manchek X * sets h_fname field to first element of hostname X * X * Revision 1.4 1992/01/08 00:14:56 manchek X * needed to bzero new sockaddrs in ldconfg() X * X * Revision 1.3 1991/12/03 21:22:59 manchek X * RSHCOMMAND defaults to /usr/ucb/rsh, can define custom string X * X * Revision 1.2 1991/12/01 18:18:10 manchek X * now pvmds use stdout instead of stderr at startup. stderr from the X * slave pvmd is passed to the master pvmd stderr, but otherwise X * ignored. X * X * Revision 1.1 1991/11/26 21:40:03 manchek X * Initial revision X * X * Revision 1.1 1991/11/26 19:07:24 manchek X * Initial revision X * X * X */ X X#include X#ifndef IMA_TITN X#include X#else X#include X#endif X#include X#include X#include X#ifndef IMA_CRAY X#include X#endif X#ifdef IMA_RIOS X#include X#endif X#include X#include X#include X#include X#include X#ifndef SYSVSTRING X#include X#define CINDEX(s,c) index(s,c) X#else X#include X#define CINDEX(s,c) strchr(s,c) X#endif X#include X#ifdef FDSETPATCH X#include "fdsetpatch.h" X#endif X#ifdef IMA_CRAY X#include "craypatch.h" X#endif X#if defined(IMA_I860) || defined(IMA_IPSC) X#include "xenixpatch.h" X#endif X#ifdef IMA_TITN X#include "titanpatch.h" X#endif X#include "global.h" X#include "pvmd.h" X#ifdef SUNOS3PATCH X#include "sunos3patch.h" X#endif X#if !defined(SYSVSIGNAL) && defined(SIGCLD) && !defined(SIGCHLD) X#define SYSVSIGNAL X#endif X#ifndef RSHCOMMAND X#define RSHCOMMAND "/usr/ucb/rsh" X#endif X extern char *sstring(); extern long xtoi(); X extern int errno; extern pvmhost *hosts; /* from pvmd.c */ extern char *myarch; /* from pvmd.c */ extern int myhost; /* from pvmd.c */ extern int nhosts; /* from pvmd.c */ extern int narchs; /* from pvmd.c */ extern char *lognam; /* from pvmd.c */ extern int maxxmlen; /* from pvmd.c */ extern int htlen; /* from pvmd.c */ extern int *spsocks; /* from pvmd.c */ X X/* eread() X* X* Read an fd until \n is reached. Also pass input from a second fd X* to stderr. X*/ X int eread(fd, buf, len, fe, hname) X int fd; /* fd to read from */ X char *buf; /* buffer for data */ X int len; /* buffer length */ X int fe; /* alt fd to pass to stderr or -1 if none */ X char *hname; /* hostname we're talking to */ X{ X int got = 0; /* length written into buf */ X fd_set rfds, the_fds; X struct timeval tout; X char lbuf[1024]; X int n; X int i; X X FD_ZERO(&the_fds); X FD_SET(fd, &the_fds); X if (fe >= 0) X FD_SET(fe, &the_fds); X tout.tv_sec = 30; /* max 30 secs to get response */ X tout.tv_usec = 0; X X while (1) { X rfds = the_fds; X if ((n = select(max(fd, fe) + 1, &rfds, 0, 0, &tout)) == -1) { X perror("select"); X exit(1); X } X if (!n) { X /* X * select timeout - no response from slave pvmd within 30 seconds X */ X fprintf(stderr, "no response from pvmd@%s in 30 seconds\n", X hname); X return 0; X } X X if (FD_ISSET(fd, &rfds)) { X if ((n = read(fd, buf, len)) == -1) { X perror("read"); X fprintf(stderr, "host %s read error\n", hname); X exit(1); X } X if (!n) X return got; X got += n; X for (i = 0; i < n; i++) X if (buf[i] == '\n') X return got; X buf += n; X len -= n; X } X X if (fe >= 0 && FD_ISSET(fe, &rfds)) { X /* X * response on standard error. print on our standard error, X * prefixed by remote's host name X */ X if ((n = read(fe, lbuf, sizeof(lbuf)-1)) > 0) { X char *p = lbuf; X X lbuf[n] = 0; X fprintf(stderr, "pvmd@%s: ", hname); X while (*p) { X putc(*p++, stderr); X if (p[0] && p[-1] == '\n') X fprintf(stderr, "pvmd@%s: ", hname); X } X if (p[-1] != '\n') X putc('\n', stderr); X fflush(stderr); X } X } X } X} X X/* slconfg() X* X* Start up and configure slave pvmds. For each host (1..nhosts-1), X* exec a pvmd, get its config, and send it info about all the pvmds. X*/ X slconfg() X{ X#ifndef IMA_TITN X struct servent *se; X u_short execport; X#endif X char *honame; X char lbuf[1024]; X int h; X char *p, *q; X int n; X int i; X u_long theaddr; X int theport; X int errfd = -1; X X if (nhosts < 2) X return; X X#ifndef IMA_TITN X if (!(se = getservbyname("exec", "tcp"))) { X fprintf(stderr, "%s: can't getservbyname()\n", "exec"); X exit(1); X } X execport = se->s_port; X endservent(); X#endif X X spsocks = tmalloc(nhosts, int); X X /* Phase 1: start each slave, get its version, send it the host table */ X X for (h = 1; h < nhosts; h++) { X honame = hosts[h].h_name; X X /* exec pvmd on a host */ X X if (!(hosts[h].h_flags & H_ASK_PW)) { X int spfd[2], rpfd[2], epfd[2]; X int s; X struct sockaddr_in sin; X short portno; X X fprintf(stderr, "starting on %s\n", honame); X X /* fork an rsh to startup the slave pvmd */ X X if (pipe(spfd) == -1 || pipe(rpfd) == -1 || pipe(epfd) == -1) { X perror("pipe"); X exit(1); X } X#ifdef DEBUG X fprintf(stderr, "pipes: %d %d %d %d %d %d\n", X spfd[0], spfd[1], rpfd[0], rpfd[1], epfd[0], epfd[1]); X#endif X if ((i = fork()) == -1) { X perror("fork"); X exit(1); X } X if (!i) { X i = max(spfd[0], spfd[1]); X i = max(i, rpfd[0]); X i = max(i, rpfd[1]); X i = max(i, epfd[0]); X i = max(i, epfd[1]); X (void)dup2(spfd[0], 0); X (void)dup2(rpfd[1], 1); X (void)dup2(epfd[1], 2); X while (i > 2) X (void)close(i--); X if (hosts[h].h_login) X execlp(RSHCOMMAND, hosts[h].h_name, "-l", hosts[h].h_login, X (hosts[h].h_daemon ? hosts[h].h_daemon : PVMDFILE), X (char*)0); X else X execlp(RSHCOMMAND, hosts[h].h_name, X (hosts[h].h_daemon ? hosts[h].h_daemon : PVMDFILE), X (char*)0); X perror(RSHCOMMAND); X fflush(stderr); X sleep(1); X exit(1); X } X (void)close(spfd[0]); X (void)close(rpfd[1]); X (void)close(epfd[1]); X X if ((n = eread(rpfd[0], lbuf, sizeof(lbuf)-8, epfd[0], honame)) X == -1) { X perror("lread"); X fprintf(stderr, "host %s read error\n", honame); X exit(1); X } X lbuf[n] = 0; X#ifdef DEBUG X (void)write(1, lbuf, strlen(lbuf)); X#endif X if (strncmp(lbuf, "pvmd", 4) || !(p = CINDEX(lbuf, '<'))) { X fprintf(stderr, X "host %s garbled response\nexpected \"pvmd\" got \"%s\"\n", X honame, lbuf); X exit(1); X } X (void)strcpy(&lbuf[n], "<><>"); X *(q = CINDEX(++p, '>')) = 0; X if (strcmp(p, PVM_VERSION)) { X fprintf(stderr, "host %s PVM version mismatch (%s/%s)\n", X honame, PVM_VERSION, p); X exit(1); X } X X /* make a new socket to talk to slave through */ X X if ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1) { X perror("socket"); X exit(1); X } X for (portno = IPPORT_USERRESERVED; portno < LASTPORT; portno++) { X bcopy((char*)&hosts[myhost].h_adres, (char*)&sin, sizeof(sin)); X sin.sin_port = htons(portno); X if (!bind(s, (struct sockaddr*)&sin, sizeof(sin))) X break; X } X if (portno >= LASTPORT) { X perror("bind"); X exit(1); X } X if (listen(s, 1) == -1) { X perror("listen"); X exit(1); X } X theaddr = ntohl(0xffffffff & sin.sin_addr.s_addr); X theport = 0xffff & ntohs(sin.sin_port); X (void)sprintf(lbuf, "reconnect addr <%08x> port <%04x>\n", X theaddr, theport); X#ifdef DEBUG X (void)write(1, lbuf, strlen(lbuf)); X#endif X (void)write(spfd[1], lbuf, strlen(lbuf)); X X /* shift to new socket and yak the rsh */ X X (void)wait(0); X i = sizeof(sin); X if ((spsocks[h] = accept(s, (struct sockaddr*)&sin, &i)) == -1) { X perror("accept"); X exit(1); X } X (void)close(spfd[1]); X (void)close(rpfd[0]); X (void)close(epfd[0]); X (void)close(s); X X } else { /* use rexec to start if want to supply passwd */ X#if defined(IMA_TITN) || defined(IMA_I386) X fprintf(stderr, "slconfg: sorry, no rexec()\n"); X exit(1); X#else X if ((spsocks[h] = rexec(&honame, execport, X (hosts[h].h_login ? hosts[h].h_login : lognam), X (char*)0, X (hosts[h].h_daemon ? hosts[h].h_daemon : PVMDFILE), X &errfd)) == -1) { X fprintf(stderr, "can't exec pvmd on host %s\n", X hosts[h].h_name); X exit(1); X } X#endif X } X X /* get its version/architecture */ X X if ((n = eread(spsocks[h], lbuf, sizeof(lbuf)-8, errfd, honame)) X == -1) { X perror("lread"); X fprintf(stderr, "host %s read error\n", honame); X exit(1); X } X lbuf[n] = 0; X#ifdef DEBUG X (void)write(1, lbuf, strlen(lbuf)); X#endif X if (strncmp(lbuf, "pvmd", 4) || !(p = CINDEX(lbuf, '<'))) { X fprintf(stderr, X "host %s garbled response\nexpected \"pvmd\" got \"%s\"\n", X honame, lbuf); X exit(1); X } X X (void)strcpy(&lbuf[n], "<><><>"); X *(q = CINDEX(++p, '>')) = 0; X if (strcmp(p, PVM_VERSION)) { X fprintf(stderr, "host %s PVM version mismatch (%s/%s)\n", X honame, PVM_VERSION, p); X exit(1); X } X X p = CINDEX(q + 1, '<') + 1; X *(q = CINDEX(p, '>')) = 0; X hosts[h].h_arch = sstring(p); X X p = CINDEX(q + 1, '<') + 1; X *(q = CINDEX(p, '>')) = 0; X hosts[h].h_maxml = atoi(p); X if (hosts[h].h_maxml < maxxmlen) X maxxmlen = hosts[h].h_maxml; X X /* Send host table to slave */ X X (void)sprintf(lbuf, "nhosts <%d> yourhost <%d>\n", nhosts, h); X (void)write(spsocks[h], lbuf, strlen(lbuf)); X#ifdef DEBUG X (void)write(1, lbuf, strlen(lbuf)); X#endif X for (i = 0; i < nhosts; i++) { X theaddr = ntohl(0xffffffff & hosts[i].h_adres.sin_addr.s_addr); X (void)sprintf(lbuf, "name <%s> addr <%08x>\n", X hosts[i].h_name, X theaddr); X (void)write(spsocks[h], lbuf, strlen(lbuf)); X#ifdef DEBUG X (void)write(1, lbuf, strlen(lbuf)); X#endif X } X X /* Get the port number from slave */ X X if ((n = lread(spsocks[h], lbuf, sizeof(lbuf)-8)) == -1) { X perror("lread"); X fprintf(stderr, "host %s read error\n", honame); X exit(1); X } X lbuf[n] = 0; X#ifdef DEBUG X (void)write(1, lbuf, strlen(lbuf)); X#endif X if (strncmp(lbuf, "myport", 5) || !(p = CINDEX(lbuf, '<'))) { X fprintf(stderr, X "host %s garbled response\nexpected \"myport\" got \"%s\"\n", X honame, lbuf); X exit(1); X } X X (void)strcpy(&lbuf[n], "<>"); X *(q = CINDEX(++p, '>')) = 0; X hosts[h].h_adres.sin_port = htons((short)xtoi(p)); X } X X /* Phase 2: Complete the slave config/host tables */ X X for (h = 1; h < nhosts; h++) { X X (void)sprintf(lbuf, "maxml <%d>\n", maxxmlen); X (void)write(spsocks[h], lbuf, strlen(lbuf)); X X for (i = 0; i < nhosts; i++) { X theport = 0xffff & ntohs(hosts[i].h_adres.sin_port); X (void)sprintf(lbuf, "port <%04x> arch <%s> epath <%s>\n", X theport, hosts[i].h_arch, hosts[i].h_epath); X (void)write(spsocks[h], lbuf, strlen(lbuf)); X#ifdef DEBUG X (void)write(1, lbuf, strlen(lbuf)); X#endif X } X if ((n = lread(spsocks[h], lbuf, sizeof(lbuf)-8)) == -1) { X perror("lread"); X fprintf(stderr, "host %s read error\n", honame); X exit(1); X } X lbuf[n] = 0; X#ifdef DEBUG X (void)write(1, lbuf, strlen(lbuf)); X#endif X if (strncmp(lbuf, "ok", 2) || !(p = CINDEX(lbuf, '<'))) { X fprintf(stderr, X "host %s garbled response\nexpected \"ok\" got \"%s\"\n", X honame, lbuf); X exit(1); X } X fprintf(stderr, " %d", h + 1); X } X fputs("\n", stderr); X X if (maxxmlen < 200) { /* XXX arbitrary */ X fprintf(stderr, "aargh! max msg len is %d\n", maxxmlen); X stats(); X bailout(1); X } X} X X/* ldconfg() X* X* We are a slave pvmd. X* Trade configuration to master for info about the group. X*/ X ldconfg() X{ X char lbuf[1024]; X char *p, *q, *s; X int h; X int portno; X X /* Phase 1: Get host names and addresses, send out port */ X X /* Send " " message to master */ X X sprintf(lbuf, "pvmd version <%s> arch <%s> maxml <%d>\n", X PVM_VERSION, myarch, maxxmlen); X write(1, lbuf, strlen(lbuf)); X X /* Get "nhosts yourhost" (or "reconnect") message from master */ X X if (!fgets(lbuf, sizeof(lbuf)-8, stdin) || !(p = CINDEX(lbuf, '<'))) { X fputs("error loading config expected nhosts\n", stdout); X exit(1); X } X X /* Reconnect through another TCP stream now if directed by master */ X X if (!strncmp(lbuf, "reconnect", 9)) { X struct sockaddr_in other; X int s; X X /* get inetaddr/port and connect to it */ X X other.sin_family = AF_INET; X (void)strcat(lbuf, "<><>"); X *(q = CINDEX(++p, '>')) = 0; X other.sin_addr.s_addr = htonl(xtoi(p)); X p = CINDEX(q + 1, '<') + 1; X *(q = CINDEX(p, '>')) = 0; X other.sin_port = htons((short)(xtoi(p))); X X if ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1) { X perror("socket"); X exit(1); X } X if (connect(s, (struct sockaddr*)&other, sizeof(other)) == -1) { X perror("connect"); X exit(1); X } X (void)fclose(stdin); X (void)fclose(stdout); X (void)fclose(stderr); X (void)dup2(s, 0); X (void)dup2(s, 1); X (void)dup2(s, 2); X (void)close(s); X (void)fdopen(0, "r"); X (void)fdopen(1, "w"); X (void)fdopen(2, "w"); X X /* restart message sequence */ X X sprintf(lbuf, "pvmd version <%s> arch <%s> maxml <%d>\n", X PVM_VERSION, myarch, maxxmlen); X write(1, lbuf, strlen(lbuf)); X X /* bail out of the rsh */ X X if (fork()) X exit(0); X X /* close any random fds */ X X for (h = getdtablesize(); --h > 2; ) X (void)close(h); X X if (!fgets(lbuf, sizeof(lbuf)-8, stdin) || !(p = CINDEX(lbuf, '<'))) { X fputs("error loading config expected nhosts\n", stdout); X exit(1); X } X } else { X (void)dup2(1, 2); X } X X if (strncmp(lbuf, "nhosts", 6)) { X fputs("error loading config expected nhosts\n", stdout); X exit(1); X } X (void)strcat(lbuf, "<><>"); X *(q = CINDEX(++p, '>')) = 0; X nhosts = atoi(p); X hosts = tmalloc((htlen = nhosts), pvmhost); X bzero((char*)hosts, nhosts * sizeof(pvmhost)); X X p = CINDEX(q + 1, '<') + 1; X *(q = CINDEX(p, '>')) = 0; X myhost = atoi(p); X X if (nhosts < 2 || myhost < 1 || myhost >= nhosts) { X fprintf(stdout, X "error loading config: nhosts %d myhost %d\n", X nhosts, myhost); X exit(1); X } X X /* Get "name addr" for each pvmd from master */ X X for (h = 0; h < nhosts; h++) { X if (!fgets(lbuf, sizeof(lbuf) - 8, stdin) X || strncmp(lbuf, "name", 4) || !(p = CINDEX(lbuf, '<'))) { X fputs("error loading config expected name\n", stdout); X exit(1); X } X (void)strcat(lbuf, "<><>"); X *(q = CINDEX(++p, '>')) = 0; X hosts[h].h_name = sstring(p); X if (s = CINDEX(p, '.')) X *s = 0; X hosts[h].h_fname = sstring(p); X X p = CINDEX(q + 1, '<') + 1; X *(q = CINDEX(p, '>')) = 0; X hosts[h].h_adres.sin_addr.s_addr = htonl(xtoi(p)); X X hosts[h].h_adres.sin_family = AF_INET; X hosts[h].h_seqlast = 0; X hosts[h].h_toseq = 0; X hosts[h].h_mq = 0; X hosts[h].h_mqtail = 0; X hosts[h].h_login = 0; X hosts[h].h_daemon = 0; X hosts[h].h_flags = 0; X hosts[h].h_arch = 0; X } X X mksocs(); X X /* Report our port number */ X X portno = 0xffff & ntohs(hosts[myhost].h_adres.sin_port); X sprintf(lbuf, "myport <%04x>\n", portno); X write(1, lbuf, strlen(lbuf)); X X /* Phase 2: Complete the host table from master */ X X /* Get "maxml" from master */ X X if (!fgets(lbuf, sizeof(lbuf)-8, stdin) || !(p = CINDEX(lbuf, '<'))) { X fputs("error loading config expected maxml\n", stdout); X exit(1); X } X if (strncmp(lbuf, "maxml", 5)) { X fputs("error loading config expected maxml\n", stdout); X exit(1); X } X (void)strcat(lbuf, "<><>"); X *(q = CINDEX(++p, '>')) = 0; X maxxmlen = atoi(p); X X /* Get "port arch" for each pvmd from master */ X X for (h = 0; h < nhosts; h++) { X if (!fgets(lbuf, sizeof(lbuf) - 8, stdin) X || strncmp(lbuf, "port", 4) || !(p = CINDEX(lbuf, '<'))) { X fputs("error loading config expected port\n", stdout); X exit(1); X } X (void)strcat(lbuf, "<><><>"); X *(q = CINDEX(++p, '>')) = 0; X hosts[h].h_adres.sin_port = htons((short)(xtoi(p))); X X p = CINDEX(q + 1, '<') + 1; X *(q = CINDEX(p, '>')) = 0; X hosts[h].h_arch = sstring(p); X X p = CINDEX(q + 1, '<') + 1; X *(q = CINDEX(p, '>')) = 0; X hosts[h].h_epath = sstring(p); X } X X /* Ack we are ready */ X X sprintf(lbuf, "ok nhosts <%d> im <%d>\n", nhosts, myhost); X write(1, lbuf, strlen(lbuf)); X} X END_OF_FILE if test 16242 -ne `wc -c <'pvm2.4/src/startup.c'`; then echo shar: \"'pvm2.4/src/startup.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/startup.c' fi if test -f 'pvm2.4/src/sunos3patch.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/sunos3patch.h'\" else echo shar: Extracting \"'pvm2.4/src/sunos3patch.h'\" \(129 characters\) sed "s/^X//" >'pvm2.4/src/sunos3patch.h' <<'END_OF_FILE' X X#ifndef MAXHOSTNAMELEN X#define MAXHOSTNAMELEN 1024 X#endif X X#ifndef IPPORT_USERRESERVED X#define IPPORT_USERRESERVED 5000 X#endif X END_OF_FILE if test 129 -ne `wc -c <'pvm2.4/src/sunos3patch.h'`; then echo shar: \"'pvm2.4/src/sunos3patch.h'\" unpacked with wrong size! fi # end of 'pvm2.4/src/sunos3patch.h' fi if test -f 'pvm2.4/src/titanpatch.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/titanpatch.h'\" else echo shar: Extracting \"'pvm2.4/src/titanpatch.h'\" \(70 characters\) sed "s/^X//" >'pvm2.4/src/titanpatch.h' <<'END_OF_FILE' X#ifndef MAXPATHLEN X#define MAXPATHLEN CANBSIZ X#endif X char *index(); X END_OF_FILE if test 70 -ne `wc -c <'pvm2.4/src/titanpatch.h'`; then echo shar: \"'pvm2.4/src/titanpatch.h'\" unpacked with wrong size! fi # end of 'pvm2.4/src/titanpatch.h' fi if test -f 'pvm2.4/src/ulib.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/ulib.c'\" else echo shar: Extracting \"'pvm2.4/src/ulib.c'\" \(49291 characters\) sed "s/^X//" >'pvm2.4/src/ulib.c' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Ulib.c X * X * User Library for PVM. X * X$Log: ulib.c,v $ X * Revision 1.36 1992/12/23 01:15:09 manchek X * moved stdio include X * X * Revision 1.35 1992/12/22 21:47:14 manchek X * include errno.h and declare errno X * X * Revision 1.34 1992/12/22 16:29:30 manchek X * fixed pvm_mstat so it returns the host index X * X * Revision 1.33 1992/12/21 20:57:33 manchek X * call_pvmd doesn't bail if recvfrom gets an EINTR X * X * Revision 1.32 1992/12/16 07:12:37 manchek X * decrufted somewhat X * X * Revision 1.31 1992/12/16 06:38:05 manchek X * added a few casts for retentiveness X * X * Revision 1.30 1992/07/01 19:13:21 manchek X * cleaned up lint glarp with casts X * X * Revision 1.29 1992/05/28 18:03:48 manchek X * Added TITN ifdefs X * X * Revision 1.28 1992/03/18 19:15:40 manchek X * checkver now gets myndf from pvmd. X * snd/rcv and variants pack code in message headers indicating format X * of msg data (xdr, native) and verify ability to decode at receive X * time. X * X * Revision 1.27 1992/03/16 19:07:08 manchek X * added pvm_mstat() function X * X * Revision 1.26 1992/01/27 19:56:12 manchek X * vc_answer needed to set nonblock too. X * X * Revision 1.25 1992/01/24 23:48:43 manchek X * moved pvm_uerr from uliberr.c, added component name and number to msg X * X * Revision 1.24 1992/01/24 22:26:44 manchek X * converted error returns to use pvm_uerr() to optionally print message. X * enroll now returns PvmAlready if already enrolled X * X * Revision 1.23 1992/01/22 19:32:12 manchek X * removed complaint when vc_read gets an eof. shouldn't have to know X * X * Revision 1.22 1992/01/22 19:28:54 manchek X * fix to vsnd to allow 0-length msgs plus block on writing header X * X * Revision 1.21 1992/01/22 00:53:05 manchek X * changed leave to void X * X * Revision 1.20 1992/01/22 00:46:13 manchek X * forgot a few function types X * X * Revision 1.19 1992/01/18 01:01:09 manchek X * ack, forgot an arg to shutdown() X * X * Revision 1.18 1992/01/17 18:22:01 manchek X * changes to all vsnd stuff to remove deadlock when crossing X * messages. first try at closing sockets when out of fds X * X * Revision 1.17 1992/01/07 01:38:42 manchek X * now does ulib version check when connecting to pvmd X * X * Revision 1.16 1992/01/06 23:01:22 manchek X * call_pvmd, etc, now don't exit on error. X * whoami return NoComp instead of Syserr if that's true X * X * Revision 1.15 1992/01/06 18:07:31 manchek X * added probemulti() X * X * Revision 1.14 1991/12/31 23:57:22 manchek X * convert to new error codes X * X * Revision 1.13 1991/12/31 23:56:22 manchek X * added virt ckt support (changes to enroll, whoami, leave, etc X * plus new functions vsnd, vrcv) X * X * Revision 1.12 1991/12/09 20:59:46 manchek X * whoami() checks args for null X * X * Revision 1.11 1991/12/09 17:44:46 manchek X * cleaned up stuff after endifs X * X * Revision 1.10 1991/12/09 17:40:19 manchek X * cleaned up commented-out trash X * X * Revision 1.9 1991/11/27 20:30:58 manchek X * switch to instrumented malloc defines X * X * Revision 1.8 1991/11/07 22:24:42 manchek X * added sequence number to user->user messages to facilitate X * correct reassembly when two messages from a single process X * arrive simultaneously (happens when direct send mixes with X * bcast). X * X * Revision 1.7 1991/08/06 15:34:06 manchek X * was passing recvfrom a bad from address length X * X * Revision 1.6 1991/08/01 19:24:25 manchek X * changed MAXXMLEN to a variable, set on enroll() or whoami() X * to value from pvmd. X * this is for message length negotiation X * X * Revision 1.5 1991/07/24 16:36:28 manchek X * whoami() now capable of making sockets (useful if proc created by X * pvmd and so shouldn't have to enroll). X * added pstatus() user call to report virtual machine configuration. X * enroll() (and whoami()) set dorawdata if the virtual machine is X * homogeneous. this disables XDRing message data. X * cleaned up global defs. X * X * Revision 1.4 1991/06/04 20:41:33 manchek X * use of sizeof on sockaddr_un now even more retentive. X * X * Revision 1.3 1991/06/04 18:54:41 manchek X * fragtail update in xfermess() was broken. fixed. X * X * Revision 1.2 1991/06/02 23:22:49 manchek X * change to sockaddr_un made sun_family a bit field - can't use sizeof X * X * Revision 1.1 1991/05/06 14:43:35 manchek X * Initial revision X * X * X */ X X#ifdef IMA_I386 X#include X#endif X#include X#include X#include X#include X#include X#include X#ifdef IMA_RIOS X#include X#endif X#include X#include X#ifndef NOUNIXSOC X#include X#endif X#include X#ifndef SYSVSTRING X#include X#else X#include X#endif X#include X#include "global.h" X#include "loclcomm.h" X#include "micomm.h" X#include "pvmuser.h" X X#ifndef max X#define max(a,b) (((a)>(b))?(a):(b)) X#endif X X#ifndef min X#define min(a,b) (((a)<(b))?(a):(b)) X#endif X X/* message descriptor for rx msg queue */ X typedef struct mxd { X char *md_name; /* from process name */ X int md_inum; /* from process inum */ X int md_seq; /* message seq # */ X int md_type; /* message type */ X int md_length; /* total length */ X int md_encoding; /* data encoding */ X struct frag *md_frag; /* first frag */ X struct frag *md_ftail; /* last frag */ X struct mxd *md_next; /* next message */ X} mxd; X X/* virtual circuit descriptor */ X/* also used to cache #instances of process name */ X struct vcd { X char *vc_name; /* process name */ X int vc_inum; /* instance number */ X int vc_sock; /* socket fd */ X int vc_use; /* usage metric */ X int vc_flags; X struct mxd *vc_rxm; /* current rx message */ X struct vcd *vc_next; /* next vcd */ X}; X X#define VCF_LOCAL 1 /* orig locally */ X char *sstring(); X extern int errno; X extern frag *ogchain; /* from crunch.c */ extern frag *ogcur; extern XDR ogxdr; extern int ogdataconv; extern frag *icchain; extern frag *iccur; extern XDR icxdr; extern int icdataconv; extern int pvm_errno; /* from uliberr.c */ extern int pvm_aerr; /* from uliberr.c */ X X/********** X* Globals * X* * X**********/ X int dorawdata = 0; /* Whether to XDR when packing msgs */ int maxxmlen = DEFMAXXMLEN; /* max message length to use */ int frgdlen = DEFMAXXMLEN-FRHDLEN; /* size of frag xdr component */ X X/********** X* Private * X* * X**********/ X static char callbuf[DEFMAXXMLEN]; /* user for call, return space */ static int mymypid; /* our process id */ static char *whoname = 0; /* my instance name */ static int whoinum = 0; /* my instance number */ static char *icmname = 0; /* msg sender name */ static int icminum; /* msg sender inum */ static int icmtype; /* msg type */ static int icmlen; /* msg length */ static int icmenc; /* msg encoding */ static mxd *rxlist = 0; /* pre-rxd completed message queue */ static mxd *rxtail = 0; static mxd *fraglist = 0; /* pre-rxd msg frag reassm q */ static mxd *fragtail = 0; static int ogsock = -1; /* pvmd user-call socket fd */ static int icsock = -1; /* our user-call socket fd */ static int ogsal; /* ogsock name length */ X#ifndef NOUNIXSOC static struct sockaddr_un ogsad; /* ogsock addr */ static struct sockaddr_un icsad; /* icsock addr */ X X#else /* have unix sockets */ static struct sockaddr_in ogsad; /* ogsock addr */ static struct sockaddr_in icsad; /* icsock addr */ X#endif X static int seqlast = 0; /* seq num for pvmd calls */ static int umseq = 0; /* seq num for proc-proc msgs */ static int nmachines = 0; /* No of hosts in virt mach */ static int narches = 0; /* No of diff data reps over nmachines */ static struct in_addr thisip; /* IP addr of this host */ static int vsock = -1; /* master sock for proc<->proc virt ckt */ static struct sockaddr_in vaddr; /* addr of master virt ckt sock */ static struct vcd *vlist = 0; /* list of virt ckts */ static int nvcs = 0; /* number of vcs open */ static struct vcd *micac = 0; /* cache of max inst by proc name */ static frag *vogchain = 0; /* for vsnd; ogchain plus header */ static int myndf = -1; /* my host native data format code */ X X X/***************** X* Internal Stuff * X* * X*****************/ X X/* call_pvmd() X* X* Send command to pvmd and wait for response. X* Returns 0 if ok, -1 if system error/bad reply. X*/ X static int call_pvmd(cmd, cmdlen, rpl, rpllen) X char *cmd; X int cmdlen; X char *rpl; X int *rpllen; X{ X int e; X int retry = 5; X userm uu; X struct sockaddr sad; X int adlen; X X bcopy(cmd, (char*)&uu, sizeof(uu)); X/* X fprintf(stderr, "call_pvmd() type=%d flg=%x length=%d\n", X uu.um_type, uu.um_flg, cmdlen); X*/ X X if (ogsock == -1) /* fail if sockets not made */ X return -1; X X uu.um_pid = mymypid; X uu.um_seq = ++seqlast; X bcopy((char*)&uu, cmd, sizeof(uu)); X do { X e = sendto(ogsock, cmd, cmdlen, 0, (struct sockaddr*)&ogsad, ogsal); X if (e == -1) { X perror("sendto"); X sleep(1); X } X } while (e == -1 && retry-- > 0); X if (e == -1) X return -1; X X do { X adlen = sizeof(sad); X while ((e = recvfrom(icsock, rpl, *rpllen, 0, &sad, &adlen)) == -1) { X if (errno != EINTR) { X perror("recvfrom"); X return -1; X } X } X bcopy(rpl, (char*)&uu, sizeof(uu)); X } while (e < sizeof(userm) || uu.um_seq != seqlast); X *rpllen = e; X return 0; X} X static mksocs() X{ X struct passwd *pe; X int uid; X char *lognam; X#ifndef IMA_TITN X int bsz; X#endif X#ifdef NOUNIXSOC X char buf[128]; X short cportno; X short portno; X int d; X#else X int l; X#endif /*NOUNIXSOC*/ X X if (ogsock != -1) X return -1; X mymypid = getpid(); X if ((uid = getuid()) == -1) { X fputs("can't getuid()\n", stderr); X return -1; X } X if (!(pe = getpwuid(uid))) { X fputs("can't getpwent()\n", stderr); X return -1; X } X lognam = pe->pw_name; X#ifdef NOUNIXSOC X sprintf(buf, UTOPSOC, lognam); X if ((d = open(buf, O_RDONLY, 0)) == -1) { X perror(buf); X return -1; X } X (void)read(d, buf, sizeof(buf)); X (void)close(d); X cportno = atoi(buf); X ogsad.sin_family = AF_INET; X ogsad.sin_port = htons(cportno); X ogsad.sin_addr.s_addr = htonl(0x7f000001); /* XXX is this wise? */ X ogsal = sizeof(ogsad); X X if ((icsock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { X perror("socket"); X return -1; X } X for (portno = IPPORT_USERRESERVED; portno < LASTPORT; portno++) { X icsad.sin_family = AF_INET; X icsad.sin_port = htons(portno); X icsad.sin_addr.s_addr = htonl(INADDR_ANY); X if (!bind(icsock, (struct sockaddr*)&icsad, sizeof(icsad))) X break; X } X if (portno >= LASTPORT) { X perror("bind"); X return -1; X } X ogsock = icsock; X X#else /*NOUNIXSOC*/ X if ((ogsock = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) { X perror("socket"); X return -1; X } X X ogsad.sun_family = AF_UNIX; X sprintf(ogsad.sun_path, UTOPSOC, lognam); X ogsal = sizeof(ogsad) - sizeof(ogsad.sun_path) + strlen(ogsad.sun_path); X X icsad.sun_family = AF_UNIX; X sprintf(icsad.sun_path, PTOUSOC, getpid()); X X (void)unlink(icsad.sun_path); X X if ((icsock = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) { X perror("socket"); X return -1; X } X l = sizeof(icsad) - sizeof(icsad.sun_path) + strlen(icsad.sun_path); X if (bind(icsock, (struct sockaddr*)&icsad, l) == -1) { X perror("bind"); X return -1; X } X#endif /*NOUNIXSOC*/ X X endpwent(); X#ifndef IMA_TITN X bsz = DEFMAXXMLEN * 2; X if (setsockopt(ogsock, SOL_SOCKET, SO_SNDBUF, (char*)&bsz, sizeof(bsz)) == -1 X || setsockopt(ogsock, SOL_SOCKET, SO_RCVBUF, (char*)&bsz, sizeof(bsz)) == -1 X || setsockopt(icsock, SOL_SOCKET, SO_SNDBUF, (char*)&bsz, sizeof(bsz)) == -1 X || setsockopt(icsock, SOL_SOCKET, SO_RCVBUF, (char*)&bsz, sizeof(bsz)) == -1) { X perror("setsockopt"); X return -1; X } X#endif X return 0; X} X static unmksocs() X{ X (void)close(icsock); X icsock = -1; X#ifndef NOUNIXSOC X (void)unlink(icsad.sun_path); X#endif X (void)close(ogsock); X ogsock = -1; X (void)close(vsock); X vsock = -1; X} X static mkvsock() X{ X short portno; X X if ((vsock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { X perror("mkvsock: socket"); X return -1; X } X bzero((char*)&vaddr, sizeof(vaddr)); X for (portno = IPPORT_USERRESERVED; portno < LASTPORT; portno++) { X vaddr.sin_family = AF_INET; X vaddr.sin_addr = thisip; X vaddr.sin_port = htons(portno); X if (!bind(vsock, (struct sockaddr*)&vaddr, sizeof(vaddr))) X break; X } X if (portno >= LASTPORT) { X perror("mkvsock: bind"); X return -1; X } X if (listen(vsock, 5) == -1) { X perror("mkvsock: listen"); X return -1; X } X return 0; X} X X/* xfermess() X* X* Transfer messages from pvmd to process. X* Gets fragments until either a complete message is received X* or no more fragments. Blocks (via pvmd) if blk is nonzero. X* X* Returns -1 if system error, 0 if no complete messages, 1 if X* a message. X*/ X static int xfermess(blk) X int blk; X{ X userm *uhdr = (userm*)callbuf; X int replen; X char *p; X char *frname; /* from process name */ X int frinum; /* from process instance */ X int frseq; /* message seq # */ X int frtyp; /* message type */ X int frflg; /* fragment flags */ X int frenc; /* data encoding */ X mxd *qe; X frag *fe; X XDR xdrobj; X X while (1) { X X /* get user message from pvmd - block if we should block */ X X uhdr->um_type = UMC_RECV; X uhdr->um_flg = blk ? 0 : UF_NBLK; X replen = sizeof(callbuf); X if (call_pvmd(callbuf, sizeof(*uhdr), callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) { X fputs("xfermess() NACK from pvmd\n", stderr); X return -1; X } X if (uhdr->um_flg & UF_NMSG) { X return 0; X } X X /* pick off sending process name and instance */ X X p = um_data(uhdr); X frname = lupps(&p, (int*)0); X frinum = lupai(&p); X X /* get message type and flags */ X X xdrmem_create(&xdrobj, p, FRHDLEN, XDR_DECODE); X xdr_int(&xdrobj, &frseq); X xdr_int(&xdrobj, &frtyp); X xdr_int(&xdrobj, &frflg); X xdr_int(&xdrobj, &frenc); X p += xdr_getpos(&xdrobj); X X /* put data in a frag */ X X fe = tmalloc(1, frag); X fe->fr_length = replen - (p - callbuf); X fe->fr_data = tmalloc(fe->fr_length, char); X bcopy(p, fe->fr_data, fe->fr_length); X fe->fr_next = 0; X X /* if STP (first fragment), make new in fraglist, else find existing */ X X if (frflg & UUF_STP) { X qe = tmalloc(1, mxd); X qe->md_name = sstring(frname); X qe->md_inum = frinum; X qe->md_seq = frseq; X qe->md_type = frtyp; X qe->md_length = 0; X qe->md_encoding = frenc; X qe->md_frag = 0; X qe->md_ftail = 0; X qe->md_next = 0; X X /* skip fraglist if single frag message */ X X if (!(frflg & UUF_ENP)) { X if (fragtail) X fragtail->md_next = qe; X else X fraglist = qe; X fragtail = qe; X } X X } else { X for (qe = fraglist; qe; qe = qe->md_next) X if (qe->md_inum == frinum X && !strcmp(qe->md_name, frname) X && qe->md_seq == frseq) X break; X if (!qe) { X fputs("xfermess() frg out of order (this should not happen)\n", X stderr); X fprintf(stderr, X "xfermess() from <%s,%d> type %d len %d flags 0x%x\n", X frname, frinum, frtyp, fe->fr_length, frflg); X fputs("xfermess() fraglist:\n", stderr); X for (qe = fraglist; qe; qe = qe->md_next) X fprintf(stderr, X "xfermess() from <%s,%d> type %d len %d\n", X qe->md_name, qe->md_inum, qe->md_type, qe->md_length); X fputs("xfermess() rxlist:\n", stderr); X for (qe = rxlist; qe; qe = qe->md_next) X fprintf(stderr, X "xfermess() from <%s,%d> type %d len %d\n", X qe->md_name, qe->md_inum, qe->md_type, qe->md_length); X return -1; X } X } X X /* add this fragment to chain */ X X if (qe->md_ftail) X qe->md_ftail->fr_next = fe; X else X qe->md_frag = fe; X qe->md_ftail = fe; X qe->md_length += fe->fr_length; X X /* if ENP (last fragment), unlink chain and put on rxlist */ X X if (frflg & UUF_ENP) { X if (!(frflg & UUF_STP)) { X mxd *qlp, *qrp; X X for (qlp = 0, qrp = fraglist; X qrp && qrp != qe; X qlp = qrp, qrp = qrp->md_next); X if (!qrp) { X fputs("xfermess() can't unlink frag (this should not happen)\n", X stderr); X return -1; X } X if (qlp) X qlp->md_next = qrp->md_next; X else X fraglist = qrp->md_next; X if (qrp == fragtail) X fragtail = qlp; X qe->md_next = 0; X } X if (rxtail) X rxtail->md_next = qe; X else X rxlist = qe; X rxtail = qe; X return 1; X } X } X} X X/* new_vcd() X* X* make new virt ckt desc and return pointer X*/ X static struct vcd * new_vcd(name, inum, sock) X char *name; X int inum; X int sock; X{ X struct vcd *vcp; X X if (vcp = tmalloc(1, struct vcd)) { X vcp->vc_name = sstring(name); X vcp->vc_inum = inum; X vcp->vc_sock = sock; X vcp->vc_use = 0; X vcp->vc_flags = 0; X vcp->vc_rxm = 0; X vcp->vc_next = 0; X } X return vcp; X} X X/* free_vcd() X* X* free virt ckt desc and assoc memory X*/ X static free_vcd(vcp) X struct vcd *vcp; X{ X if (vcp->vc_sock != -1) { X (void)shutdown(vcp->vc_sock, 2); X (void)close(vcp->vc_sock); X } X if (vcp->vc_name) X free(vcp->vc_name); X if (vcp->vc_rxm) { X if (vcp->vc_rxm->md_frag) { X if (vcp->vc_rxm->md_frag->fr_data) X free(vcp->vc_rxm->md_frag->fr_data); X free(vcp->vc_rxm->md_frag); X } X free(vcp->vc_rxm); X } X free(vcp); X} X X/* unlk_vcd() X* X* unlink and free a vcd from vlist X*/ X static unlk_vcd(vcp) X struct vcd *vcp; X{ X struct vcd **vca; X X/* X fprintf(stderr, "unlk_vcd(%s, %d, %d)\n", X vcp->vc_name, vcp->vc_inum, vcp->vc_sock); X*/ X for (vca = &vlist; *vca; vca = &(*vca)->vc_next) { X if (*vca == vcp) { X *vca = vcp->vc_next; X nvcs--; X free_vcd(vcp); X return; X } X } X} X X/* vc_clslu() X* X* Shutdown the least used virt ckt. X*/ X static vc_clslu() X{ X struct vcd *lu = vlist; X struct vcd *vcp; X X for (vcp = vlist; vcp; vcp = vcp->vc_next) X if (vcp->vc_use < lu->vc_use) X lu = vcp; X X if (lu) { X/* X fprintf(stderr, "vc_clslu: closing <%s,%d>\n", X lu->vc_name, lu->vc_inum); X*/ X unlk_vcd(lu); X } X} X X/* make_vc() X* X* Create a virtual ckt to a process and return descriptor. X* Process name isn't length checked. X* Don't call this if the ckt already exists. X*/ X static struct vcd * make_vc(proc, inum) X char *proc; X int inum; X{ X userm *uhdr = (userm*)callbuf; /* for pvmd call */ X struct vcd *vcp = 0; /* the virt ckt desc */ X int naml = strlen(proc) + 1; X int sndlen = sizeof(*uhdr) + LLADJ(naml) + sizeof(int); X int replen = sizeof(callbuf); X struct sockaddr_in sin; X int s; /* the socket */ X char *p = um_data(uhdr); X int mi = 1; X int x; X static int linger[2] = { 0, 0 }; X int retry; X X/* X fprintf(stderr, "make_vc(%s, %d)\n", proc, inum); X*/ X if (whoami((char*)0, (int*)0)) X return vcp; X X /* Query pvmd for address of socket for process */ X X uhdr->um_type = UMC_GETVC; X uhdr->um_flg = 0; X lpacs(&p, proc, naml); X lpaci(&p, inum); X if (call_pvmd(callbuf, sndlen, callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK) X || (uhdr->um_flg & UF_NPROC)) X return vcp; X X /* Make a socket and connect to the peer process */ X X p = um_data(uhdr); X bcopy(p, (char*)&sin, sizeof(sin)); X retry = 1; X while ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1) { X perror("make_vc: socket"); X vc_clslu(); X if (retry-- < 1) X return vcp; X } X setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (char*)&mi, sizeof(int)); X setsockopt(s, SOL_SOCKET, SO_LINGER, (char*)linger, sizeof(linger)); X if (connect(s, (struct sockaddr*)&sin, sizeof(sin)) == -1) { X perror("getvc: connect"); X return vcp; X } X X p = callbuf; X xpaci(&p, whoinum); X xpaci(&p, strlen(whoname) + 1); X bcopy(whoname, p, strlen(whoname) + 1); X if (write(s, callbuf, 2*PVM_INT + strlen(whoname) + 1) == -1) { X perror("getvc: write"); X return vcp; X } X X if ((x = fcntl(s, F_GETFL, 0)) == -1) X perror("make_vc: fcntl"); X else { X#ifdef O_NDELAY X x |= O_NDELAY; X#else X x |= FNDELAY; X#endif X (void)fcntl(s, F_SETFL, x); X } X X/* X fprintf(stderr, "make_vc connected to <%s,%d>\n", proc, inum); X*/ X X /* Add to connection list X - connections we originate go at the head of the list */ X X vcp = new_vcd(proc, inum, s); X vcp->vc_flags |= VCF_LOCAL; X vcp->vc_next = vlist; X vlist = vcp; X nvcs++; X X return vcp; X} X X/* get_vc() X* X* Get the virt ckt for a process. Call make_vc if necessary. X*/ X static struct vcd * get_vc(proc, inum) X int inum; X char *proc; X{ X struct vcd *vcp; X X/* X fprintf(stderr, "get_vc(%s, %d)\n", proc, inum); X*/ X for (vcp = vlist; vcp; vcp = vcp->vc_next) X if (!strcmp(vcp->vc_name, proc) && vcp->vc_inum == inum) X return vcp; X return make_vc(proc, inum); X} X X/* instances() X* X* Get the max instance number of a process. X* Returns max >= 0, or -1 if error. X*/ X static int instances(proc) X char *proc; X{ X userm *uhdr = (userm*)callbuf; X int naml = strlen(proc) + 1; X int sndlen = sizeof(*uhdr) + LLADJ(naml); X int replen = sizeof(callbuf); X char *p = um_data(uhdr); X struct vcd *vcp; X int inum; X X if (naml > MAXUPROCNAMELEN) X return -1; X X /* check cache first */ X X for (vcp = micac; vcp; vcp = vcp->vc_next) X if (!strcmp(proc, vcp->vc_name)) X return vcp->vc_inum; X X /* then query pvmd */ X X uhdr->um_type = UMC_INST; X lpacs(&p, proc, naml); X if (call_pvmd(callbuf, sndlen, callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) X return -1; X p = um_data(uhdr); X inum = lupai(&p); X vcp = new_vcd(proc, inum, -1); X vcp->vc_next = micac; X micac = vcp; X return inum; X} X X/* vc_answer() X* X* Answer a virtual ckt connection request. X* Add connection to vlist. X* Returns 0 if ok, else -1 if error. X*/ X static int vc_answer() X{ X int s; /* new slave socket */ X char name[MAXUPROCNAMELEN]; /* remote proc name */ X int inum; /* remote proc inst num */ X struct sockaddr_in sin; X int cc; X int mi = 1; X int namlen; X int i; X char *p; X struct vcd *vcp, *vcp2; X static int linger[2] = { 0, 0 }; X int retry; X int x; X X /* accept and setup new socket */ X X retry = 1; X while (i = sizeof(sin), X (s = accept(vsock, (struct sockaddr*)&sin, &i)) == -1) { X perror("vc_answer: accept"); X vc_clslu(); X if (retry-- < 1) X return -1; X } X setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (char*)&mi, sizeof(int)); X setsockopt(s, SOL_SOCKET, SO_LINGER, (char*)linger, sizeof(linger)); X X /* read config info from other end */ X X if ((cc = tread(s, name, PVM_INT*2)) != PVM_INT*2) { X if (cc == -1) X perror("vc_answer: reading config"); X else X fputs("vc_answer: eof reading config\n", stderr); X (void)close(s); X return -1; X } X p = name; X inum = xupai(&p); X namlen = xupai(&p); X if (namlen < 1 || namlen > 32) { X fprintf(stderr, "vc_answer: got bogus name length %d\n", X namlen); X (void)close(s); X return -1; X } X if ((cc = tread(s, name, namlen)) != namlen) { X if (cc == -1) X perror("vc_answer: reading config"); X else X fputs("vc_answer: eof reading config\n", stderr); X (void)close(s); X return -1; X } X X if ((x = fcntl(s, F_GETFL, 0)) == -1) X perror("vc_answer: fcntl"); X else { X#ifdef O_NDELAY X x |= O_NDELAY; X#else X x |= FNDELAY; X#endif X (void)fcntl(s, F_SETFL, x); X } X X /* add new ckt to list X - vcs that originate remotely go at tail of list */ X X/* X fprintf(stderr, "vc_answer established conn from <%s,%d>\n", name, inum); X*/ X vcp = new_vcd(name, inum, s); X if (!vlist) X vlist = vcp; X else { X for (vcp2 = vlist; vcp2->vc_next; vcp2 = vcp2->vc_next); X vcp2->vc_next = vcp; X } X nvcs++; X return 0; X} X X/* vc_read() X* X* Data is ready on a virtual ckt. Read either header or part X* of message body. Put completed messages on rxlist. X* Note message isn't fragmented to MAXXMLEN as usual, X* just one large chunk. X* X* Returns 0 if eof on vc, X* 1 if read was part of message X* 2 if message added to rxlist, X* -1 if error. X*/ X static int vc_read(vcp) X struct vcd *vcp; X{ X int fd = vcp->vc_sock; /* virt ckt file des */ X int tlen; /* message length */ X int typ; /* message type */ X int enc; /* message encoding */ X struct uumh uuhdr; /* header */ X mxd *qe; X frag *fe; X char *p; X int cc; X X/* X fprintf(stderr, "vc_read(%s,%d)\n", vcp->vc_name, vcp->vc_inum); X*/ X if (vcp->vc_rxm) { /* message body in progress */ X X qe = vcp->vc_rxm; X tlen = qe->md_length; X fe = qe->md_frag; X p = fe->fr_data + fe->fr_length; X X if ((cc = read(fd, p, tlen - fe->fr_length)) == -1) { X perror("vc_read: reading body"); X return 0; X } X if (!cc) { X/* X fputs("vc_read: eof reading body\n", stderr); X*/ X return 0; X } X/* X fprintf(stderr, "vc_read: body: %d\n", cc); X*/ X X if ((fe->fr_length += cc) == tlen) { X vcp->vc_use += tlen + 1000; X vcp->vc_rxm = 0; X if (rxtail) X rxtail->md_next = qe; X else X rxlist = qe; X rxtail = qe; X return 2; X } X X } else { /* new message */ X X /* Read the header to get type, length */ X X if ((cc = tread(fd, &uuhdr, sizeof(uuhdr))) != sizeof(uuhdr)) { X if (cc == -1) { X perror("vc_read: reading header"); X return 0; X } X/* X fputs("vc_read: eof reading header\n", stderr); X*/ X return 0; X } X p = uuhdr.uu_len; X tlen = xupai(&p); X p = uuhdr.uu_type; X typ = xupai(&p); X p = uuhdr.uu_encoding; X enc = xupai(&p); X/* X fprintf(stderr, "vc_read: hdr: len %d typ %d\n", tlen, typ); X*/ X X /* Put frag on vcd or rxlist if 0 length */ X X fe = tmalloc(1, frag); X fe->fr_length = 0; X fe->fr_next = 0; X qe = tmalloc(1, mxd); X qe->md_name = sstring(vcp->vc_name); X qe->md_inum = vcp->vc_inum; X qe->md_type = typ; X qe->md_length = tlen; X qe->md_encoding = enc; X qe->md_frag = fe; X qe->md_ftail = fe; X qe->md_next = 0; X if (tlen) { X fe->fr_data = tmalloc(tlen, char); X vcp->vc_rxm = qe; X X } else { X fe->fr_data = 0; X if (rxtail) X rxtail->md_next = qe; X else X rxlist = qe; X rxtail = qe; X return 2; X } X } X return 1; X} X X/* vxfermess() X* X* Transfer messages between remote and local processes. X* If wfd is not -1, returns when the outgoing message X* is completely written to wfd, and when zero or more X* complete (no partial) messages have been rxd. X* X* If wfd is -1, returns when one or more complete X* messages have been rxd. X* X* If blk is zero (and wfd is -1), returns when zero or X* more complete messages have been rxd. X* X* Returns -1 if system error, X* 0 if no new received messages, X* 1 if one or more new messages, X* 2 if error writing on wfd. X* X* XXX may return with fragmented messages if blk == 0 because it X* XXX doesn't check for them. X* XXX can also happen if returns with error from write X*/ X static int vxfermess(blk, wfd) X int blk; /* whether to block if nothing ready */ X int wfd; /* file to write og msg to or -1 */ X{ X struct timeval tim; /* for select */ X fd_set rxfds, txfds; /* for select */ X int maxfd; /* max fd used in select */ X struct vcd *vcp; X int cc; X int gotm; X struct frag *fe = 0; /* frag being sent */ X int wof; /* offset into frag being sent */ X X/* X fprintf(stderr, "vxfermess(%d, %d)\n", blk, wfd); X*/ X if (wfd >= 0) { X fe = vogchain; X wof = 0; X } X X while (1) { X X /* select on master socket and established ckts */ X X FD_ZERO(&rxfds); X FD_ZERO(&txfds); X FD_SET(vsock, &rxfds); X maxfd = vsock; X if (fe) { X FD_SET(wfd, &txfds); X maxfd = max(maxfd, wfd); X } X for (vcp = vlist; vcp; vcp = vcp->vc_next) { X FD_SET(vcp->vc_sock, &rxfds); X maxfd = max(maxfd, vcp->vc_sock); X } X maxfd++; X tim.tv_sec = 0; X tim.tv_usec = 0; X/* X fputs("select()\n", stderr); X*/ X if ((cc = select(maxfd, &rxfds, &txfds, (fd_set*)0, X blk ? NULL : &tim)) == -1) { X perror("vxfermess: select"); X return -1; X } X if (!cc) X return 0; X X /* can we send more? */ X X if (fe != 0 && FD_ISSET(wfd, &txfds)) { X cc = write(wfd, fe->fr_data + FRHDLEN + wof, fe->fr_length - wof); X if (cc == -1) { X perror("vxfermess: write"); X return 2; X } X wof += cc; X if (wof == fe->fr_length) { X fe = fe->fr_next; X wof = 0; X X /* done if whole msg sent and no partial msgs rxd */ X if (!fe) { X for (vcp = vlist; vcp; vcp = vcp->vc_next) X if (vcp->vc_rxm) X break; X if (!vcp) X return 0; X } X } X } X X /* someone trying to make a conn? */ X X if (FD_ISSET(vsock, &rxfds)) { X if (vc_answer()) X return -1; X } X X /* message on established connection? */ X X gotm = 0; X for (vcp = vlist; vcp; vcp = vcp->vc_next) { X if (FD_ISSET(vcp->vc_sock, &rxfds)) { X switch (vc_read(vcp)) { X case 0: X unlk_vcd(vcp); X break; X case 1: X break; X case 2: X gotm = 1; X break; X default: X return -1; X } X } X } X if (gotm) { X for (vcp = vlist; vcp; vcp = vcp->vc_next) X if (vcp->vc_rxm) X break; X if (!vcp && !fe) X return 1; X } X } X} X X/* checkver() X* X* Compare softw version levels against pvmd. Also get myndf, this X* host's native data format. X* Returns 0 if okay else -1 if system error or 1 if version mismatch. X*/ X static int checkver() X{ X userm *uhdr = (userm*)callbuf; X int l = strlen(PVM_UVERS) + 1; X int sndlen = sizeof(*uhdr) + LLADJ(l); X int replen; X char *p = um_data(uhdr); X char *ver = "?"; X X uhdr->um_type = UMC_VERSION; X uhdr->um_flg = 0; X lpacs(&p, PVM_UVERS, l); X replen = sizeof(callbuf); X if (call_pvmd(callbuf, sndlen, callbuf, &replen) == -1) X return -1; X if (!(uhdr->um_flg & UF_ACK)) { X fprintf(stderr, "checkver: version mismatch\n"); X return 1; X } X p = um_data(uhdr); X ver = lupps(&p, (int*)0); X myndf = lupai(&p); X/* X fprintf(stderr, "checkver: myndf=%d\n", myndf); X*/ X if (strcmp(ver, PVM_UVERS)) { X fprintf(stderr, "checkver: version mismatch (%s/%s)\n", X PVM_UVERS, ver); X return 1; X } X return 0; X} X static vc_stat() X{ X struct vcd *vcp; X char buf[64]; X X fputs("vc_stat:\n", stderr); X fputs(" Orig Process Use\n", stderr); X for (vcp = vlist; vcp; vcp = vcp->vc_next) { X sprintf(buf, "%s,%d", vcp->vc_name, vcp->vc_inum); X fprintf(stderr, "%s %16s %6d\n", X (vcp->vc_flags & VCF_LOCAL ? "local" : " rem"), X buf, vcp->vc_use); X } X fflush(stderr); X} X pvm_uerr(f, n) X char *f; /* error location */ X int n; /* error code */ X{ X pvm_errno = n; X if (pvm_aerr) { X fprintf(stderr, "PVM user lib <%s,%d>: ", X (whoname ? whoname : "noname"), whoinum); X pvm_perror(f); X fflush(stderr); X } X return n; X} X X X/************************* X* User Library Functions * X* * X*************************/ X int barrier(name, num) X char *name; /* name of barrier (any string) */ X int num; /* number that must reach for us to continue */ X{ X userm *uhdr = (userm*)callbuf; X int naml = strlen(name) + 1; X int sndlen = sizeof(*uhdr) + LLADJ(naml) + sizeof(int); X int replen = sizeof(callbuf); X char *p = um_data(uhdr); X X if (num < 1) /* bogus quorum */ X return pvm_uerr("barrier", PvmBadParam); X if (num == 1) /* degenerate quorum */ X return 0; X uhdr->um_type = UMC_BARR; X uhdr->um_flg = UF_BARR; X lpacs(&p, name, naml); X lpaci(&p, num); X if (call_pvmd(callbuf, sndlen, callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) X return pvm_uerr("barrier", PvmSysErr); X if (uhdr->um_flg & UF_BQM) X return pvm_uerr("barrier", PvmMismatch); X return 0; X} X int enroll(proc) X char *proc; X{ X int sndlen; X int l; X userm *uhdr = (userm*)callbuf; X int replen; X char *p = um_data(uhdr); X X if (icsock != -1) X return pvm_uerr("enroll", PvmAlready); X if ((l = strlen(proc) + 1) > MAXUPROCNAMELEN) X return pvm_uerr("enroll", PvmTooLong); X if (mksocs() == -1) X return pvm_uerr("enroll", PvmSysErr); X sndlen = sizeof(*uhdr) + LLADJ(l); X X /* Check version */ X X if (checkver()) { X unmksocs(); X return pvm_uerr("enroll", PvmSysErr); X } X X /* Call pvmd to enroll */ X X uhdr->um_type = UMC_ENROLL; X uhdr->um_flg = 0; X lpacs(&p, proc, l); X X replen = sizeof(callbuf); X if (call_pvmd(callbuf, sndlen, callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) { X return pvm_uerr("enroll", PvmSysErr); X } X if (uhdr->um_flg & UF_ALRDY) X return pvm_uerr("enroll", PvmAlready); X whoname = sstring(proc); X p = um_data(uhdr); X whoinum = lupai(&p); X maxxmlen = lupai(&p); X frgdlen = maxxmlen - FRHDLEN; X bcopy(p, (char*)&thisip, sizeof(thisip)); X pstatus(&nmachines, &narches); X dorawdata = (narches == 1) ? 1 : 0; X X /* Create a stream socket on which to listen for peer comm. */ X X mkvsock(); X X /* Send virtual ckt address back to pvmd */ X X sndlen = sizeof(*uhdr) + sizeof(vaddr); X uhdr->um_type = UMC_SETVC; X uhdr->um_flg = 0; X p = um_data(uhdr); X bcopy((char*)&vaddr, p, sizeof(vaddr)); X replen = sizeof(callbuf); X if (call_pvmd(callbuf, sndlen, callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) { X return pvm_uerr("enroll", PvmSysErr); X } X X return whoinum; X} X int initiate(aout, arch) X char *aout; /* name of executable */ X char *arch; /* architecture or NULL */ X{ X userm *uhdr = (userm*)callbuf; X int replen = sizeof(callbuf); X int sndlen; X int namlen; X int parlen = 0; X char *p = um_data(uhdr); X X if ((namlen = strlen(aout) + 1) > MAXUPROCNAMELEN) X return pvm_uerr("initiate", PvmTooLong); X X uhdr->um_type = UMC_INIT; X uhdr->um_flg = 0; X if (arch && *arch) X parlen = strlen(arch) + 1; X else { X parlen = 1; X arch = ""; X } X X sndlen = sizeof(*uhdr) + LLADJ(namlen) + LLADJ(parlen) X + LLADJ(1) + sizeof(int); X X lpacs(&p, aout, namlen); X lpacs(&p, arch, parlen); X lpacs(&p, "", 1); /* host */ X lpaci(&p, 0); X X if (call_pvmd(callbuf, sndlen, callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) X return pvm_uerr("initiate", PvmSysErr); X X if (uhdr->um_flg & UF_NEXE) X return pvm_uerr("initiate", PvmNoFile); X if (uhdr->um_flg & UF_NHOST) X return pvm_uerr("initiate", PvmNoHost); X X p = um_data(uhdr); X return lupai(&p); X} X int initiateM(aout, host) X char *aout; /* name of executable */ X char *host; /* hostname */ X{ X userm *uhdr = (userm*)callbuf; X int replen = sizeof(callbuf); X int sndlen; X int namlen; X int parlen = 0; X char *p = um_data(uhdr); X X if ((namlen = strlen(aout) + 1) > MAXUPROCNAMELEN) X return pvm_uerr("initiateM", PvmTooLong); X X uhdr->um_type = UMC_INIT; X uhdr->um_flg = 0; X if (host && *host) X parlen = strlen(host) + 1; X else { X parlen = 1; X host = ""; X } X X sndlen = sizeof(*uhdr) + LLADJ(namlen) + LLADJ(parlen) X + LLADJ(1) + sizeof(int); X X lpacs(&p, aout, namlen); X lpacs(&p, "", 1); /* arch */ X lpacs(&p, host, parlen); X lpaci(&p, 0); X X if (call_pvmd(callbuf, sndlen, callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) X return pvm_uerr("initiateM", PvmSysErr); X X if (uhdr->um_flg & UF_NEXE) X return pvm_uerr("initiateM", PvmNoFile); X if (uhdr->um_flg & UF_NHOST) X return pvm_uerr("initiateM", PvmNoHost); X X p = um_data(uhdr); X return lupai(&p); X} X void leave() X{ X userm *uhdr = (userm*)callbuf; X int replen; X struct vcd *vcp, *vcp2; X X uhdr->um_type = UMC_LEAVE; X uhdr->um_flg = 0; X replen = sizeof(callbuf); X (void)call_pvmd(callbuf, sizeof(*uhdr), callbuf, &replen); X unmksocs(); X if (whoname) X m_free(whoname); X whoname = 0; X X /* free up virtual ckt descriptors */ X X for (vcp = vlist; vcp; vcp = vcp2) { X vcp2 = vcp->vc_next; X free_vcd(vcp); X } X X /* free up instance cache */ X X for (vcp = micac; vcp; vcp = vcp2) { X vcp2 = vcp->vc_next; X free_vcd(vcp); X } X} X int pvm_mstat(na, hsa, hna, haa) X int *na; /* ret number of hosts */ X int **hsa; /* ret status arr of length *na */ X char ***hna; /* ret name arr of length *na */ X char ***haa; /* ret archs arr of length *na */ X{ X userm *uhdr = (userm*)callbuf; X int replen; X char *p = um_data(uhdr); X static int nhosts = 0; X static int *hs = 0; X static char **hn = 0; X static char **ha = 0; X static int myhost; X int i; X X if (!nhosts) { /* XXX will have to change with dynamic config */ X uhdr->um_type = UMC_MSTAT; X uhdr->um_flg = 0; X replen = sizeof(callbuf); X if (call_pvmd(callbuf, sizeof(*uhdr), callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) X return pvm_uerr("pvm_mstat", PvmSysErr); X nhosts = lupai(&p); X myhost = lupai(&p); X hs = tmalloc(nhosts, int); X hn = tmalloc(nhosts, char*); X ha = tmalloc(nhosts, char*); X for (i = 0; i < nhosts; i++) { X hs[i] = lupai(&p); X hn[i] = sstring(lupps(&p, (int*)0)); X ha[i] = sstring(lupps(&p, (int*)0)); X } X } X if (na) X *na = nhosts; X if (hsa) X *hsa = hs; X if (hna) X *hna = hn; X if (haa) X *haa = ha; X return myhost; X} X int probe(type) X int type; /* message type we want or (-1) for wildcard */ X{ X return probemulti(1, &type); X} X int probemulti(ntypes, types) X int ntypes; /* number of message types */ X int *types; /* array of message types */ X{ X mxd **mpp = &rxlist; X mxd *mp; X int i; X X /* scan rxlist for message matching type */ X X while (*mpp) { X for (i = 0; i < ntypes; i++) X if (types[i] == -1 || (*mpp)->md_type == types[i]) X break; X if (i < ntypes) X break; X mpp = &((*mpp)->md_next); X } X if (!*mpp) { X if (xfermess(0) == -1) X return pvm_uerr("probemulti", PvmSysErr); X while (*mpp) { X for (i = 0; i < ntypes; i++) X if (types[i] == -1 || (*mpp)->md_type == types[i]) X break; X if (i < ntypes) X break; X mpp = &((*mpp)->md_next); X } X } X if (*mpp) { X mp = *mpp; X if (icmname) X m_free(icmname); X icmname = sstring(mp->md_name); X icminum = mp->md_inum; X icmtype = mp->md_type; X icmlen = mp->md_length; X return icmtype; X } X return (pvm_errno = PvmNoMsg); X} X int pstatus(nproc, mixed) X int *nproc; X int *mixed; X{ X userm *uhdr = (userm*)callbuf; X int replen; X char *p = um_data(uhdr); X int i; X X uhdr->um_type = UMC_PSTAT; X uhdr->um_flg = 0; X replen = sizeof(callbuf); X if (call_pvmd(callbuf, sizeof(*uhdr), callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) X return pvm_uerr("pstatus", PvmSysErr); X i = lupai(&p); X if (nproc) X *nproc = i; X if (mixed) X *mixed = lupai(&p); X return 0; X} X int rcv(type) X int type; X{ X return rcvmulti(1, &type); X} X int rcvmulti(ntypes, types) X int ntypes; /* number of message types */ X int *types; /* array of message types */ X{ X mxd **mpp = &rxlist; X mxd *mfp = 0; X int i; X X do { X X /* scan rxlist for message matching type. X block until we get one. */ X X while (*mpp) { X for (i = 0; i < ntypes; i++) X if (types[i] == -1 || (*mpp)->md_type == types[i]) X break; X if (i < ntypes) { X mxd *mp = *mpp; X X /* unlink message */ X X *mpp = mp->md_next; X if (rxtail == mp) X rxtail = mfp; X X /* it's now the working rcvd msg */ X X freefrags(icchain); X icchain = mp->md_frag; X iccur = 0; X if (icmname) X m_free(icmname); X icmname = mp->md_name; X icminum = mp->md_inum; X icmtype = mp->md_type; X icmenc = mp->md_encoding; X if ((icmlen = mp->md_length) > 0) { X iccur = icchain; X xdrmem_create(&icxdr, iccur->fr_data, iccur->fr_length, X XDR_DECODE); X } X/* X fprintf(stderr, "rcv: matched message from <%s,%d> type %d len %d\n", X icmname, icminum, icmtype, icmlen); X*/ X m_free(mp); X icdataconv = icmenc ? PVM_RAW : PVM_XDR; X if (icmenc && icmenc != myndf) X return pvm_uerr("rcvmulti", PvmBadMsg); X return icmtype; X } X mfp = *mpp; X mpp = &(mfp->md_next); X } X if ((i = xfermess(1)) != 1) { X fprintf(stderr, "rcv(): xfermess ret %d (should not happen)\n", X i); X } X } while (*mpp); X X fprintf(stderr, "rcv is returning -1 (should not happen)\n"); X return pvm_uerr("rcvmulti", PvmSysErr); /* should never happen */ X} X X int rcvinfo(len, type, proc, inum) X int *len, *type, *inum; X char *proc; X{ X if (!icmname) X return pvm_uerr("rcvinfo", PvmNoMsg); X if (len) X *len = icmlen; X if (type) X *type = icmtype; X if (proc) X strcpy(proc, icmname); X if (inum) X *inum = icminum; X return 0; X} X int ready(event) X char *event; X{ X userm *uhdr = (userm*)callbuf; X int naml = strlen(event) + 1; X int sndlen = sizeof(*uhdr) + LLADJ(naml); X int replen = sizeof(callbuf); X char *p = um_data(uhdr); X X uhdr->um_type = UMC_BARR; X uhdr->um_flg = UF_RDY; X lpacs(&p, event, naml); X if (call_pvmd(callbuf, sndlen, callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) X return pvm_uerr("ready", PvmSysErr); X return 0; X} X int snd(proc, inum, type) X char *proc; X int inum; X int type; X{ X int sndlen; X int replen; X userm *uhdr = (userm*)callbuf; X char *p; X frag *fp; X int tonaml; X int hlen; X XDR xdrobj; X int frflg; X int frenc; X X umseq++; X X if (type < 0) X return pvm_uerr("snd", PvmBadParam); X X if ((tonaml = strlen(proc) + 1) > MAXUPROCNAMELEN) X return pvm_uerr("snd", PvmTooLong); X X if (ogchain) { X X /* get length of last fragment */ X X ogcur->fr_length = xdr_getpos(&ogxdr); X X /* send each frag to pvmd */ X X for (fp = ogchain; fp; fp = fp->fr_next) { X X /* prepend ulib-pvm header + ulib-ulib header */ X X uhdr->um_type = UMC_SEND; X uhdr->um_flg = 0; X p = um_data(uhdr); X lpacs(&p, proc, tonaml); X lpaci(&p, inum); X xdrmem_create(&xdrobj, p, FRHDLEN, XDR_ENCODE); X xdr_int(&xdrobj, &umseq); X xdr_int(&xdrobj, &type); X frflg = ((fp == ogchain) ? UUF_STP : 0) X | (fp->fr_next ? 0 : UUF_ENP); X xdr_int(&xdrobj, &frflg); X frenc = ogdataconv == PVM_RAW ? myndf : 0; X xdr_int(&xdrobj, &frenc); X hlen = (p - callbuf) + xdr_getpos(&xdrobj); X bcopy(callbuf, fp->fr_data + FRHDLEN - hlen, hlen); X sndlen = hlen + fp->fr_length; X/* X fprintf(stderr, "snd() len %d\n", sndlen); X*/ X X /* send packet to pvmd */ X replen = sizeof(callbuf); X if (call_pvmd(fp->fr_data + FRHDLEN - hlen, sndlen, X callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) X return pvm_uerr("snd", PvmSysErr); X if (uhdr->um_flg & UF_NPROC) X return pvm_uerr("snd", PvmNoComp); X } X X } else { /* zero length message */ X uhdr->um_type = UMC_SEND; X uhdr->um_flg = 0; X p = um_data(uhdr); X lpacs(&p, proc, tonaml); X lpaci(&p, inum); X xdrmem_create(&xdrobj, p, FRHDLEN, XDR_ENCODE); X xdr_int(&xdrobj, &umseq); X xdr_int(&xdrobj, &type); X frflg = UUF_STP|UUF_ENP; X xdr_int(&xdrobj, &frflg); X frenc = ogdataconv == PVM_RAW ? myndf : 0; X xdr_int(&xdrobj, &frenc); X sndlen = (p - callbuf) + xdr_getpos(&xdrobj); X X /* send packet to pvmd */ X replen = sizeof(callbuf); X if (call_pvmd(callbuf, sndlen, callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) X return pvm_uerr("snd", PvmSysErr); X if (uhdr->um_flg & UF_NPROC) X return pvm_uerr("snd", PvmNoComp); X } X return 0; X} X int status(proc, inum) X char *proc; X int inum; X{ X userm *uhdr = (userm*)callbuf; X int naml = strlen(proc) + 1; X int sndlen = sizeof(*uhdr) + LLADJ(naml) + sizeof(int); X int replen = sizeof(callbuf); X char *p = um_data(uhdr); X X if (naml > MAXUPROCNAMELEN) X return pvm_uerr("status", PvmTooLong); X X uhdr->um_type = UMC_STAT; X lpacs(&p, proc, naml); X lpaci(&p, inum); X if (call_pvmd(callbuf, sndlen, callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) X return pvm_uerr("status", PvmSysErr); X return uhdr->um_flg & UF_RUN ? 1 : 0; X} X int terminate(proc, inum) X char *proc; X int inum; X{ X userm *uhdr = (userm*)callbuf; X int naml = strlen(proc) + 1; X int sndlen = sizeof(*uhdr) + LLADJ(naml) + sizeof(int); X int replen = sizeof(callbuf); X char *p = um_data(uhdr); X X if (naml > MAXUPROCNAMELEN) X return pvm_uerr("terminate", PvmTooLong); X X uhdr->um_type = UMC_TERM; X lpacs(&p, proc, naml); X lpaci(&p, inum); X if (call_pvmd(callbuf, sndlen, callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) X return pvm_uerr("terminate", PvmSysErr); X if (uhdr->um_flg & UF_NPROC) X return pvm_uerr("terminate", PvmNoComp); X return 0; X} X X/* vrcv() X* X* Similar to rcv(), but message is transported over alternate X* protocol. X*/ X int vrcv(type) X int type; X{ X return vrcvmulti(1, &type); X} X X/* vrcvmulti() X* X* Similar to rcvmulti(), but message is transported over alternate X* protocol. X*/ X int vrcvmulti(ntypes, types) X int ntypes; /* number of message types */ X int *types; /* array of message types */ X{ X mxd **mpp = &rxlist; X mxd *mfp = 0; X int i; X X/* X fputs("vrcvmulti()\n", stderr); X*/ X do { X X /* scan rxlist for message matching type. X block until we get one. */ X X while (*mpp) { X for (i = 0; i < ntypes; i++) X if (types[i] == -1 || (*mpp)->md_type == types[i]) X break; X if (i < ntypes) { X mxd *mp = *mpp; X X /* unlink message */ X X *mpp = mp->md_next; X if (rxtail == mp) X rxtail = mfp; X X /* it's now the working rcvd msg */ X X freefrags(icchain); X icchain = mp->md_frag; X iccur = 0; X if (icmname) X m_free(icmname); X icmname = mp->md_name; X icminum = mp->md_inum; X icmtype = mp->md_type; X icmenc = mp->md_encoding; X if ((icmlen = mp->md_length) > 0) { X iccur = icchain; X xdrmem_create(&icxdr, iccur->fr_data, iccur->fr_length, X XDR_DECODE); X } X m_free(mp); X icdataconv = icmenc ? PVM_RAW : PVM_XDR; X if (icmenc && icmenc != myndf) X return pvm_uerr("vrcvmulti", PvmBadMsg); X/* X fprintf(stderr, X "vrcvmulti: got msg from <%s,%d> type %d len %d fmt %d decode=%s\n", X icmname, icminum, icmtype, icmlen X icmenc, (icdataconv == PVM_RAW ? "raw" : "xdr")); X*/ X return icmtype; X } X mfp = *mpp; X mpp = &(mfp->md_next); X } X if ((i = vxfermess(1, -1)) != 1) { X fprintf(stderr, "vrcvmulti(): vxfermess ret %d (should not happen)\n", X i); X } X } while (*mpp); X X fprintf(stderr, "vrcvmulti is returning -1 (should not happen)\n"); X return pvm_uerr("vrcvmulti", PvmSysErr); /* should never happen */ X} X X/* vsnd() X* X* Similar to snd(), but message is transported over alternate X* protocol. X*/ X int vsnd(proc, inum, type) X char *proc; X int inum; X int type; X{ X int sendlen; /* length of message */ X struct uumh uuhdr; /* proc<->proc message header */ X struct vcd *vcp; /* virt ckt desc for rx proc */ X int fd; /* socket to write on */ X frag *fp; X char *p; X int cc; X X/* X fprintf(stderr, "vsnd(%s, %d, %d)\n", proc, inum, type); X*/ X if (type < 0) X return pvm_uerr("vsnd", PvmBadParam); X X if ((strlen(proc) + 1) > MAXUPROCNAMELEN) X return pvm_uerr("vsnd", PvmTooLong); X X /* XXX This is a hack. Should really do recursive doubling bcast */ X if (inum == -1) { X int i, maxi; X int err = 0; X X if (whoami((char*)0, (int*)0)) X return pvm_uerr("vsnd", PvmSysErr); X if ((maxi = instances(proc)) < 1) X return pvm_uerr("vsnd", PvmSysErr); X for (i = 0; i < maxi; i++) X if ((whoinum != i || strcmp(proc, whoname) != 0) X && vsnd(proc, i, type) < 0) X err = 1; X if (err) X return pvm_uerr("vsnd", PvmSysErr); X return 0; X } X X sendlen = 0; X if (ogchain) { X /* get length of last fragment */ X ogcur->fr_length = xdr_getpos(&ogxdr); X X /* find length of complete message */ X for (fp = ogchain; fp; fp = fp->fr_next) { X sendlen += fp->fr_length; X/* X fprintf(stderr, "vsnd: frag len %d\n", fp->fr_length); X*/ X } X } X X /* short ckt if to us. don't try to send it, ugh. */ X X if (inum == whoinum && !strcmp(proc, whoname)) { X mxd *qe; X frag *fe; X X/* X fprintf(stderr, "<%s,%d>vsnd: to myself\n", whoname, whoinum); X*/ X /* make rx msg descriptor */ X X fe = tmalloc(1, frag); X fe->fr_length = sendlen; X fe->fr_next = 0; X qe = tmalloc(1, mxd); X qe->md_name = sstring(whoname); X qe->md_inum = whoinum; X qe->md_type = type; X qe->md_length = sendlen; X qe->md_encoding = ogdataconv == PVM_RAW ? myndf : 0; X qe->md_frag = fe; X qe->md_ftail = fe; X qe->md_next = 0; X X /* copy xmit msg to rx */ X if (ogchain) { X p = fe->fr_data = tmalloc(sendlen, char); X for (fp = ogchain; fp; fp = fp->fr_next) { X bcopy(fp->fr_data + FRHDLEN, p, fp->fr_length); X p += fp->fr_length; X } X X } else { X fe->fr_data = 0; X } X X /* add to rx list */ X if (rxtail) X rxtail->md_next = qe; X else X rxlist = qe; X rxtail = qe; X return 0; X } X X do { X if (!(vcp = get_vc(proc, inum))) X return pvm_uerr("vsnd", PvmSysErr); X fd = vcp->vc_sock; X/* X fprintf(stderr, "vsnd() vc_sock = %d\n", fd); X*/ X X /* make message header */ X X p = uuhdr.uu_len; X xpaci(&p, sendlen); X p = uuhdr.uu_type; X xpaci(&p, type); X p = uuhdr.uu_encoding; X xpaci(&p, (ogdataconv == PVM_RAW ? myndf : 0)); X uuhdr.uu_flags = 0; X uuhdr.uu_bcr[0] = 0; X uuhdr.uu_bcr[1] = 0; X if (!vogchain) { X vogchain = tmalloc(1, struct frag); X vogchain->fr_length = sizeof(uuhdr); X vogchain->fr_data = tmalloc(FRHDLEN+sizeof(uuhdr), char); X } X bcopy((char*)&uuhdr, vogchain->fr_data + FRHDLEN, sizeof(uuhdr)); X vogchain->fr_next = ogchain; X X /* send message */ X X if ((cc = vxfermess(1, fd)) == -1) X return pvm_uerr("vsnd", PvmSysErr); X if (cc == 2) { X unlk_vcd(vcp); X fputs("vsnd: must retry\n", stderr); X } X } while (cc == 2); X X vcp->vc_use += sendlen + 1000; X return 0; X} X int waituntil(event) X char *event; X{ X userm *uhdr = (userm*)callbuf; X int naml = strlen(event) + 1; X int sndlen = sizeof(*uhdr) + LLADJ(naml); X int replen = sizeof(callbuf); X char *p = um_data(uhdr); X X uhdr->um_type = UMC_BARR; X uhdr->um_flg = 0; X lpacs(&p, event, naml); X if (call_pvmd(callbuf, sndlen, callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) X return pvm_uerr("waituntil", PvmSysErr); X return 0; X} X int whoami(proc, inum) X char *proc; X int *inum; X{ X userm *uhdr = (userm*)callbuf; X int replen; X char *p = um_data(uhdr); X int sndlen; X X if (!whoname) { X /* alternative to enroll in case we were created by pvmd */ X if (ogsock == -1 && mksocs() == -1) X return pvm_uerr("whoami", PvmSysErr); X X /* Check version */ X X if (checkver()) { X unmksocs(); X return pvm_uerr("whoami", PvmSysErr); X } X X /* Call pvmd to get our name and instance */ X X uhdr->um_type = UMC_WHOAMI; X uhdr->um_flg = 0; X replen = sizeof(callbuf); X if (call_pvmd(callbuf, sizeof(*uhdr), callbuf, &replen) == -1) X return pvm_uerr("whoami", PvmSysErr); X if (!(uhdr->um_flg & UF_ACK)) { X unmksocs(); X return pvm_uerr("whoami", PvmNoComp); X } X whoname = sstring(lupps(&p, (int*)0)); X whoinum = lupai(&p); X maxxmlen = lupai(&p); X frgdlen = maxxmlen - FRHDLEN; X bcopy(p, (char*)&thisip, sizeof(thisip)); X pstatus(&nmachines, &narches); X dorawdata = (narches == 1) ? 1 : 0; X X /* Create a stream socket on which to listen for peer comm. */ X X mkvsock(); X X /* Send virtual ckt address back to pvmd */ X X sndlen = sizeof(*uhdr) + sizeof(vaddr); X uhdr->um_type = UMC_SETVC; X uhdr->um_flg = 0; X p = um_data(uhdr); X bcopy((char*)&vaddr, p, sizeof(vaddr)); X replen = sizeof(callbuf); X if (call_pvmd(callbuf, sndlen, callbuf, &replen) == -1 X || !(uhdr->um_flg & UF_ACK)) { X return pvm_uerr("whoami", PvmSysErr); X } X } X if (proc) X strcpy(proc, whoname); X if (inum) X *inum = whoinum; X return 0; X} X END_OF_FILE if test 49291 -ne `wc -c <'pvm2.4/src/ulib.c'`; then echo shar: \"'pvm2.4/src/ulib.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/ulib.c' fi if test -f 'pvm2.4/src/uliberr.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/uliberr.c'\" else echo shar: Extracting \"'pvm2.4/src/uliberr.c'\" \(1581 characters\) sed "s/^X//" >'pvm2.4/src/uliberr.c' <<'END_OF_FILE' X/* X * PVM 2.4 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 31 Dec 1991 X * X * Uliberr.c X * X * Error variables/messages/functions for libpvm. X * X$Log: uliberr.c,v $ X * Revision 1.6 1992/03/18 19:09:15 manchek X * added text for PvmBadMsg X * X * Revision 1.5 1992/03/16 19:12:40 manchek X * pvm_perror() is void type X * X * Revision 1.4 1992/01/24 23:48:25 manchek X * moved pvm_uerr to ulib.c X * X * Revision 1.3 1992/01/24 22:24:38 manchek X * added pvm_uerr() to automatically print ulib error messages. X * added pvm_aerr to allow feature to be switched off X * X * Revision 1.2 1992/01/23 23:23:52 manchek X * added "Already enrolled" error message X * X * Revision 1.1 1991/12/31 23:58:39 manchek X * Initial revision X * X * X */ X X#include X int pvm_errno = 0; /* exported last error */ X char *pvm_errlist[] = { /* error messages for -pvm_errno */ X "No Error", X "System Error", X "Bad Parameter", X "Count Mismatch", X "Name Too Long", X "End of Buffer", X "No such Host", X "No such File", X "No such Component", X "No Messages", X "Can't Malloc", X "Already Enrolled", X "Can't Decode Message" X}; X int pvm_nerr = sizeof(pvm_errlist) X /sizeof(pvm_errlist[0]); /* exported num of errors */ X int pvm_aerr = 1; /* whether to auto print err msgs */ X X/* pvm_perror() X* X* Print a string along with the message for the last pvm error. X*/ X void pvm_perror(s) X char *s; X{ X fprintf(stderr, "%s: %s\n", X (s ? s : "(null)"), X (pvm_errno <= 0 && pvm_errno > -pvm_nerr X ? pvm_errlist[-pvm_errno] : "Unknown Error")); X} X END_OF_FILE if test 1581 -ne `wc -c <'pvm2.4/src/uliberr.c'`; then echo shar: \"'pvm2.4/src/uliberr.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/uliberr.c' fi if test -f 'pvm2.4/src/uside.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/uside.c'\" else echo shar: Extracting \"'pvm2.4/src/uside.c'\" \(18639 characters\) sed "s/^X//" >'pvm2.4/src/uside.c' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Uside.c X * X * User-call entry points to Pvmd. X * X$Log: uside.c,v $ X * Revision 1.17 1992/12/22 16:29:10 manchek X * fixed u_mstat so it returns to host index X * X * Revision 1.16 1992/12/16 06:40:25 manchek X * added a few casts for retentiveness X * X * Revision 1.15 1992/03/18 19:14:09 manchek X * u_version() now passes back myndf to client process X * X * Revision 1.14 1992/03/16 19:07:29 manchek X * added u_mstat to reply to UMC_MSTAT X * X * Revision 1.13 1992/01/30 17:59:03 manchek X * don't remove ulib socket if whoami returns no name X * X * Revision 1.12 1992/01/24 22:28:36 manchek X * u_enroll returns ALRDY flag is process tries to enroll >once X * X * Revision 1.11 1992/01/07 01:34:43 manchek X * now do ulib version check when accepting new process. X * traded random code for croak() X * X * Revision 1.10 1992/01/01 00:03:48 manchek X * changes to support virt ckts (to enroll and whoami) X * X * Revision 1.9 1991/12/11 17:12:46 manchek X * now don't have to set PVM_BC when using toall() X * X * Revision 1.8 1991/11/28 00:50:28 manchek X * replies with nack when process calls before enrolling X * X * Revision 1.7 1991/11/27 20:27:28 manchek X * switch to instrumented malloc defines X * X * Revision 1.6 1991/11/26 01:47:40 manchek X * made a switch tbl for u side entry points X * X * Revision 1.5 1991/08/01 19:28:02 manchek X * u_whoami() and u_enroll() now return maxxmlen for X * max message length negotiation X * X * Revision 1.4 1991/07/24 20:43:42 manchek X * added warning message on recv unknown ulib message type X * X * Revision 1.3 1991/07/24 16:59:15 manchek X * added u_pstatus() to field UMC_PSTAT requests from ulib. X * X * Revision 1.2 1991/06/02 21:32:46 manchek X * fixed ucall() - destroy incomplete lproc() created when we get a packet X * from a process that isn't an enroll request. X * X * Revision 1.1 1991/05/06 14:43:35 manchek X * Initial revision X * X * X */ X X#include X#include X#include X#ifndef NOUNIXSOC X#include X#endif X#include X#include X#include X#ifndef SYSVSTRING X#include X#else X#include X#endif X#include "global.h" X#include "pvmd.h" X#include "micomm.h" X#include "rem.h" X#include "proc.h" X#include "wait.h" X#include "loclcomm.h" X char *sstring(); X extern int myhost; /* from pvmd.c */ extern int nhosts, narchs; /* from pvmd.c */ extern pvmhost *hosts; /* from pvmd.c */ extern int maxxmlen; /* from pvmd.c */ extern xproc *xproclist; /* from proc.c */ extern int myndf; /* from pvmd.c */ X X/************************** X* User-side command calls * X* * X**************************/ X int u_bogus(), X u_enroll(), u_init(), u_term(), u_whoami(), u_leave(), u_send(), X u_recv(), u_barr(), u_stat(), u_pstat(), u_inst(), u_getvc(), X u_setvc(), u_version(), u_mstat(); X static int (*uswitch[])() = { X u_bogus, X u_enroll, X u_init, X u_term, X u_whoami, X u_leave, X u_send, X u_recv, X u_barr, X u_stat, X u_pstat, X u_inst, X u_getvc, X u_setvc, X u_version, X u_mstat X}; X X#ifdef NOUNIXSOC ucall(uhdr, msglen, fromad) X struct sockaddr_in *fromad; X#else ucall(uhdr, msglen) X#endif X userm *uhdr; X int msglen; X{ X lproc *lpp; X int t; X X t = uhdr->um_type; X#ifdef DEBUG X fprintf(stderr, "ucall() pid=%d len=%d type=%d\n", X uhdr->um_pid, msglen, t); X#endif X X /* find user proc desc or create a new one */ X X lpp = mak_lpp(uhdr->um_pid); X lpp->lp_seqlast = uhdr->um_seq; X lpp->lp_flg |= PS_PWAIT; X#ifdef NOUNIXSOC X if (!lpp->lp_adlen) { X lpp->lp_sad.sin_family = AF_INET; X lpp->lp_sad.sin_port = fromad->sin_port; X bcopy((char*)&fromad->sin_addr, (char*)&lpp->lp_sad.sin_addr, X sizeof(struct sockaddr_in)); X lpp->lp_adlen = sizeof(struct sockaddr_in); X } X#endif X X /* nack and clear proc if version mismatch and not checking version */ X if ((lpp->lp_flg & PS_VNOK) X && t != UMC_VERSION) { X fprintf(stderr, "ucall(): ulib version mismatch pid %d doesn't know\n", X lpp->lp_pid); X uhdr->um_flg = 0; X touser(lpp, uhdr, sizeof(*uhdr)); X croak(lpp); X return; X } X X /* nack and clear proc desc if no name and not enrolling */ X if (!lpp->lp_name X && t != UMC_ENROLL X && t != UMC_VERSION) { X fprintf(stderr, "ucall(): pid %d didn't enroll\n", X lpp->lp_pid); X uhdr->um_flg = 0; X touser(lpp, uhdr, sizeof(*uhdr)); X if (t != UMC_WHOAMI) X croak(lpp); X return; X } X X if (t < 0 || t >= sizeof(uswitch)/sizeof(uswitch[0])) X u_bogus(lpp, uhdr, msglen); X else X (uswitch[t])(lpp, uhdr, msglen); X} X u_bogus(lpp, uhdr, msglen) X/*ARGSUSED*/ X lproc *lpp; X userm *uhdr; X int msglen; X{ X fprintf(stderr, "ucall(): bogus msg from pid %d <%s,%d> type %d\n", X lpp->lp_pid, X (lpp->lp_name ? lpp->lp_name : "(null)"), lpp->lp_inum, X uhdr->um_type); X} X u_version(lpp, uhdr, msglen) X/*ARGSUSED*/ X lproc *lpp; X userm *uhdr; X int msglen; X{ X char *p; X char *ver; X int l = strlen(PVM_UVERS) + 1; X int nok; X int ublen; X X p = um_data(uhdr); X ver = lupps(&p, (int*)0); X if (nok = strcmp(ver, PVM_UVERS)) X fprintf(stderr, "ucall: version mismatch pid %d (%s/%s)\n", X lpp->lp_pid, PVM_UVERS, ver); X X X ublen = sizeof(*uhdr) + LLADJ(l) + sizeof(int); X uhdr->um_flg = nok ? 0 : UF_ACK; X p = um_data(uhdr); X lpacs(&p, PVM_UVERS, l); X lpaci(&p, myndf); X touser(lpp, uhdr, ublen); X if (nok) X croak(lpp); X else X lpp->lp_flg &= ~PS_VNOK; X} X u_setvc(lpp, uhdr, msglen) X/*ARGSUSED*/ X lproc *lpp; X userm *uhdr; X int msglen; X{ X pvmg thdr; /* for broadcast message */ X int namlen = strlen(lpp->lp_name) + 1; X char *p; X int theaddr, theport; X X /* copy addr and ack process */ X X bcopy(um_data(uhdr), (char*)&lpp->lp_vad, sizeof(struct sockaddr_in)); X uhdr->um_flg = UF_ACK; X touser(lpp, uhdr, sizeof(*uhdr)); X X /* notify local processes */ X X deliver_vc(lpp->lp_name, lpp->lp_inum, &lpp->lp_vad); X X /* notify remote processes */ X X thdr.pv_len = PVM_HSIZ + XLADJ(namlen) + PVM_INT*3; X thdr.pv_data = tmalloc(thdr.pv_len, char); X thdr.pv_type = PVM_VCNOT; X thdr.pv_wchan = 0; X thdr.pv_flg = 0; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, lpp->lp_name); X xpaci(&p, lpp->lp_inum); X theaddr = ntohl(0xffffffff & lpp->lp_vad.sin_addr.s_addr); X theport = 0xffff & ntohs(lpp->lp_vad.sin_port); X xpaci(&p, theaddr); X xpaci(&p, theport); X X toall(&thdr, 0); X} X u_getvc(lpp, uhdr, msglen) X/*ARGSUSED*/ X lproc *lpp; X userm *uhdr; X int msglen; X{ X char *p = um_data(uhdr); X int namlen; /* length of name */ X char *name = lupps(&p, &namlen); /* process name */ X int inum = lupai(&p); /* process instance */ X xproc *xpp; X lproc *lpa; X X p = um_data(uhdr); X switch (locate(name, inum, &xpp, &lpa)) { X X case 1: /* it's local */ X if (!lpa->lp_vad.sin_port) X goto haftawait; X bcopy((char*)&lpa->lp_vad, p, sizeof(struct sockaddr_in)); X uhdr->um_flg = UF_ACK; X break; X X case 2: /* it's remote */ X if (!xpp->xp_vad.sin_port) X goto haftawait; X bcopy((char*)&xpp->xp_vad, p, sizeof(struct sockaddr_in)); X uhdr->um_flg = UF_ACK; X break; X X default: /* we have to find out where */ X goto haftawait; X } X X touser(lpp, uhdr, sizeof(*uhdr) + sizeof(struct sockaddr_in)); X return; X haftawait: X lpp->lp_bn = sstring(name); X lpp->lp_bin = inum; X lpp->lp_flg |= PS_VCW; X return; X} X u_inst(lpp, uhdr, msglen) X/*ARGSUSED*/ X lproc *lpp; X userm *uhdr; X int msglen; X{ X char *p = um_data(uhdr); X int namlen; X char *name = lupps(&p, &namlen); /* process name */ X pvmg thdr; X waitc *wp = new_waitc(WT_CNT); X X wp->w_proc = lpp; X thdr.pv_len = PVM_HSIZ + XLADJ(namlen) + PVM_INT; X thdr.pv_data = tmalloc(thdr.pv_len, char); X thdr.pv_type = PVM_CNT; X thdr.pv_flg = 0; X thdr.pv_wchan = wp->w_serial; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, name); X add_waitc(wp); X tohost(&hosts[0], &thdr, 0, (waitc*)0); X} X u_term(lpp, uhdr, msglen) X/*ARGSUSED*/ X lproc *lpp; X userm *uhdr; X int msglen; X{ X char *p = um_data(uhdr); X int namlen; X char *name = lupps(&p, &namlen); X int inum = lupai(&p); X xproc *xpa; X lproc *lpa; X pvmhost *hp; X waitc *wp; X pvmg thdr; X X /* make terminate message */ X X thdr.pv_data = tmalloc(thdr.pv_len = PVM_HSIZ + XLADJ(namlen) + PVM_INT, X char); X thdr.pv_type = PVM_TERM; X thdr.pv_flg = 0; X thdr.pv_wchan = 0; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, name); X xpaci(&p, inum); X X /* decide where to send */ X X switch (locate(name, inum, &xpa, &lpa)) { X X case 1: /* it's local */ X hp = &hosts[myhost]; X goto send; X X case 2: /* it's remote */ X hp = &hosts[xpa->xp_host]; X send: X uhdr->um_flg = UF_ACK; X touser(lpp, uhdr, sizeof(*uhdr)); X X tohost(hp, &thdr, 0, (waitc*)0); X break; X X default: /* we have to find out where */ X wp = new_waitc(WT_TERM); X wp->w_mhdr = tmalloc(1, pvmg); X bcopy((char*)&thdr, (char*)wp->w_mhdr, sizeof(thdr)); X wp->w_proc = lpp; X thdr.pv_data = tmalloc( X thdr.pv_len = PVM_HSIZ + XLADJ(namlen) + PVM_INT, char); X thdr.pv_type = PVM_ISPROC; X thdr.pv_flg = 0; X thdr.pv_wchan = wp->w_serial; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, name); X xpaci(&p, inum); X add_waitc(wp); X tohost(&hosts[0], &thdr, 0, (waitc*)0); X break; X } X} X u_barr(lpp, uhdr, msglen) X/*ARGSUSED*/ X lproc *lpp; X userm *uhdr; X int msglen; X{ X char *p = um_data(uhdr); X int namlen; X char *name = lupps(&p, &namlen); X pvmg thdr; X X if (uhdr->um_flg & UF_BARR) { /* this is a barrier */ X/* XXX barrier stuff not implemented, only waituntil */ X int quorum = lupai(&p); X X if (quorum < 1) { X uhdr->um_flg = 0; /* nack to user */ X touser(lpp, uhdr, sizeof(*uhdr)); X } else { X lpp->lp_flg |= PS_BAW; X lpp->lp_bn = sstring(name); X X isbarr(name, quorum); X /* bcast even if quorum mismatch so everyone knows */ X X thdr.pv_data = X tmalloc(thdr.pv_len = PVM_HSIZ + XLADJ(namlen) + PVM_INT, X char); X thdr.pv_type = PVM_BARRIER; /* bcast name */ X thdr.pv_flg = 0; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, name); X xpaci(&p, quorum); X X toall(&thdr, 0); X } X X } else { /* this is a ready/waituntil */ X X if (uhdr->um_flg & UF_RDY) { /* a ready */ X X uhdr->um_flg = UF_ACK; /* ack to user */ X touser(lpp, uhdr, sizeof(*uhdr)); X X thdr.pv_data = tmalloc(thdr.pv_len = PVM_HSIZ + XLADJ(namlen), X char); X thdr.pv_type = PVM_READY; /* bcast name */ X thdr.pv_flg = 0; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, name); X X isready(name); /* notify local procs */ X toall(&thdr, 0); X X } else { /* a waituntil */ X if (ckready(name)) { /* ready has already happend */ X uhdr->um_flg = UF_ACK; X touser(lpp, uhdr, sizeof(*uhdr)); X X } else { /* have to wait on it */ X lpp->lp_flg |= PS_WUW; X lpp->lp_bn = sstring(name); X } X } X } X} X u_stat(lpp, uhdr, msglen) X/*ARGSUSED*/ X lproc *lpp; X userm *uhdr; X int msglen; X{ X char *p = um_data(uhdr); X int namlen; X char *name = lupps(&p, &namlen); X int inum = lupai(&p); X X if (locate(name, inum, (xproc**)0, (lproc**)0) != 0) { /* running */ X uhdr->um_flg = UF_ACK|UF_RUN; X touser(lpp, uhdr, sizeof(*uhdr)); X X } else { /* have to check with pvmd[0] before we can say no */ X X if (myhost == 0) { /* wait if we're 0 we do know */ X uhdr->um_flg = UF_ACK; X touser(lpp, uhdr, sizeof(*uhdr)); X X } else { X pvmg thdr; X char *p; X waitc *wp = new_waitc(WT_STATUS); X X wp->w_proc = lpp; X thdr.pv_data = tmalloc( X thdr.pv_len = PVM_HSIZ + XLADJ(namlen) + PVM_INT, char); X thdr.pv_type = PVM_ISPROC; X thdr.pv_flg = 0; X thdr.pv_wchan = wp->w_serial; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, name); X xpaci(&p, inum); X add_waitc(wp); X tohost(&hosts[0], &thdr, 0, (waitc*)0); X } X } X} X u_init(lpp, uhdr, msglen) X/*ARGSUSED*/ X lproc *lpp; X userm *uhdr; X int msglen; X{ X char *p = um_data(uhdr); X char *name; X int namlen; X char *arch = 0; X int archlen; X char *host = 0; X int hostlen; X int hostnum = -1; X waitc *wp; X pvmg thdr; X X name = lupps(&p, &namlen); X arch = lupps(&p, &archlen); X host = lupps(&p, &hostlen); X X /* send fail if no host to suit */ X X#ifdef DEBUG X fprintf(stderr, "u_init() aout<%s> arch<%s> host<%s>\n", X name, arch, host); X#endif X if ((*arch && !isarch(arch)) X || (*host && (hostnum = get_host(host)) == -1)) { X X uhdr->um_flg = UF_ACK|UF_NHOST; X touser(lpp, uhdr, sizeof(*uhdr)); X return; X } X X /* make wait channel */ X X wp = new_waitc(WT_INIT); X wp->w_proc = lpp; X X /* make init message */ X/* XXX have to add args, stdin,out,err */ X X thdr.pv_data = tmalloc(thdr.pv_len = PVM_HSIZ + XLADJ(namlen), char); X thdr.pv_type = PVM_INIT; X thdr.pv_flg = 0; X thdr.pv_wchan = wp->w_serial; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, name); X X if (hostnum >= 0) { /* send directly to requested host */ X X add_waitc(wp); X tohost(&hosts[hostnum], &thdr, 0, (waitc*)0); X X } else { /* find out where to send init */ X X /* save init message */ X wp->w_mhdr = tmalloc(1, pvmg); X bcopy((char*)&thdr, (char*)wp->w_mhdr, sizeof(thdr)); X X thdr.pv_data= tmalloc(thdr.pv_len = PVM_HSIZ + XLADJ(archlen), char); X thdr.pv_type = PVM_HOSTGET; X thdr.pv_flg = 0; X thdr.pv_wchan = wp->w_serial; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, arch); X X add_waitc(wp); X tohost(&hosts[0], &thdr, 0, (waitc*)0); X } X} X u_enroll(lpp, uhdr, msglen) X/*ARGSUSED*/ X lproc *lpp; X userm *uhdr; X int msglen; X{ X int namlen; X waitc *wp; X char *p; X pvmg thdr; X X if (lpp->lp_flg & PS_EN) { X uhdr->um_flg = UF_ACK|UF_ALRDY; X touser(lpp, uhdr, sizeof(*uhdr)); X X } else { X lpp->lp_flg |= PS_EN; X X if (lpp->lp_inum == -1) { /* process not started by pvmd */ X wp = new_waitc(WT_ENROLL); X wp->w_proc = lpp; X add_waitc(wp); X X p = um_data(uhdr); X lpp->lp_name = sstring(lupps(&p, &namlen)); X X thdr.pv_data= tmalloc(thdr.pv_len = PVM_HSIZ + XLADJ(namlen), char); X thdr.pv_type = PVM_INUMGET; X thdr.pv_flg = 0; X thdr.pv_wchan = wp->w_serial; X p = thdr.pv_data + PVM_HSIZ; X xpacs(&p, lpp->lp_name); X tohost(hosts, &thdr, 0, (waitc*)0); X X } else { /* process started by pvmd */ X uhdr->um_flg = UF_ACK; X p = um_data(uhdr); X lpaci(&p, lpp->lp_inum); X lpaci(&p, maxxmlen); X bcopy((char*)&hosts[myhost].h_adres.sin_addr, p, X sizeof(struct in_addr)); X touser(lpp, uhdr, X sizeof(*uhdr) + 2 * sizeof(int) + sizeof(struct in_addr)); X } X } X} X u_leave(lpp) X lproc *lpp; X{ X userm umh; X X lpp->lp_flg &= ~PS_RUN; X lpp->lp_flg |= PS_EXIT; X X umh.um_flg = UF_ACK; X touser(lpp, &umh, sizeof(umh)); X X croak(lpp); X} X u_mstat(lpp, uhdr, msglen) X lproc *lpp; X userm *uhdr; X int msglen; X{ X char *p = um_data(uhdr); X int i; X xproc *xpp; X X lpaci(&p, nhosts); X lpaci(&p, myhost); X for (i = 0; i < nhosts; i++) { X for (xpp = xproclist; xpp; xpp = xpp->xp_next) X if ((xpp->xp_host == i) && (xpp->xp_flg & PS_RUN)) X break; X lpaci(&p, (xpp ? 1 : 0)); X lpacs(&p, hosts[i].h_name, strlen(hosts[i].h_name) + 1); X lpacs(&p, hosts[i].h_arch, strlen(hosts[i].h_arch) + 1); X } X uhdr->um_flg = UF_ACK; X touser(lpp, uhdr, sizeof(*uhdr) + (p - um_data(uhdr))); X} X u_pstat(lpp) X lproc *lpp; X{ X char *ubuf; X int ublen; X userm *uhdr; X char *p; X X ublen = sizeof(*uhdr) + 2 * sizeof(int); X uhdr = (userm*)(ubuf = tmalloc(ublen, char)); X p = um_data(uhdr); X lpaci(&p, nhosts); X lpaci(&p, narchs); X uhdr->um_flg = UF_ACK; X X touser(lpp, ubuf, ublen); X m_free(ubuf); X} X u_recv(lpp, uhdr, msglen) X/*ARGSUSED*/ X lproc *lpp; X userm *uhdr; X int msglen; X{ X if (lpp->lp_iq) { X imqbuf *iqp = lpp->lp_iq; X char *ubuf = iqp->iq_data; X int ublen = iqp->iq_length; X userm *ruhdr = (userm*)ubuf; X X ruhdr->um_flg = UF_ACK; X if (!(lpp->lp_iq = iqp->iq_next)) X lpp->lp_iqtail = 0; X touser(lpp, ubuf, ublen); X m_free(iqp->iq_data); X m_free(iqp); X X } else { X if (uhdr->um_flg & UF_NBLK) { X uhdr->um_flg = UF_ACK|UF_NMSG; X touser(lpp, uhdr, sizeof(*uhdr)); X X } else { X lpp->lp_flg |= PS_MW; X } X } X} X u_send(lpp, uhdr, msglen) X lproc *lpp; X userm *uhdr; X int msglen; X{ X char *p = um_data(uhdr); X int tonaml; X char *toname = lupps(&p, &tonaml); X int toinum = lupai(&p); X int umlen = msglen - (p - (char*)uhdr); X int frnaml; X char *q; X xproc *xpa; X lproc *lpa; X pvmhost *hp; X waitc *wp; X pvmg thdr; X X frnaml = strlen(lpp->lp_name) + 1; X X if (toinum == -1) { /* broadcast */ X /* construct message */ X X thdr.pv_data = tmalloc(thdr.pv_len = X PVM_HSIZ + XLADJ(tonaml) + XLADJ(frnaml) + 2*PVM_INT + umlen, X char); X thdr.pv_type = PVM_USERMSG; X thdr.pv_flg = 0; X thdr.pv_wchan = 0; X q = thdr.pv_data + PVM_HSIZ; X X xpacs(&q, toname); X xpaci(&q, toinum); X xpacs(&q, lpp->lp_name); X xpaci(&q, lpp->lp_inum); X bcopy(p, q, umlen); X X/* XXX should check to see if any of process exist before acking */ X uhdr->um_flg = UF_ACK; X touser(lpp, uhdr, sizeof(*uhdr)); X X /* deliver to local procs by name */ X for (lpa = lpbname((lproc*)0, toname); X lpa; X lpa = lpbname(lpa, toname)) { X if (lpa != lpp) X deliver(lpa, lpp->lp_name, lpp->lp_inum, p, umlen); X } X X /* start broadcast */ X toall(&thdr, 0); X X } else { /* direct message */ X /* construct message */ X X thdr.pv_data = tmalloc(thdr.pv_len = X PVM_HSIZ + XLADJ(tonaml) + XLADJ(frnaml) + 2*PVM_INT + umlen, X char); X thdr.pv_type = PVM_USERMSG; X thdr.pv_flg = 0; X thdr.pv_wchan = 0; X q = thdr.pv_data + PVM_HSIZ; X X#ifdef DEBUG X fprintf(stderr, "u_send() from <%s,%d> to <%s,%d> length %d\n", X lpp->lp_name, lpp->lp_inum, toname, toinum, umlen); X#endif X X xpacs(&q, toname); X xpaci(&q, toinum); X xpacs(&q, lpp->lp_name); X xpaci(&q, lpp->lp_inum); X bcopy(p, q, umlen); X X /* decide where to send */ X X switch (locate(toname, toinum, &xpa, &lpa)) { X X case 1: X/* XXX should short ckt with deliver() */ X hp = &hosts[myhost]; X goto send; X X case 2: X hp = &hosts[xpa->xp_host]; send: X uhdr->um_flg = UF_ACK; X touser(lpp, uhdr, sizeof(*uhdr)); X X tohost(hp, &thdr, 0, (waitc*)0); X break; X X default: X wp = new_waitc(WT_USEND); X wp->w_mhdr = tmalloc(1, pvmg); X bcopy((char*)&thdr, (char*)wp->w_mhdr, sizeof(thdr)); X wp->w_proc = lpp; X add_waitc(wp); X X thdr.pv_data = tmalloc( X thdr.pv_len = PVM_HSIZ + XLADJ(tonaml) + PVM_INT, char); X thdr.pv_type = PVM_ISPROC; X thdr.pv_flg = 0; X thdr.pv_wchan = wp->w_serial; X q = thdr.pv_data + PVM_HSIZ; X xpacs(&q, toname); X xpaci(&q, toinum); X tohost(hosts, &thdr, 0, (waitc*)0); X break; X } X } X} X u_whoami(lpp) X lproc *lpp; X{ X char *ubuf; X int ublen; X userm *uhdr; X char *p; X X if (lpp->lp_name) { X int namlen = strlen(lpp->lp_name) + 1; X X ublen = sizeof(*uhdr) + LLADJ(namlen) + 2 * sizeof(int) X + sizeof(struct in_addr); X uhdr = (userm*)(ubuf = tmalloc(ublen, char)); X p = um_data(uhdr); X lpacs(&p, lpp->lp_name, namlen); X lpaci(&p, lpp->lp_inum); X lpaci(&p, maxxmlen); X bcopy((char*)&hosts[myhost].h_adres.sin_addr, p, X sizeof(struct in_addr)); X uhdr->um_flg = UF_ACK; X X } else { X ublen = sizeof(*uhdr); X uhdr = (userm*)(ubuf = tmalloc(ublen, char)); X uhdr->um_flg = 0; X } X touser(lpp, ubuf, ublen); X m_free(ubuf); X} X END_OF_FILE if test 18639 -ne `wc -c <'pvm2.4/src/uside.c'`; then echo shar: \"'pvm2.4/src/uside.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/uside.c' fi if test -f 'pvm2.4/src/util.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/util.c'\" else echo shar: Extracting \"'pvm2.4/src/util.c'\" \(3205 characters\) sed "s/^X//" >'pvm2.4/src/util.c' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Util.c X * X * Utility routines. X * X$Log: util.c,v $ X * Revision 1.9 1992/05/28 18:24:31 manchek X * oops, fixed TITN ifdef X * X * Revision 1.8 1992/05/28 18:05:58 manchek X * Added fake getdtablesize for TITN X * X * Revision 1.7 1992/01/01 00:05:00 manchek X * added tread() X * X * Revision 1.6 1991/12/09 17:50:56 manchek X * cleaned up stuff after endifs X * X * Revision 1.5 1991/11/27 21:22:06 manchek X * added own getdtablesize for machines without X * X * Revision 1.4 1991/11/27 20:42:31 manchek X * oops, missed global.h X * X * Revision 1.3 1991/11/27 20:25:59 manchek X * switch to instrumented malloc defines X * X * Revision 1.2 1991/11/26 19:08:14 manchek X * moved lread() here from pvmd.c X * X * Revision 1.1 1991/05/06 14:43:35 manchek X * Initial revision X * X * X */ X X#include X#include X#include "global.h" X X/* sstring() X* X* Malloc space for a string, copy into space. X* Return a pointer to the space or NULL. X*/ X char* sstring(s) X char *s; X{ X int l; X char *m; X X if (s) { X l = strlen(s) + 1; X m = (char*)m_malloc(l); X bcopy(s, m, l); X return m; X } else X return (char*)0; X} X X/* xtoi() X* X* Yet another version of ascii hex to integer X*/ X long xtoi(p) X char *p; X{ X long i = 0; X char c; X X while (isxdigit(c = *p++)) { X i = (i << 4) + c - (isdigit(c) ? '0' : (isupper(c) ? 'A' : 'a') - 10); X } X return i; X} X X#ifdef NOSTRCASE X X/* strcasecmp() X* X* Compare two srings for equality. X* Upper and lowercase are equal. X*/ X strcasecmp(s1, s2) X char *s1, *s2; X{ X register char c1, c2; X X while (1) { X c1 = islower(*s1) ? toupper(*s1) : *s1; X c2 = islower(*s2) ? toupper(*s2) : *s2; X X if (c1 != c2) return (int)(c1 - c2); X if (!c1) return 0; X s1++; s2++; X } X} X X/* strncasecmp() X* X* Compare two srings for equality. Check at most n characters. X* Upper and lowercase are equal. X* X* Yecch, bad code. X*/ X strncasecmp(s1, s2, n) X char *s1, *s2; X int n; X{ X register char c1, c2; X X while (n-- > 0) { X c1 = islower(*s1) ? toupper(*s1) : *s1; X c2 = islower(*s2) ? toupper(*s2) : *s2; X X if (c1 != c2) return (int)(c1 - c2); X if (!c1) return 0; X s1++; s2++; X } X return 0; X} X X#endif /*NOSTRCASE*/ X X/* lread() X* X* Modified read to stop at end of line. Note this may read too X* many bytes. X*/ X int lread(d, buf, n) X int d; X char *buf; X int n; X{ X int e = 0; X int l = 0; X int i; X X while (n > 0 && (e = read(d, buf, n)) > 0) { X l += e; X for (i = 0; i < e; i++) X if (buf[i] == '\n') X goto got; X buf += e; X n -= e; X } got: X return (e == -1) ? -1 : l; X} X X#ifdef NOGETDTABLESIZE X#include X int getdtablesize() X{ X return sysconf(_SC_OPEN_MAX); X} X#endif X X#ifdef IMA_TITN X/* XXX Gag me with a pitchfork... */ int getdtablesize() X{ X return 64; X} X#endif X X/* tread() X* X* Tenacious read. Just like read(2) except that it will keep trying X* to get those n bytes until there really aren't any more. X* Returns the number it got or -1 if error. X*/ X int tread(d, b, n) X int d; X char *b; X int n; X{ X int e; X int x = n; X X while (x > 0) { X if ((e = read(d, b, x)) == -1) X return e; X if (!e) X return n - x; X b += e; X x -= e; X } X return n - x; X} X END_OF_FILE if test 3205 -ne `wc -c <'pvm2.4/src/util.c'`; then echo shar: \"'pvm2.4/src/util.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/util.c' fi if test -f 'pvm2.4/src/wait.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/wait.c'\" else echo shar: Extracting \"'pvm2.4/src/wait.c'\" \(1054 characters\) sed "s/^X//" >'pvm2.4/src/wait.c' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Wait.c X * X * Event-wait management. X * X$Log: wait.c,v $ X * Revision 1.1 1991/05/06 14:43:36 manchek X * Initial revision X * X * X */ X X#include "global.h" X#include "wait.h" X waitc *waitlist = 0; /* current user waits */ int lastwait = 0; /* wait id counter */ X X/* XXX should this be more complex (search waitlist before handing out id */ X X#define nextwait() (++lastwait) X waitc* new_waitc(type) X int type; X{ X waitc *wp; X X wp = tmalloc(1, waitc); X wp->w_serial = nextwait(); X wp->w_rwait = 0; X wp->w_what = type; X wp->w_proc = 0; X wp->w_host = -1; X wp->w_data = 0; X wp->w_length = 0; X wp->w_mhdr = 0; X wp->w_next = 0; X return wp; X} X add_waitc(wp) X waitc *wp; X{ X wp->w_next = waitlist; X waitlist = wp; X} X waitc* get_wait(serial) X int serial; X{ X waitc **wpp; X waitc *wp; X X for (wpp = &waitlist; *wpp; wpp = &((*wpp)->w_next)) X if (wp = *wpp, wp->w_serial == serial) { X *wpp = wp->w_next; X return wp; X } X return (waitc*)0; X} X END_OF_FILE if test 1054 -ne `wc -c <'pvm2.4/src/wait.c'`; then echo shar: \"'pvm2.4/src/wait.c'\" unpacked with wrong size! fi # end of 'pvm2.4/src/wait.c' fi if test -f 'pvm2.4/src/wait.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/wait.h'\" else echo shar: Extracting \"'pvm2.4/src/wait.h'\" \(1341 characters\) sed "s/^X//" >'pvm2.4/src/wait.h' <<'END_OF_FILE' X/* X * PVM 2.2 X * University of Tennesee, Knoxville, TN. X * Oak Ridge National Laboratory, Oak Ridge, TN. X * 21 Mar 1991 X * X * Wait.h X * X * Event-wait data definitions. X * X$Log: wait.h,v $ X * Revision 1.2 1992/01/01 00:06:34 manchek X * added WAIT_CNT type X * X * Revision 1.1 1991/05/06 14:43:59 manchek X * Initial revision X * X * X */ X X X/* Wait channel info */ X typedef struct waitc { X int w_serial; /* unique identifier */ X int w_rwait; /* wchan of remote waiting on us */ X int w_what; /* help what are we waiting on */ X struct lproc *w_proc; /* user process in wait */ X int w_host; /* remote pvmd in wait */ X char *w_data; /* arbitrary buffer */ X int w_length; /* length of buffer */ X struct pvmg *w_mhdr; /* message holder */ X struct waitc *w_next; X} waitc; X X/* Wait types */ X X#define WT_INUMRXD 1 /* inum recvd by remote pvmd */ X#define WT_USEND 2 /* waiting for proc location to send u msg */ X#define WT_ENROLL 3 /* waiting for inum to enroll process */ X#define WT_INIT 4 /* waiting for remote to create process */ X#define WT_CREAT 5 /* waiting for inum to create process */ X#define WT_STATUS 6 /* waiting for proc location to return status */ X#define WT_TERM 7 /* waiting for proc location to send terminate */ X#define WT_CNT 8 /* waiting for get instance count for proc */ X waitc *new_waitc(); waitc *get_wait(); X END_OF_FILE if test 1341 -ne `wc -c <'pvm2.4/src/wait.h'`; then echo shar: \"'pvm2.4/src/wait.h'\" unpacked with wrong size! fi # end of 'pvm2.4/src/wait.h' fi if test -f 'pvm2.4/src/xenixpatch.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/src/xenixpatch.h'\" else echo shar: Extracting \"'pvm2.4/src/xenixpatch.h'\" \(56 characters\) sed "s/^X//" >'pvm2.4/src/xenixpatch.h' <<'END_OF_FILE' X#define MAXPATHLEN CANBSIZ X#define getdtablesize() (64) END_OF_FILE if test 56 -ne `wc -c <'pvm2.4/src/xenixpatch.h'`; then echo shar: \"'pvm2.4/src/xenixpatch.h'\" unpacked with wrong size! fi # end of 'pvm2.4/src/xenixpatch.h' fi if test ! -d 'pvm2.4/tsts' ; then echo shar: Creating directory \"'pvm2.4/tsts'\" mkdir 'pvm2.4/tsts' fi if test -f 'pvm2.4/tsts/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/tsts/Makefile'\" else echo shar: Extracting \"'pvm2.4/tsts/Makefile'\" \(1308 characters\) sed "s/^X//" >'pvm2.4/tsts/Makefile' <<'END_OF_FILE' X# X#ARCH = UNKNOWN X PLIB = ../src/$(ARCH)/libpvm.a XXDIR = ../$(ARCH) SDIR = . X CC = cc CFLAGS = LIBS = X X$(XDIR): X - mkdir $(XDIR) X clean: X rm -f *.o X askinit: $(SDIR)/askinit.c $(PLIB) $(XDIR) X $(CC) $(CFLAGS) -o askinit $(SDIR)/askinit.c $(PLIB) $(LIBS) X mv askinit $(XDIR) X barrtest: $(SDIR)/barrtest.c $(PLIB) $(XDIR) X $(CC) $(CFLAGS) -o barrtest $(SDIR)/barrtest.c $(PLIB) $(LIBS) X mv barrtest $(XDIR) X check: $(SDIR)/check.c $(PLIB) $(XDIR) X $(CC) $(CFLAGS) -o check $(SDIR)/check.c $(PLIB) $(LIBS) X mv check $(XDIR) X check_slave: $(SDIR)/check_slave.c $(PLIB) $(XDIR) X $(CC) $(CFLAGS) -o check_slave $(SDIR)/check_slave.c $(PLIB) $(LIBS) X mv check_slave $(XDIR) X conf: $(SDIR)/conf.c $(PLIB) $(XDIR) X $(CC) $(CFLAGS) -o conf $(SDIR)/conf.c $(PLIB) $(LIBS) X mv conf $(XDIR) X enrolltest: $(SDIR)/enrolltest.c $(PLIB) $(XDIR) X $(CC) $(CFLAGS) -o enrolltest $(SDIR)/enrolltest.c $(PLIB) $(LIBS) X mv enrolltest $(XDIR) X timing: $(SDIR)/timing.c $(PLIB) $(XDIR) X $(CC) $(CFLAGS) -o timing $(SDIR)/timing.c $(PLIB) $(LIBS) X mv timing $(XDIR) X timing_slave: $(SDIR)/timing_slave.c $(PLIB) $(XDIR) X $(CC) $(CFLAGS) -o timing_slave $(SDIR)/timing_slave.c $(PLIB) $(LIBS) X mv timing_slave $(XDIR) X whome: $(SDIR)/whome.c $(PLIB) $(XDIR) X $(CC) $(CFLAGS) -o whome $(SDIR)/whome.c $(PLIB) $(LIBS) X mv whome $(XDIR) X END_OF_FILE if test 1308 -ne `wc -c <'pvm2.4/tsts/Makefile'`; then echo shar: \"'pvm2.4/tsts/Makefile'\" unpacked with wrong size! fi # end of 'pvm2.4/tsts/Makefile' fi if test -f 'pvm2.4/tsts/Readme' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/tsts/Readme'\" else echo shar: Extracting \"'pvm2.4/tsts/Readme'\" \(629 characters\) sed "s/^X//" >'pvm2.4/tsts/Readme' <<'END_OF_FILE' X Readme file for test stuff for PVM 2.3.5 X11 Dec 1991 X X________________________________________________________________________ In this directory are some simple test programs that we use to exercise pvm features. These are here only for reference and to play with; they don't claim to be useful or maintained. X X askinit Allows user to initiate arbitrary process from keyboard X X whome Do-nothing process that spits out its name X X check Uses check_slave to test initiate and message send X check_slave X X timing Does a few simple message round-trip and bandwidth tests X timing_slave X END_OF_FILE if test 629 -ne `wc -c <'pvm2.4/tsts/Readme'`; then echo shar: \"'pvm2.4/tsts/Readme'\" unpacked with wrong size! fi # end of 'pvm2.4/tsts/Readme' fi if test -f 'pvm2.4/tsts/askinit.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/tsts/askinit.c'\" else echo shar: Extracting \"'pvm2.4/tsts/askinit.c'\" \(1218 characters\) sed "s/^X//" >'pvm2.4/tsts/askinit.c' <<'END_OF_FILE' X/* X* askinit.c X* X* Query for process name and architecture or hostname and try to X* start. X*/ X X#include X#include X main(argc, argv) X int argc; X char **argv; X{ X char name[64]; X char arch[64]; X char host[64]; X int e; X X if (enroll("askinit") < 0) { X pvm_perror("enroll"); X exit(1); X } X fputs("ready to initiate processes.\n", stdout); X X while (1) { X fputs("name: ", stdout); X if (!fgets(name, sizeof(name), stdin)) X goto bail; X clips(name); X X fputs("arch: ", stdout); X if (!fgets(arch, sizeof(arch), stdin)) X goto bail; X clips(arch); X if (!*arch) { X fputs("host: ", stdout); X if (!fgets(host, sizeof(host), stdin)) X goto bail; X clips(host); X } else X host[0] = 0; X X/* X printf("initiate(aout<%s> arch<%s> host<%s>)\n", name, arch, host); X*/ X if (*host) { X if ((e = initiateM(name, host)) < 0) X pvm_perror("initiateM"); X } else { X if ((e = initiate(name, arch)) < 0) X pvm_perror("initiateM"); X } X if (e >= 0) X printf("instance %d\n", e); X } bail: X leave(); X exit(0); X} X clips(s) X char *s; X{ X char *p, *q; X X for (p = s; *p && isspace(*p); p++); X for (q = p; *q; q++); X while (--q >= p && isspace(*q)); X *++q = 0; X if (p != s) { X for (q = s; *q++ = *p++; ); X } X} X END_OF_FILE if test 1218 -ne `wc -c <'pvm2.4/tsts/askinit.c'`; then echo shar: \"'pvm2.4/tsts/askinit.c'\" unpacked with wrong size! fi # end of 'pvm2.4/tsts/askinit.c' fi if test -f 'pvm2.4/tsts/barrtest.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/tsts/barrtest.c'\" else echo shar: Extracting \"'pvm2.4/tsts/barrtest.c'\" \(778 characters\) sed "s/^X//" >'pvm2.4/tsts/barrtest.c' <<'END_OF_FILE' X/* X* barrtest.c X* X* Check out PVM barrier function X* X* 23 Mar 1992 Manchek X*/ X X#include X#include "../src/pvmuser.h" X X#define DEF_COUNT 15 X main(argc, argv) X int argc; X char **argv; X{ X char myname[33]; X int myinum; X int e; X int now = time(0); X X if (e = whoami(myname, &myinum)) { /* must be first? */ X if (e != PvmNoComp) X exit(1); X X /* enroll as first */ X X strcpy(myname, "barrtest"); X if ((myinum = enroll(myname)) < 0) X exit(1); X X /* spawn others */ X X for (e = 0; e < DEF_COUNT-1; e++) X if (initiate(myname, "") < 0) X exit(1); X } X X printf("I'm %s,%d\n", myname, myinum); X X sleep((now + myinum) & 7); X X printf("At barrier %s,%d\n", myname, myinum); X barrier("grinch", DEF_COUNT); X printf("Past barrier %s,%d\n", myname, myinum); X X leave(); X exit(0); X} X END_OF_FILE if test 778 -ne `wc -c <'pvm2.4/tsts/barrtest.c'`; then echo shar: \"'pvm2.4/tsts/barrtest.c'\" unpacked with wrong size! fi # end of 'pvm2.4/tsts/barrtest.c' fi if test -f 'pvm2.4/tsts/check.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/tsts/check.c'\" else echo shar: Extracting \"'pvm2.4/tsts/check.c'\" \(1317 characters\) sed "s/^X//" >'pvm2.4/tsts/check.c' <<'END_OF_FILE' X/* X* check.c X* X* Initiates 'check_slave' on a host and exchanges a message. X* X* 18 Nov 1991 Manchek X*/ X X#include X#include X X#define CLI "check_slave" X X char * my_rindex(s, c) X char *s; X char c; X{ X char *p = 0; X X do { X if (c == *s) X p = s; X } while (*s++); X return p; X} X X main(argc, argv) X int argc; X char **argv; X{ X char *webe; X char host[64]; X int inum; X int e; X char proc[32]; X char ohost[256]; X X webe = (webe = my_rindex(argv[0], '/')) ? webe + 1 : argv[0]; X X if ((e = enroll(webe)) < 0) { X pvm_perror("enroll"); X exit(1); X } X X while (1) { X fputs("host: ", stdout); X if (!fgets(host, sizeof(host), stdin)) X goto bail; X clips(host); X X e = initiateM(CLI, host); X if (e < 0) { X pvm_perror("initiate"); X continue; X } X inum = e; X X initsend(); X if (e = snd(CLI, inum, 13)) { X pvm_perror("snd"); X terminate(CLI, inum); X continue; X } X if ((e = rcv(-1)) != 7) { X pvm_perror("rcv"); X terminate(CLI, inum); X continue; X } X rcvinfo((int*)0, (int*)0, proc, &inum); X getstring(ohost); X printf("<%s,%d> responded: \"%s\"\n", proc, inum, ohost); X } X bail: X leave(); X exit(0); X} X clips(s) X char *s; X{ X char *p, *q; X X for (p = s; *p && isspace(*p); p++); X for (q = p; *q; q++); X while (--q >= p && isspace(*q)); X *++q = 0; X if (p != s) { X for (q = s; *q++ = *p++; ); X } X} X END_OF_FILE if test 1317 -ne `wc -c <'pvm2.4/tsts/check.c'`; then echo shar: \"'pvm2.4/tsts/check.c'\" unpacked with wrong size! fi # end of 'pvm2.4/tsts/check.c' fi if test -f 'pvm2.4/tsts/check_slave.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/tsts/check_slave.c'\" else echo shar: Extracting \"'pvm2.4/tsts/check_slave.c'\" \(476 characters\) sed "s/^X//" >'pvm2.4/tsts/check_slave.c' <<'END_OF_FILE' X/* X* check_slave.c X* X* See check.c X*/ X X#include X#include X main(argc, argv) X int argc; X char **argv; X{ X int i; X char proc[32]; X int inum; X char myhost[256]; X X gethostname(myhost, sizeof(myhost)); X if ((i = whoami(proc, &inum)) < 0) { X pvm_perror("whoami"); X X } else { X fprintf(stderr, "I am <%s,%d>\n", proc, inum); X rcv(-1); X rcvinfo((int*)0, (int*)0, proc, &inum); X initsend(); X putstring(myhost); X snd(proc, inum, 7); X leave(); X } X exit(0); X} X END_OF_FILE if test 476 -ne `wc -c <'pvm2.4/tsts/check_slave.c'`; then echo shar: \"'pvm2.4/tsts/check_slave.c'\" unpacked with wrong size! fi # end of 'pvm2.4/tsts/check_slave.c' fi if test -f 'pvm2.4/tsts/conf.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/tsts/conf.c'\" else echo shar: Extracting \"'pvm2.4/tsts/conf.c'\" \(341 characters\) sed "s/^X//" >'pvm2.4/tsts/conf.c' <<'END_OF_FILE' X X#include X#include "../src/pvmuser.h" X main(argc, argv) X int argc; X char **argv; X{ X int n; X int *s; X char **h; X char **a; X int i; X X enroll("conf"); X pvm_mstat(&n, &s, &h, &a); X X puts(" n st name arch"); X for (i = 0; i < n; i++) { X printf("%2d %2d %32s %8s\n", i, s[i], h[i], a[i]); X } X leave(); X} X END_OF_FILE if test 341 -ne `wc -c <'pvm2.4/tsts/conf.c'`; then echo shar: \"'pvm2.4/tsts/conf.c'\" unpacked with wrong size! fi # end of 'pvm2.4/tsts/conf.c' fi if test -f 'pvm2.4/tsts/enrolltest.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/tsts/enrolltest.c'\" else echo shar: Extracting \"'pvm2.4/tsts/enrolltest.c'\" \(851 characters\) sed "s/^X//" >'pvm2.4/tsts/enrolltest.c' <<'END_OF_FILE' X X#include X#include "../src/pvmuser.h" X extern int pvm_aerr; X char *card[] = { X "first", X "second", X "third", X "fourth", X "fifth", X "sixth", X "seventh", X "eighth", X "ninth", X "tenth" X}; X main(argc, argv) X int argc; X char **argv; X{ X int inum; X char proc[64]; X int n; X int e; X X pvm_aerr = 0; X for (n = 0; n < 10; n++) { X fprintf(stderr, "%s try:\n", card[n]); X strcpy(proc, card[n]); X strcat(proc, "proc"); X if ((e = enroll(proc)) < 0) X pvm_perror(" enroll"); X else X fprintf(stderr, " enroll returns %d\n", e); X proc[0] = 0; X if ((e = whoami(proc, &inum)) < 0) X pvm_perror(" whoami"); X else X fprintf(stderr, " whoami returns %d\n", e); X fprintf(stderr, " proc, inum = <%s,%d>\n", proc, inum); X if (n != 8) { X fputs(" leave()\n", stderr); X leave(); X } else { X fputs(" don't leave this time\n", stderr); X } X } X} X END_OF_FILE if test 851 -ne `wc -c <'pvm2.4/tsts/enrolltest.c'`; then echo shar: \"'pvm2.4/tsts/enrolltest.c'\" unpacked with wrong size! fi # end of 'pvm2.4/tsts/enrolltest.c' fi if test -f 'pvm2.4/tsts/timing.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/tsts/timing.c'\" else echo shar: Extracting \"'pvm2.4/tsts/timing.c'\" \(2787 characters\) sed "s/^X//" >'pvm2.4/tsts/timing.c' <<'END_OF_FILE' X/* X* timing.c X* X* Does a few communication timing tests on pvm. X* Uses `timing_slave' to echo messages. X* X* 9 Dec 1991 Manchek X*/ X X#include X#include X#include X X#define SLAVENAME "timing_slave" X main(argc, argv) X int argc; X char **argv; X{ X char *av0; X int si; /* slave proc instance */ X int reps = 20; /* number of samples per test */ X struct timeval tv1, tv2; /* for timing */ X int dt1, dt2; /* time for one iter */ X int at1, at2; /* accum. time */ X int numint; /* message length */ X int n; X int i; X int *iarray = 0; X X av0 = argv[0] ? argv[0] : "timing"; X X if (enroll(av0) < 0) { X fputs("can't enroll\n", stderr); X exit(0); X } X if ((si = initiate(SLAVENAME, "")) < 0) { X fprintf(stderr, "can't initiate \"%s\"\n", SLAVENAME); X goto bail; X } X X /* cause the slave location to be locally cached */ X status(SLAVENAME, si); X X /* X * round-trip timing test X */ X X puts("Doing RT test, minimal message size\n"); X at1 = 0; X initsend(); X putnint(&si, 1); X puts(" N uSec"); X for (n = 1; n <= reps; n++) { X gettimeofday(&tv1, (struct timezone*)0); X if (snd(SLAVENAME, si, 1)) { X fprintf(stderr, "can't send to \"%s\"\n", SLAVENAME); X goto kbail; X } X if (rcv(-1) < 0) { X fprintf(stderr, "rcv returned %d\n", i); X goto kbail; X } X gettimeofday(&tv2, (struct timezone*)0); X X dt1 = (tv2.tv_sec - tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec; X printf("%2d %8d\n", n, dt1); X if (!at1 || dt1 < at1) X at1 = dt1; X } X printf("RTT min uSec %d\n", at1); X X /* X * bandwidth test for different message lengths X */ X X puts("\nDoing BW tests"); X X for (numint = 25; numint < 100000; numint *= 10) { X printf("\nMessage size %d\n", numint * 4); X at1 = at2 = 0; X iarray = (int*)malloc(numint * sizeof(int)); X puts(" N Pack uSec Send uSec"); X for (n = 1; n <= reps; n++) { X gettimeofday(&tv1, (struct timezone*)0); X initsend(); X putnint(iarray, numint); X gettimeofday(&tv2, (struct timezone*)0); X dt1 = (tv2.tv_sec - tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec; X X gettimeofday(&tv1, (struct timezone*)0); X if (snd(SLAVENAME, si, 1)) { X fprintf(stderr, "can't send to \"%s\"\n", SLAVENAME); X goto kbail; X } X if (rcv(-1) < 0) { X fprintf(stderr, "rcv returned %d\n", i); X goto kbail; X } X gettimeofday(&tv2, (struct timezone*)0); X dt2 = (tv2.tv_sec - tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec; X X printf("%2d %8d %8d\n", n, dt1, dt2); X if (!at1 || dt1 < at1) X at1 = dt1; X if (!at2 || dt2 < at2) X at2 = dt2; X } X puts("Min uSec"); X printf(" %8d %8d\n", at1, at2); X puts("Max Byte/uSec"); X printf(" %8f %8f\n", X (numint * 4) / (double)at1, X (numint * 4) / (double)at2); X } X X puts("\ndone"); kbail: X terminate(SLAVENAME, si); bail: X leave(); X exit(0); X} X END_OF_FILE if test 2787 -ne `wc -c <'pvm2.4/tsts/timing.c'`; then echo shar: \"'pvm2.4/tsts/timing.c'\" unpacked with wrong size! fi # end of 'pvm2.4/tsts/timing.c' fi if test -f 'pvm2.4/tsts/timing_slave.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/tsts/timing_slave.c'\" else echo shar: Extracting \"'pvm2.4/tsts/timing_slave.c'\" \(314 characters\) sed "s/^X//" >'pvm2.4/tsts/timing_slave.c' <<'END_OF_FILE' X/* X* timing_slave.c X* X* See timing.c X*/ X X#include X main(argc, argv) X int argc; X char **argv; X{ X char pn[32]; X int in; X int n = 0; X X whoami((char*)0, (int*)0); X initsend(); X putnint(&in, 1); X while (1) { X rcv(-1); X rcvinfo((int*)0, (int*)0, pn, &in); X snd(pn, in, 2); X printf("echo %d\n", ++n); X } X} X END_OF_FILE if test 314 -ne `wc -c <'pvm2.4/tsts/timing_slave.c'`; then echo shar: \"'pvm2.4/tsts/timing_slave.c'\" unpacked with wrong size! fi # end of 'pvm2.4/tsts/timing_slave.c' fi if test -f 'pvm2.4/tsts/whome.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pvm2.4/tsts/whome.c'\" else echo shar: Extracting \"'pvm2.4/tsts/whome.c'\" \(247 characters\) sed "s/^X//" >'pvm2.4/tsts/whome.c' <<'END_OF_FILE' X#include X main(argc, argv) X int argc; X char **argv; X{ X int i; X char proc[32]; X int inum; X X if ((i = whoami(proc, &inum)) < 0) { X pvm_perror("whoami"); X exit(1); X } X fprintf(stderr, "I am <%s,%d>\n", proc, inum); X leave(); X exit(0); X} X END_OF_FILE if test 247 -ne `wc -c <'pvm2.4/tsts/whome.c'`; then echo shar: \"'pvm2.4/tsts/whome.c'\" unpacked with wrong size! fi # end of 'pvm2.4/tsts/whome.c' fi echo shar: End of shell archive. exit 0