added rcs log entry.
[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.2  1994/05/17 00:14:46  hollings
7  * added rcs log entry.
8  *
9  *
10  */
11 #include <stdlib.h>
12 #include <errno.h>
13 #include <assert.h>
14 #include <util/h/rpcUtilPVM.h>
15
16 //
17 // Starts the 'program' on 'machine' and saves its thread id
18 //
19 PVMrpc::PVMrpc(char *where, char *program, char **argv, int flag)
20 {
21   pvm_error = 0;
22   other_tid = -1;
23   if ((my_tid = pvm_mytid()) < 0)
24     pvm_error = -1;
25   else 
26     {
27       if (pvm_spawn(program, argv, flag, where, 1, &other_tid) != 1)
28         pvm_error = -1;
29     }
30 }
31
32 //
33 // Accepts id of other thread
34 //
35 PVMrpc::PVMrpc(int other)
36 {
37   if ((my_tid = pvm_mytid()) < 0)
38     pvm_error = -1;
39   else 
40     pvm_error = 0;
41
42   other_tid = other;
43 }
44
45 //
46 // parent is other
47 //
48 PVMrpc::PVMrpc()
49 {
50   pvm_error = 0;
51   if ((my_tid = pvm_mytid()) < 0)
52     pvm_error = -1;
53   else
54     { if ((other_tid = pvm_parent()) < 0) pvm_error = -1;}
55 }
56
57 int
58 PVMrpc::readReady()
59 {
60   int bufid, count;
61   struct taskinfo *tp;
62
63   if (pvm_error == -1) return -1;
64   if ((bufid = pvm_probe(other_tid, -1)) < 0)
65     return -1;
66   else if (bufid >= 1)
67     return 1;
68   else if (other_tid == -1)
69     return 0;
70   else if ((pvm_tasks(other_tid, &count, &tp) < 0) ||
71            (count != 1) ||
72            (tp->ti_tid != other_tid))
73     return (pvm_probe (other_tid, -1));
74   else
75     return 0;
76 }
77
78