[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / includes / pvm3.h
1
2 /*
3  *         PVM version 3.3:  Parallel Virtual Machine System
4  *               University of Tennessee, Knoxville TN.
5  *           Oak Ridge National Laboratory, Oak Ridge TN.
6  *                   Emory University, Atlanta GA.
7  *      Authors:  A. L. Beguelin, J. J. Dongarra, G. A. Geist,
8  *    W. C. Jiang, R. J. Manchek, B. K. Moore, and V. S. Sunderam
9  *                   (C) 1992 All Rights Reserved
10  *
11  *                              NOTICE
12  *
13  * Permission to use, copy, modify, and distribute this software and
14  * its documentation for any purpose and without fee is hereby granted
15  * provided that the above copyright notice appear in all copies and
16  * that both the copyright notice and this permission notice appear in
17  * supporting documentation.
18  *
19  * Neither the Institutions (Emory University, Oak Ridge National
20  * Laboratory, and University of Tennessee) nor the Authors make any
21  * representations about the suitability of this software for any
22  * purpose.  This software is provided ``as is'' without express or
23  * implied warranty.
24  *
25  * PVM version 3 was funded in part by the U.S. Department of Energy,
26  * the National Science Foundation and the State of Tennessee.
27  */
28
29 /*
30  *      pvm3.h
31  *
32  *      Libpvm3 includes.
33  *
34 $Log: pvm3.h,v $
35 Revision 1.1  1996/01/08 20:26:27  partain
36 Initial revision
37
38  */
39
40 #ifndef _PVM3_H_
41
42 #define _PVM3_H_
43
44 #include        <sys/time.h>
45
46 /*
47 *       Data packing styles for pvm_initsend()
48 */
49
50 #define PvmDataDefault  0
51 #define PvmDataRaw              1
52 #define PvmDataInPlace  2
53 #define PvmDataFoo              3
54
55 /*
56 *       pvm_spawn options
57 */
58
59 #define PvmTaskDefault  0
60 #define PvmTaskHost             1       /* specify host */
61 #define PvmTaskArch             2       /* specify architecture */
62 #define PvmTaskDebug    4       /* start task in debugger */
63 #define PvmTaskTrace    8       /* process generates trace data */
64 /* for MPP ports */
65 #define PvmMppFront             16      /* spawn task on service node */
66 #define PvmHostCompl    32      /* complement host set */
67
68 /*
69 *       pvm_notify types
70 */
71
72 #define PvmTaskExit             1       /* on task exit */
73 #define PvmHostDelete   2       /* on host fail/delete */
74 #define PvmHostAdd              3       /* on host startup */
75
76 /*
77 *       for pvm_setopt and pvm_getopt
78 */
79
80 #define PvmRoute                        1       /* routing policy */
81 #define         PvmDontRoute            1       /* don't allow direct task-task links */
82 #define         PvmAllowDirect          2       /* allow direct links, but don't request */
83 #define         PvmRouteDirect          3       /* request direct links */
84 #define PvmDebugMask            2       /* debugmask */
85 #define PvmAutoErr                      3       /* auto error reporting */
86 #define PvmOutputTid            4       /* stdout destination for children */
87 #define PvmOutputCode           5       /* stdout message tag */
88 #define PvmTraceTid                     6       /* trace destination for children */
89 #define PvmTraceCode            7       /* trace message tag */
90 #define PvmFragSize                     8       /* message fragment size */
91 #define PvmResvTids                     9       /* allow reserved message tids and codes */
92 #define PvmSelfOutputTid        10      /* stdout destination for task */
93 #define PvmSelfOutputCode       11      /* stdout message tag */
94 #define PvmSelfTraceTid         12      /* trace destination for task */
95 #define PvmSelfTraceCode        13      /* trace message tag */
96 #define PvmShowTids                     14      /* pvm_catchout prints task ids with output */
97
98 /*
99 *       for pvm_[sg]ettmask
100 */
101
102 #define PvmTaskSelf             0       /* this task */
103 #define PvmTaskChild    1       /* (future) child tasks */
104
105 /*
106 *       Libpvm error codes
107 */
108
109 #define PvmOk                   0       /* Error 0 */
110 #define PvmBadParam             -2      /* Bad parameter */
111 #define PvmMismatch             -3      /* Count mismatch */
112 #define PvmOverflow             -4      /* Value too large */
113 #define PvmNoData               -5      /* End of buffer */
114 #define PvmNoHost               -6      /* No such host */
115 #define PvmNoFile               -7      /* No such file */
116 #define PvmNoMem                -10     /* Malloc failed */
117 #define PvmBadMsg               -12     /* Can't decode message */
118 #define PvmSysErr               -14     /* Can't contact local daemon */
119 #define PvmNoBuf                -15     /* No current buffer */
120 #define PvmNoSuchBuf    -16     /* No such buffer */
121 #define PvmNullGroup    -17     /* Null group name */
122 #define PvmDupGroup             -18     /* Already in group */
123 #define PvmNoGroup              -19     /* No such group */
124 #define PvmNotInGroup   -20     /* Not in group */
125 #define PvmNoInst               -21     /* No such instance */
126 #define PvmHostFail             -22     /* Host failed */
127 #define PvmNoParent             -23     /* No parent task */
128 #define PvmNotImpl              -24     /* Not implemented */
129 #define PvmDSysErr              -25     /* Pvmd system error */
130 #define PvmBadVersion   -26     /* Version mismatch */
131 #define PvmOutOfRes             -27     /* Out of resources */
132 #define PvmDupHost              -28     /* Duplicate host */
133 #define PvmCantStart    -29     /* Can't start pvmd */
134 #define PvmAlready              -30     /* Already in progress */
135 #define PvmNoTask               -31     /* No such task */
136 #define PvmNoEntry              -32     /* No such entry */
137 #define PvmDupEntry             -33     /* Duplicate entry */
138
139 /*
140 *       Data types for pvm_reduce(), pvm_psend(), pvm_precv()
141 */
142
143 #define PVM_STR                 0       /* string */
144 #define PVM_BYTE                1       /* byte */
145 #define PVM_SHORT               2       /* short */
146 #define PVM_INT                 3       /* int */
147 #define PVM_FLOAT               4       /* real */
148 #define PVM_CPLX                5       /* complex */
149 #define PVM_DOUBLE              6       /* double */
150 #define PVM_DCPLX               7       /* double complex */
151 #define PVM_LONG                8       /* long integer */
152 #define PVM_USHORT              9       /* unsigned short int */
153 #define PVM_UINT                10      /* unsigned int */
154 #define PVM_ULONG               11      /* unsigned long int */
155
156 /*
157 *       returned by pvm_config()
158 */
159
160 struct pvmhostinfo {
161         int hi_tid;                     /* pvmd tid */
162         char *hi_name;          /* host name */
163         char *hi_arch;          /* host arch */
164         int hi_speed;           /* cpu relative speed */
165 };
166
167 /*
168 *       returned by pvm_tasks()
169 */
170
171 struct pvmtaskinfo {
172         int ti_tid;                             /* task id */
173         int ti_ptid;                    /* parent tid */
174         int ti_host;                    /* pvmd tid */
175         int ti_flag;                    /* status flags */
176         char *ti_a_out;                 /* a.out name */
177         int ti_pid;                             /* task (O/S dependent) process id */
178 };
179
180
181 #ifdef __ProtoGlarp__
182 #undef __ProtoGlarp__
183 #endif
184 #if defined(__STDC__) || defined(__cplusplus)
185 #define __ProtoGlarp__(x) x
186 #else
187 #define __ProtoGlarp__(x) ()
188 #endif
189
190 #ifdef __cplusplus
191 extern "C" {
192 #endif
193
194 int pvm_addhosts        __ProtoGlarp__(( char **, int, int * ));
195 int pvm_archcode        __ProtoGlarp__(( char * ));
196 int pvm_barrier         __ProtoGlarp__(( char *, int ));
197 int pvm_bcast           __ProtoGlarp__(( char *, int ));
198 int pvm_bufinfo         __ProtoGlarp__(( int, int *, int *, int * ));
199 /*
200 int pvm_catchout        __ProtoGlarp__(( FILE * ));
201 */
202 int pvm_config          __ProtoGlarp__(( int *, int *,
203                                                                                 struct pvmhostinfo ** ));
204 int pvm_delete          __ProtoGlarp__(( char *, int ));
205 int pvm_delhosts        __ProtoGlarp__(( char **, int, int * ));
206 int pvm_exit            __ProtoGlarp__(( void ));
207 int pvm_freebuf         __ProtoGlarp__(( int ));
208 int pvm_gather          __ProtoGlarp__(( void*, void*,
209                                                                                 int, int, int, char*, int));
210 int pvm_getfds          __ProtoGlarp__(( int ** ));
211 int pvm_getinst         __ProtoGlarp__(( char *, int ));
212 int pvm_getmwid         __ProtoGlarp__(( int ));
213 int pvm_getopt          __ProtoGlarp__(( int ));
214 int pvm_getrbuf         __ProtoGlarp__(( void ));
215 int pvm_getsbuf         __ProtoGlarp__(( void ));
216 int pvm_gettid          __ProtoGlarp__(( char *, int ));
217 int pvm_gsize           __ProtoGlarp__(( char * ));
218 int pvm_halt            __ProtoGlarp__(( void ));
219 int pvm_hostsync        __ProtoGlarp__(( int, struct timeval *,
220                                                                                 struct timeval * ));
221 int pvm_initsend        __ProtoGlarp__(( int ));
222 int pvm_insert          __ProtoGlarp__(( char *, int, int ));
223 int pvm_joingroup       __ProtoGlarp__(( char * ));
224 int pvm_kill            __ProtoGlarp__(( int ));
225 int pvm_lookup          __ProtoGlarp__(( char *, int, int * ));
226 int pvm_lvgroup         __ProtoGlarp__(( char * ));
227 int pvm_mcast           __ProtoGlarp__(( int *, int, int ));
228 int pvm_mkbuf           __ProtoGlarp__(( int ));
229 int pvm_mstat           __ProtoGlarp__(( char * ));
230 int pvm_mytid           __ProtoGlarp__(( void ));
231 int pvm_notify          __ProtoGlarp__(( int, int,
232                                                                                 int, int * ));
233 int pvm_nrecv           __ProtoGlarp__(( int, int ));
234 int pvm_packf           __ProtoGlarp__(( const char *, ... ));
235 int pvm_parent          __ProtoGlarp__(( void ));
236 int pvm_perror          __ProtoGlarp__(( char * ));
237 int pvm_pkbyte          __ProtoGlarp__(( char *, int, int ));
238 int pvm_pkcplx          __ProtoGlarp__(( float *, int, int ));
239 int pvm_pkdcplx         __ProtoGlarp__(( double *, int, int ));
240 int pvm_pkdouble        __ProtoGlarp__(( double *, int, int ));
241 int pvm_pkfloat         __ProtoGlarp__(( float *, int, int ));
242 int pvm_pkint           __ProtoGlarp__(( int *, int, int ));
243 int pvm_pklong          __ProtoGlarp__(( long *, int, int ));
244 int pvm_pkshort         __ProtoGlarp__(( short *, int, int ));
245 int pvm_pkstr           __ProtoGlarp__(( char * ));
246 int pvm_pkuint          __ProtoGlarp__(( unsigned int *, int, int ));
247 int pvm_pkulong         __ProtoGlarp__(( unsigned long *, int, int ));
248 int pvm_pkushort        __ProtoGlarp__(( unsigned short *, int, int ));
249 int pvm_precv           __ProtoGlarp__(( int, int,
250                                                                         void *, int, int,
251                                                                         int *, int *, int * ));
252 int pvm_probe           __ProtoGlarp__(( int, int ));
253 int pvm_psend           __ProtoGlarp__(( int, int,
254                                                                         void *, int, int ));
255 int pvm_pstat           __ProtoGlarp__(( int ));
256 int pvm_recv            __ProtoGlarp__(( int, int ));
257 int (*pvm_recvf         __ProtoGlarp__(( int (*)(int, int, int) )) )();
258 int pvm_reduce          __ProtoGlarp__(( void (*)(int*, void*, void*, int*, int*),
259                                                                         void *, int,
260                                                                         int, int, char *,
261                                                                         int ));
262
263 /*
264 *       Predefined pvm_reduce functions
265 */
266 void PvmMax                     __ProtoGlarp__(( int *, void *, void *,
267                                                                         int *, int * ));
268 void PvmMin                     __ProtoGlarp__(( int *, void *, void *,
269                                                                         int *, int * ));
270 void PvmSum                     __ProtoGlarp__(( int *, void *, void *,
271                                                                         int *, int * ));
272 void PvmProduct         __ProtoGlarp__(( int *, void *, void *,
273                                                                         int *, int * ));
274
275 int pvm_reg_hoster      __ProtoGlarp__(( void ));
276 int pvm_reg_rm          __ProtoGlarp__(( struct pvmhostinfo ** ));
277 int pvm_reg_tasker      __ProtoGlarp__(( void ));
278 int pvm_scatter         __ProtoGlarp__(( void*, void*,
279                                                                                 int, int, int, char*, int));
280 int pvm_send            __ProtoGlarp__(( int, int ));
281 int pvm_sendsig         __ProtoGlarp__(( int, int ));
282 int pvm_setmwid         __ProtoGlarp__(( int, int ));
283 int pvm_setopt          __ProtoGlarp__(( int, int ));
284 int pvm_setrbuf         __ProtoGlarp__(( int ));
285 int pvm_setsbuf         __ProtoGlarp__(( int ));
286 int pvm_spawn           __ProtoGlarp__(( char *, char **, int,
287                                                                                 char *, int, int * ));
288 int pvm_start_pvmd      __ProtoGlarp__(( int, char **, int ));
289 int pvm_tasks           __ProtoGlarp__(( int, int *,
290                                                                                 struct pvmtaskinfo ** ));
291 int pvm_tickle          __ProtoGlarp__(( int, int *,
292                                                                                 int *, int * ));
293 int pvm_tidtohost       __ProtoGlarp__(( int ));
294 int pvm_trecv           __ProtoGlarp__(( int, int, struct timeval * ));
295 int pvm_unpackf         __ProtoGlarp__(( const char *, ... ));
296 int pvm_upkbyte         __ProtoGlarp__(( char *, int, int ));
297 int pvm_upkcplx         __ProtoGlarp__(( float *, int, int ));
298 int pvm_upkdcplx        __ProtoGlarp__(( double *, int, int ));
299 int pvm_upkdouble       __ProtoGlarp__(( double *, int, int ));
300 int pvm_upkfloat        __ProtoGlarp__(( float *, int, int ));
301 int pvm_upkint          __ProtoGlarp__(( int *, int, int ));
302 int pvm_upklong         __ProtoGlarp__(( long *, int, int ));
303 int pvm_upkshort        __ProtoGlarp__(( short *, int, int ));
304 int pvm_upkstr          __ProtoGlarp__(( char * ));
305 int pvm_upkuint         __ProtoGlarp__(( unsigned int *, int, int ));
306 int pvm_upkulong        __ProtoGlarp__(( unsigned long *, int, int ));
307 int pvm_upkushort       __ProtoGlarp__(( unsigned short *, int, int ));
308 char *pvm_version       __ProtoGlarp__(( void ));
309
310 #ifdef __cplusplus
311 }
312 #endif
313
314 #endif  /*_PVM3_H_*/
315