/*****************************************************************************/ /* "NetPIPE" -- Network Protocol Independent Performance Evaluator. */ /* Copyright 1997, 1998 Iowa State University Research Foundation, Inc. */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation. You should have received a copy of the */ /* GNU General Public License along with this program; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* */ /* * netpipe.h ---- General include file */ /*****************************************************************************/ #include <ctype.h> #include <errno.h> #include <signal.h> #include <stdio.h> #include <stdlib.h> /* malloc(3) */ #include <string.h> #include <sys/types.h> #include <sys/time.h> /* struct timeval */ #ifdef HAVE_GETRUSAGE #include <sys/resource.h> #endif #include <unistd.h> #define DEFPORT 5002 #define TRIALS 7 #define NSAMP 8000 #define PERT 3 #define LATENCYREPS 100 #define LONGTIME 1e99 #define CHARSIZE 8 #define RUNTM 0.25 #define STOPTM 1.0 #define MAXINT 2147483647 #define ABS(x) (((x) < 0)?(-(x)):(x)) #define MIN(x,y) (((x) < (y))?(x):(y)) #define MAX(x,y) (((x) > (y))?(x):(y)) /* Need to include the protocol structure header file. */ /* Change this to reflect the protocol */ #if defined(TCP) #include "TCP.h" #elif defined(MPI) #include "MPI.h" #elif defined(PVM) #include "PVM.h" #else #error "One of TCP, MPI, or PVM must be defined during compilation" #endif typedef struct argstruct ArgStruct; struct argstruct { /* This is the common information that is needed for all tests */ char *host; /* Name of receiving host */ int servicefd, /* File descriptor of the network socket */ commfd; /* Communication file descriptor */ short port; /* Port used for connection */ char *buff; /* Transmitted buffer */ char *buff1; /* Transmitted buffer */ int bufflen, /* Length of transmitted buffer */ tr, /* Transmit flag */ nbuff; /* Number of buffers to transmit */ /* Now we work with a union of information for protocol dependent stuff */ ProtocolStruct prot; /* Structure holding necessary info for TCP */ }; typedef struct data Data; struct data { double t; double bps; double variance; int bits; int repeat; }; double When(); void PrintUsage(void); int Setup(ArgStruct *p); void Sync(ArgStruct *p); void PrepareToReceive(ArgStruct *p); void SendData(ArgStruct *p); void RecvData(ArgStruct *p); void SendTime(ArgStruct *p, double *t); void RecvTime(ArgStruct *p, double *t); void SendRepeat(ArgStruct *p, int rpt); void RecvRepeat(ArgStruct *p, int *rpt); int Establish(ArgStruct *p); int CleanUp(ArgStruct *p);