added pause/continue Process.
[dyninst.git] / paradyn / h / dyninstRPC.I
1 #define MetStyleEventCounter    0
2 #define MetStyleSampledFunction 1
3
4
5 /* descriptive information about a metric */
6 $remote typedef struct { 
7     String name;
8     int style;
9     String units;
10 } metricInfo;           
11
12 /*
13  * Create a paradynd process.
14  *
15  */
16 int createDaemon(String machine,
17                  String login,
18                  String name,
19                  int argc,
20                  char *argv[]);
21
22
23 $remote dynRPC {
24     $base 4000;
25     $version 8;
26
27     //
28     // Define a program to run. 
29     int addExecutable(int argc, $array String argv);
30
31     //
32     // Connect up with a running program (not possible on all platforms).
33     //
34     Boolean attachProgram(int pid);
35
36     //
37     // Start an application running (This starts the actual execution).
38     //
39     Boolean startProgram(int program);
40
41     //
42     //   Stop a process
43     //
44     Boolean pauseProgram(int program);
45
46     //
47     //   Stop all processes associted with the application.
48     //
49     Boolean pauseApplication();
50
51     //
52     // Continue a paused process
53     //
54     void continueProgram(int program);
55
56     //
57     // Continue all of the processes
58     //
59     void continueApplication();
60
61     //
62     // Disconnect the tool from the process.
63     //    pause - leave the process in a stopped state.
64     //
65     //
66     Boolean detachProgram(int program, Boolean pause);
67
68     //
69     // Gets called when a new application is started that is not visible to
70     //   paradyn (e.g. pvm_spawn).
71     //
72     $upcall $async void newProgramCallbackFunc( int pid, 
73                                                 int argc, 
74                                                 $array String argv, 
75                                                 String machine);
76                                 
77
78     //
79     // Handler that gets called when new sample data is delivered.
80     //
81     //   p - a program from addProgram
82     //   mi - a metricInstance returned by enableDataCollection
83     //   startTimeStamp - starting time of the interval covered by this sample.
84     //   endTimeStamp - ending time of the interval covered by this sample.
85     //   value - the value of this sample
86     //
87    $virtual $upcall $async void sampleDataCallbackFunc(int program, 
88                                                        int mi,
89                                                        double startTimeStamp, 
90                                                        double endTimeStamp, 
91                                                        double value);
92
93     //
94     // Handler that gets called when a new resource is defined.
95     //
96     // parent           - parent of new resource
97     // newResource              - new resource being created (full name)
98     // name                     - short name of the new resource
99     //
100     $upcall $async void resourceInfoCallback(int program, 
101                                               String parent, 
102                                               String newResource, 
103                                               String name);
104
105     //
106     // Upcall for a new metric being defined.
107     //
108     $upcall $async void newMetricCallback(metricInfo info); 
109
110     void setSampleRate(double sampleInterval);
111
112     //
113     // Routines to control data collection on a performanceStream.
114     //
115     // resourceList     - a list of resources
116     // metric   - what metric to collect data for
117     //
118     int enableDataCollection($array String resourceList, String metric);
119
120     //
121     // stop collecting data for the named mi.
122     //     mi           - a metricInstance returned by enableDataCollection.
123     //
124     void disableDataCollection(int mi);
125
126     //
127     // Return the expected cost of collecting performance data for a single
128     //    metric at a given focus.  The value returned is the fraction of
129     //    perturbation expected (i.e. 0.10 == 10% slow down expected).
130     //
131     double getPredictedDataCost($array String resourceList, String metric);
132
133     //
134     // Get the static configuration information.
135     //
136     $array metricInfo getAvailableMetrics();
137
138     //
139     // Create a new resource.
140     //
141     void addResource(String parent, String name);
142
143     //
144     // Debugger style calls.
145     //
146     //
147     String getStatus(int pid);
148     void coreProcess(int pid);
149
150     //
151     // For paradynd's that may get started, but not by paradyn
152     // This allows them to report system information
153     $virtual $upcall $async void reportSelf(String machine, 
154                                             String program, 
155                                             int pid);
156
157     $cmember int my_pid;
158 };