created error #19
[dyninst.git] / common / src / rpcUtilPVM.C
1
2 /*
3  * This file defines a set of utility routines for RPC services.
4  *
5  * $Log: rpcUtilPVM.C,v $
6  * Revision 1.3  1994/06/15 15:09:23  markc
7  * Rename taskinfo to pvmtaskinfo.
8  *
9  * Revision 1.2  1994/05/17  00:14:46  hollings
10  * added rcs log entry.
11  *
12  *
13  */
14 #include <stdlib.h>
15 #include <errno.h>
16 #include <assert.h>
17 #include <util/h/rpcUtilPVM.h>
18
19 //
20 // Starts the 'program' on 'machine' and saves its thread id
21 //
22 PVMrpc::PVMrpc(char *where, char *program, char **argv, int flag)
23 {
24   pvm_error = 0;
25   other_tid = -1;
26   if ((my_tid = pvm_mytid()) < 0)
27     pvm_error = -1;
28   else 
29     {
30       if (pvm_spawn(program, argv, flag, where, 1, &other_tid) != 1)
31         pvm_error = -1;
32     }
33 }
34
35 //
36 // Accepts id of other thread
37 //
38 PVMrpc::PVMrpc(int other)
39 {
40   if ((my_tid = pvm_mytid()) < 0)
41     pvm_error = -1;
42   else 
43     pvm_error = 0;
44
45   other_tid = other;
46 }
47
48 //
49 // parent is other
50 //
51 PVMrpc::PVMrpc()
52 {
53   pvm_error = 0;
54   if ((my_tid = pvm_mytid()) < 0)
55     pvm_error = -1;
56   else
57     { if ((other_tid = pvm_parent()) < 0) pvm_error = -1;}
58 }
59
60 int
61 PVMrpc::readReady()
62 {
63   int bufid, count;
64   struct pvmtaskinfo *tp;
65
66   if (pvm_error == -1) return -1;
67   if ((bufid = pvm_probe(other_tid, -1)) < 0)
68     return -1;
69   else if (bufid >= 1)
70     return 1;
71   else if (other_tid == -1)
72     return 0;
73   else if ((pvm_tasks(other_tid, &count, &tp) < 0) ||
74            (count != 1) ||
75            (tp->ti_tid != other_tid))
76     return (pvm_probe (other_tid, -1));
77   else
78     return 0;
79 }
80
81