Upgrades for performanceConsultant thread.
[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 all processes associted with the application.
43     //
44     Boolean pauseProgram(int program);
45
46     //
47     // Continue a paused application.
48     //
49     void continueProgram(int program);
50
51
52     //
53     // Disconnect the tool from the process.
54     //    pause - leave the process in a stopped state.
55     //
56     //
57     Boolean detachProgram(int program, Boolean pause);
58
59     //
60     // Gets called when a new application is started that is not visible to
61     //   paradyn (e.g. pvm_spawn).
62     //
63     $upcall $async void newProgramCallbackFunc(int program);
64
65     //
66     // Handler that gets called when new sample data is delivered.
67     //
68     //   p - a program from addProgram
69     //   mi - a metricInstance returned by enableDataCollection
70     //   startTimeStamp - starting time of the interval covered by this sample.
71     //   endTimeStamp - ending time of the interval covered by this sample.
72     //   value - the value of this sample
73     //    
74     //
75     $upcall $async void sampleDataCallbackFunc(int program, 
76                                            int mi,
77                                            double startTimeStamp, 
78                                            double endTimeStamp, 
79                                            double value);
80
81     //
82     // Handler that gets called when a new resource is defined.
83     //
84     // parent           - parent of new resource
85     // newResource              - new resource being created (full name)
86     // name                     - short name of the new resource
87     //
88     $upcall $async void resourceInfoCallback(int program, 
89                                               String parent, 
90                                               String newResource, 
91                                               String name);
92
93     //
94     // Upcall for a new metric being defined.
95     //
96     $upcall $async void newMetricCallback(metricInfo info); 
97
98     void setSampleRate(double sampleInterval);
99
100     //
101     // Routines to control data collection on a performanceStream.
102     //
103     // resourceList     - a list of resources
104     // metric   - what metric to collect data for
105     //
106     int enableDataCollection($array String resourceList, String metric);
107
108     //
109     // stop collecting data for the named mi.
110     //     mi           - a metricInstance returned by enableDataCollection.
111     //
112     void disableDataCollection(int mi);
113
114     //
115     // Return the expected cost of collecting performance data for a single
116     //    metric at a given focus.  The value returned is the fraction of
117     //    perturbation expected (i.e. 0.10 == 10% slow down expected).
118     //
119     double getPredictedDataCost($array String resourceList, String metric);
120
121     //
122     // Get the static configuration information.
123     //
124     $array metricInfo getAvailableMetrics();
125
126     //
127     // Create a new resource.
128     //
129     void addResource(String parent, String name);
130
131     //
132     // Debugger style calls.
133     //
134     //
135     String getStatus(int pid);
136     void coreProcess(int pid);
137 };