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