MIDAS
Loading...
Searching...
No Matches
pvm3.h
Go to the documentation of this file.
1
2/* $Id$ */
3
4/*
5 * PVM version 3.4: Parallel Virtual Machine System
6 * University of Tennessee, Knoxville TN.
7 * Oak Ridge National Laboratory, Oak Ridge TN.
8 * Emory University, Atlanta GA.
9 * Authors: J. J. Dongarra, G. E. Fagg, M. Fischer
10 * G. A. Geist, J. A. Kohl, R. J. Manchek, P. Mucci,
11 * P. M. Papadopoulos, S. L. Scott, and V. S. Sunderam
12 * (C) 1997 All Rights Reserved
13 *
14 * NOTICE
15 *
16 * Permission to use, copy, modify, and distribute this software and
17 * its documentation for any purpose and without fee is hereby granted
18 * provided that the above copyright notice appear in all copies and
19 * that both the copyright notice and this permission notice appear in
20 * supporting documentation.
21 *
22 * Neither the Institutions (Emory University, Oak Ridge National
23 * Laboratory, and University of Tennessee) nor the Authors make any
24 * representations about the suitability of this software for any
25 * purpose. This software is provided ``as is'' without express or
26 * implied warranty.
27 *
28 * PVM version 3 was funded in part by the U.S. Department of Energy,
29 * the National Science Foundation and the State of Tennessee.
30 */
31
32/*
33 * pvm3.h
34 *
35 * Libpvm3 includes.
36 *
37 * $Id$
38 *
39 */
40
41#ifndef _PVM3_H_
42
43#define _PVM3_H_
44
45/*
46* Release version
47*/
48
49#define PVM_VER "3.4.2"
50#define PVM_MAJOR_VERSION 3
51#define PVM_MINOR_VERSION 4
52#define PVM_PATCH_VERSION 2
53
54#ifndef WIN32
55#include <sys/time.h>
56#else
57#include "pvmwin.h"
58#include <sys/timeb.h>
59#include <time.h>
60#endif
61
62/*
63* Data packing styles for pvm_initsend()
64*/
65
66#define PvmDataDefault 0 /* XDR encoding */
67#define PvmDataRaw 1 /* Raw data copy */
68#define PvmDataInPlace 2 /* Raw data, left in place */
69#define PvmDataFoo PvmDataDefault /* Internal use */
70#define PvmDataTrace 4 /* User-Defined Trace Encoding */
71
72/*
73* pvm_spawn options
74*/
75
76#define PvmTaskDefault 0
77#define PvmTaskHost 1 /* specify host */
78#define PvmTaskArch 2 /* specify architecture */
79#define PvmTaskDebug 4 /* start task in debugger */
80#define PvmTaskTrace 8 /* process generates trace data */
81/* for MPP ports */
82#define PvmMppFront 16 /* spawn task on service node */
83#define PvmHostCompl 32 /* complement host set */
84/* for parent-less spawning */
85#define PvmNoSpawnParent 64
86
87/*
88* pvm_notify kinds
89*/
90
91#define PvmTaskExit 1 /* on task exit */
92#define PvmHostDelete 2 /* on host fail/delete */
93#define PvmHostAdd 3 /* on host startup */
94#define PvmRouteAdd 4 /* new task-task route opened */
95#define PvmRouteDelete 5 /* task-task route closed */
96
97/* flags combined with notify kind */
98
99#define PvmNotifyCancel 256 /* cancel (complete immediately) notifies */
100
101/*
102* for pvm_setopt and pvm_getopt
103*/
104
105#define PvmRoute 1 /* routing policy */
106#define PvmDontRoute 1 /* don't allow direct task-task links */
107#define PvmAllowDirect 2 /* allow direct links, but don't request */
108#define PvmRouteDirect 3 /* request direct links */
109#define PvmDebugMask 2 /* debugmask */
110#define PvmAutoErr 3 /* auto error reporting */
111#define PvmOutputTid 4 /* stdout destination for children */
112#define PvmOutputCode 5 /* stdout message tag */
113#define PvmTraceTid 6 /* trace destination for children */
114#define PvmTraceCode 7 /* trace message tag */
115#define PvmTraceBuffer 8 /* trace buffering for children */
116#define PvmTraceOptions 9 /* trace options for children */
117#define PvmTraceFull 1 /* do full trace events */
118#define PvmTraceTime 2 /* only do PVM routine timings */
119#define PvmTraceCount 3 /* only do PVM routine profiling */
120#define PvmFragSize 10 /* message fragment size */
121#define PvmResvTids 11 /* allow reserved message tids and codes */
122#define PvmSelfOutputTid 12 /* stdout destination for task */
123#define PvmSelfOutputCode 13 /* stdout message tag */
124#define PvmSelfTraceTid 14 /* trace destination for task */
125#define PvmSelfTraceCode 15 /* trace message tag */
126#define PvmSelfTraceBuffer 16 /* trace buffering for task */
127#define PvmSelfTraceOptions 17 /* trace options for task */
128#define PvmShowTids 18 /* pvm_catchout prints task ids with output */
129#define PvmPollType 19 /* shared memory wait method */
130#define PvmPollConstant 1
131#define PvmPollSleep 2
132#define PvmPollTime 20 /* time before sleep if PvmPollSleep */
133#define PvmOutputContext 21 /* stdout message context */
134#define PvmTraceContext 22 /* trace message context */
135#define PvmSelfOutputContext 23 /* stdout message context */
136#define PvmSelfTraceContext 24 /* trace message context */
137#define PvmNoReset 25 /* do not kill task on reset */
138
139/*
140* for pvm_[sg]ettmask
141*/
142
143#define PvmTaskSelf 0 /* this task */
144#define PvmTaskChild 1 /* (future) child tasks */
145
146/*
147* Need to have PvmBaseContext defined
148*/
149
150#define PvmBaseContext 0
151
152/*
153* for message mailbox operations: pvm_putinfo and pvm_recvinfo
154*/
155
156#define PvmMboxDefault 0 /* put: single locked instance */
157 /* recv: 1st entry */
158 /* start w/index=0 */
159#define PvmMboxPersistent 1 /* entry remains after owner exit */
160#define PvmMboxMultiInstance 2 /* multiple entries in class */
161#define PvmMboxOverWritable 4 /* can write over this entry */
162#define PvmMboxFirstAvail 8 /* select 1st index >= specified */
163#define PvmMboxReadAndDelete 16 /* atomic read / delete */
164 /* requires read & delete rights */
165#define PvmMboxWaitForInfo 32 /* for blocking recvinfo */
166
167
168#define PVMNORESETCLASS "###_PVM_NO_RESET_###"
169
170#define PVMHOSTERCLASS "###_PVM_HOSTER_###"
171
172#define PVMTASKERCLASS "###_PVM_TASKER_###"
173
174#define PVMTRACERCLASS "###_PVM_TRACER_###"
175
176#define PVMRMCLASS "###_PVM_RM_###"
177
178/*
179* Libpvm error codes
180*/
181
182#define PvmOk 0 /* Success */
183#define PvmBadParam -2 /* Bad parameter */
184#define PvmMismatch -3 /* Parameter mismatch */
185#define PvmOverflow -4 /* Value too large */
186#define PvmNoData -5 /* End of buffer */
187#define PvmNoHost -6 /* No such host */
188#define PvmNoFile -7 /* No such file */
189#define PvmDenied -8 /* Permission denied */
190#define PvmNoMem -10 /* Malloc failed */
191#define PvmBadMsg -12 /* Can't decode message */
192#define PvmSysErr -14 /* Can't contact local daemon */
193#define PvmNoBuf -15 /* No current buffer */
194#define PvmNoSuchBuf -16 /* No such buffer */
195#define PvmNullGroup -17 /* Null group name */
196#define PvmDupGroup -18 /* Already in group */
197#define PvmNoGroup -19 /* No such group */
198#define PvmNotInGroup -20 /* Not in group */
199#define PvmNoInst -21 /* No such instance */
200#define PvmHostFail -22 /* Host failed */
201#define PvmNoParent -23 /* No parent task */
202#define PvmNotImpl -24 /* Not implemented */
203#define PvmDSysErr -25 /* Pvmd system error */
204#define PvmBadVersion -26 /* Version mismatch */
205#define PvmOutOfRes -27 /* Out of resources */
206#define PvmDupHost -28 /* Duplicate host */
207#define PvmCantStart -29 /* Can't start pvmd */
208#define PvmAlready -30 /* Already in progress */
209#define PvmNoTask -31 /* No such task */
210#define PvmNotFound -32 /* Not Found */
211#define PvmExists -33 /* Already exists */
212#define PvmHostrNMstr -34 /* Hoster run on non-master host */
213#define PvmParentNotSet -35 /* Spawning parent set PvmNoSpawnParent */
214
215/*
216* crusty error constants from 3.3, now redefined...
217*/
218#define PvmNoEntry PvmNotFound /* No such entry */
219#define PvmDupEntry PvmDenied /* Duplicate entry */
220
221/*
222* Data types for pvm_reduce(), pvm_psend(), pvm_precv()
223*/
224
225#define PVM_STR 0 /* string */
226#define PVM_BYTE 1 /* byte */
227#define PVM_SHORT 2 /* short */
228#define PVM_INT 3 /* int */
229#define PVM_FLOAT 4 /* real */
230#define PVM_CPLX 5 /* complex */
231#define PVM_DOUBLE 6 /* double */
232#define PVM_DCPLX 7 /* double complex */
233#define PVM_LONG 8 /* long integer */
234#define PVM_USHORT 9 /* unsigned short int */
235#define PVM_UINT 10 /* unsigned int */
236#define PVM_ULONG 11 /* unsigned long int */
237
238/*
239* returned by pvm_config()
240*/
241
243 int hi_tid; /* pvmd tid */
244 char *hi_name; /* host name */
245 char *hi_arch; /* host arch */
246 int hi_speed; /* cpu relative speed */
247 int hi_dsig; /* data signature */
248};
249
250/*
251* returned by pvm_tasks()
252*/
253
255 int ti_tid; /* task id */
256 int ti_ptid; /* parent tid */
257 int ti_host; /* pvmd tid */
258 int ti_flag; /* status flags */
259 char *ti_a_out; /* a.out name */
260 int ti_pid; /* task (O/S dependent) process id */
261};
262
263/*
264* for pvm_getminfo(), pvm_setminfo()
265*/
266
267struct pvmminfo {
268 int len; /* message length */
269 int ctx; /* context */
270 int tag; /* tag */
271 int wid; /* wait id */
272 int enc; /* encoding */
273 int crc; /* crc checksum */
274 int src; /* source tid */
275 int dst; /* destination tid */
276};
277
278/*
279* returned by pvm_getmboxinfo()
280*/
281
283 char *mi_name; /* class name */
284 int mi_nentries; /* # of entries for this class */
285 int *mi_indices; /* mbox entry indices */
286 int *mi_owners; /* mbox entry owner tids */
287 int *mi_flags; /* mbox entry flags */
288};
289
290#ifdef __ProtoGlarp__
291#undef __ProtoGlarp__
292#endif
293#if defined(__STDC__) || defined(__cplusplus)
294#define __ProtoGlarp__(x) x
295#else
296#define __ProtoGlarp__(x) ()
297#endif
298
299#ifdef __cplusplus
300extern "C" {
301#endif
302
303 int pvm_addhosts __ProtoGlarp__((char **, int, int *));
304 int pvm_addmhf __ProtoGlarp__((int, int, int, int (*)(int)));
306 int pvm_barrier __ProtoGlarp__((char *, int));
307 int pvm_bcast __ProtoGlarp__((char *, int));
308 int pvm_bufinfo __ProtoGlarp__((int, int *, int *, int *));
309#if defined(EOF)
311#endif
312 int pvm_config __ProtoGlarp__((int *, int *, struct pvmhostinfo **));
313 int pvm_delhosts __ProtoGlarp__((char **, int, int *));
314 int pvm_delinfo __ProtoGlarp__((char *, int, int));
317 int pvm_export __ProtoGlarp__((char *));
318 int pvm_freebuf __ProtoGlarp__((int));
320 int pvm_gather __ProtoGlarp__((void *, void *, int, int, int, char *, int));
321 int pvm_getcontext __ProtoGlarp__((void));
323 int pvm_getinst __ProtoGlarp__((char *, int));
325 int pvm_getnoresets __ProtoGlarp__((int **, int *));
326 int pvm_getopt __ProtoGlarp__((int));
327 int pvm_getrbuf __ProtoGlarp__((void));
328 int pvm_getsbuf __ProtoGlarp__((void));
329 int pvm_gettid __ProtoGlarp__((char *, int));
330 int pvm_gsize __ProtoGlarp__((char *));
331 int pvm_halt __ProtoGlarp__((void));
332 int pvm_hostsync __ProtoGlarp__((int, struct timeval *, struct timeval *));
333 int pvm_initsend __ProtoGlarp__((int));
334 int pvm_joingroup __ProtoGlarp__((char *));
335 int pvm_kill __ProtoGlarp__((int));
336 int pvm_lvgroup __ProtoGlarp__((char *));
337 int pvm_getmboxinfo __ProtoGlarp__((char *, int *, struct pvmmboxinfo **));
338 int pvm_mcast __ProtoGlarp__((int *, int, int));
339 int pvm_mkbuf __ProtoGlarp__((int));
340 int pvm_mstat __ProtoGlarp__((char *));
341 int pvm_mytid __ProtoGlarp__((void));
342 int pvm_newcontext __ProtoGlarp__((void));
343 int pvm_notify __ProtoGlarp__((int, int, int, int *));
344 int pvm_nrecv __ProtoGlarp__((int, int));
345 int pvm_packf __ProtoGlarp__((const char *, ...));
346 int pvm_parent __ProtoGlarp__((void));
347 int pvm_perror __ProtoGlarp__((char *));
348 int pvm_pkbyte __ProtoGlarp__((char *, int, int));
349 int pvm_pkcplx __ProtoGlarp__((float *, int, int));
350 int pvm_pkdcplx __ProtoGlarp__((double *, int, int));
351 int pvm_pkdouble __ProtoGlarp__((double *, int, int));
352 int pvm_pkfloat __ProtoGlarp__((float *, int, int));
353 int pvm_pkint __ProtoGlarp__((int *, int, int));
354 int pvm_pklong __ProtoGlarp__((long *, int, int));
355 int pvm_pkshort __ProtoGlarp__((short *, int, int));
356 int pvm_pkstr __ProtoGlarp__((char *));
357 int pvm_pkuint __ProtoGlarp__((unsigned int *, int, int));
358 int pvm_pkulong __ProtoGlarp__((unsigned long *, int, int));
359 int pvm_pkushort __ProtoGlarp__((unsigned short *, int, int));
360 int pvm_precv __ProtoGlarp__((int, int, void *, int, int, int *, int *, int *));
361 int pvm_probe __ProtoGlarp__((int, int));
362 int pvm_psend __ProtoGlarp__((int, int, void *, int, int));
363 int pvm_pstat __ProtoGlarp__((int));
364 int pvm_putinfo __ProtoGlarp__((char *, int, int));
365 int pvm_recv __ProtoGlarp__((int, int));
366 int (*pvm_recvf __ProtoGlarp__((int (*)(int, int, int)))) ();
367 int pvm_recvinfo __ProtoGlarp__((char *, int, int));
368 int pvm_reduce __ProtoGlarp__((void (*)(int *, void *, void *, int *, int *),
369 void *, int, int, int, char *, int));
370
371/*
372* Predefined pvm_reduce functions
373*/
374 void PvmMax __ProtoGlarp__((int *, void *, void *, int *, int *));
375 void PvmMin __ProtoGlarp__((int *, void *, void *, int *, int *));
376 void PvmSum __ProtoGlarp__((int *, void *, void *, int *, int *));
377 void PvmProduct __ProtoGlarp__((int *, void *, void *, int *, int *));
378
379 int pvm_reg_hoster __ProtoGlarp__((void));
381 int pvm_reg_tasker __ProtoGlarp__((void));
382 int pvm_reg_tracer __ProtoGlarp__((int, int, int, int, char *, int, int));
383 int pvm_scatter __ProtoGlarp__((void *, void *, int, int, int, char *, int));
384 int pvm_send __ProtoGlarp__((int, int));
385 int pvm_sendsig __ProtoGlarp__((int, int));
387 int pvm_setminfo __ProtoGlarp__((int, struct pvmminfo *));
388 int pvm_setopt __ProtoGlarp__((int, int));
389 int pvm_setrbuf __ProtoGlarp__((int));
390 int pvm_setsbuf __ProtoGlarp__((int));
391 int pvm_siblings __ProtoGlarp__((int **));
392 int pvm_spawn __ProtoGlarp__((char *, char **, int, char *, int, int *));
393 int pvm_start_pvmd __ProtoGlarp__((int, char **, int));
394 int pvm_tasks __ProtoGlarp__((int, int *, struct pvmtaskinfo **));
395 int pvm_tickle __ProtoGlarp__((int, int *, int *, int *));
396 int pvm_tidtohost __ProtoGlarp__((int));
397 int pvm_trecv __ProtoGlarp__((int, int, struct timeval *));
398 int pvm_unexport __ProtoGlarp__((char *));
399 int pvm_unpackf __ProtoGlarp__((const char *, ...));
400 int pvm_upkbyte __ProtoGlarp__((char *, int, int));
401 int pvm_upkcplx __ProtoGlarp__((float *, int, int));
402 int pvm_upkdcplx __ProtoGlarp__((double *, int, int));
403 int pvm_upkdouble __ProtoGlarp__((double *, int, int));
404 int pvm_upkfloat __ProtoGlarp__((float *, int, int));
405 int pvm_upkint __ProtoGlarp__((int *, int, int));
406 int pvm_upklong __ProtoGlarp__((long *, int, int));
407 int pvm_upkshort __ProtoGlarp__((short *, int, int));
408 int pvm_upkstr __ProtoGlarp__((char *));
409 int pvm_upkuint __ProtoGlarp__((unsigned int *, int, int));
410 int pvm_upkulong __ProtoGlarp__((unsigned long *, int, int));
411 int pvm_upkushort __ProtoGlarp__((unsigned short *, int, int));
412 char *pvm_version __ProtoGlarp__((void));
413
414/*
415* these are going away in the next version.
416* use the replacements
417*/
418
419#ifdef PVM33COMPAT
420 int pvm_getmwid __ProtoGlarp__((int));
421 int pvm_setmwid __ProtoGlarp__((int, int));
422#endif
423
424/* made backwards compatible -> now use mbox interface... */
425 int pvm_delete __ProtoGlarp__((char *, int));
426 int pvm_insert __ProtoGlarp__((char *, int, int));
427 int pvm_lookup __ProtoGlarp__((char *, int, int *));
428
429#ifdef __cplusplus
430}
431#endif
432#endif /*_PVM3_H_*/
#define __ProtoGlarp__(x)
Definition pvm3.h:296
int(*)() pvm_recvf((int(*)(int, int, int)))
Definition pvm3.h:366
TH1X EXPRT * h1_book(const char *name, const char *title, int bins, double min, double max)
Definition rmidas.h:24
int hi_speed
Definition pvm3.h:246
char * hi_arch
Definition pvm3.h:245
int hi_dsig
Definition pvm3.h:247
char * hi_name
Definition pvm3.h:244
int hi_tid
Definition pvm3.h:243
char * mi_name
Definition pvm3.h:283
int * mi_owners
Definition pvm3.h:286
int mi_nentries
Definition pvm3.h:284
int * mi_indices
Definition pvm3.h:285
int * mi_flags
Definition pvm3.h:287
int dst
Definition pvm3.h:275
int ctx
Definition pvm3.h:269
int tag
Definition pvm3.h:270
int src
Definition pvm3.h:274
int crc
Definition pvm3.h:273
int wid
Definition pvm3.h:271
int enc
Definition pvm3.h:272
int len
Definition pvm3.h:268
int ti_host
Definition pvm3.h:257
int ti_flag
Definition pvm3.h:258
int ti_ptid
Definition pvm3.h:256
int ti_pid
Definition pvm3.h:260
char * ti_a_out
Definition pvm3.h:259
int ti_tid
Definition pvm3.h:255