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