*** empty log message ***
[dyninst.git] / paradyn / h / performanceConsultant.I
1 /*
2  * Interface between the Performance Consultant and the rest of paradyn.
3  * $Id: performanceConsultant.I,v 1.36 1999/06/04 16:04:29 cain Exp $
4  */
5
6 #include "dataManager.thread.h"
7
8 //
9 // Forward decl of classes that are passed out the interface.
10 //
11 class searchHistoryNode;
12 class filteredDataServer;
13 class PCmetricInstServer;
14
15 typedef struct int_Array {
16   int count;
17   int *data;
18 } int_Array;
19
20
21 typedef enum testResult
22 {
23         tfalse, ttrue, tunknown
24 }; 
25
26 // Note: the following structure (used by the "getNodeInfo" igen call) is
27 //       subject to fairly frequent change, as we think of more goodies.
28 struct shg_node_info {
29    string why;
30    string where;
31    bool active;                 // new
32    testResult currentConclusion;
33    timeStamp timeTrueFalse;
34    sampleValue currentValue;    // changed to reflect "pure" value
35    sampleValue adjustedValue;   // what was previously currentValue
36    sampleValue lastThreshold;   // new
37    sampleValue hysConstant;     // new
38    timeStamp startTime;
39    timeStamp endTime;
40    sampleValue estimatedCost;
41    bool persistent;
42 };
43
44 $remote performanceConsultant {
45     $base 6000;
46     $version 22;
47
48     // If search is paused, resumes search.  Otherwise, performs
49     // all initialization for new search; initializes root node and 
50     // messages in search display
51     // Assumes phaseID is valid, defined as: DM's phaseID plus one for 
52     // current search,  0 for global search.
53     $async void activateSearch(unsigned phaseID);
54
55     // stop the automated search process in its tracks.
56     $async void pauseSearch(unsigned phaseID);
57
58     // Completely terminate a search; remove all instrumentation.
59     $async void endSearch(unsigned phaseID);
60
61     // DM tells the PC the new value for predicted data cost
62     // $async void getPredictedDataCostCallbackPC(int dummy,float val);
63
64     // Get loads of information about a node:
65     // client's responsibility to provide valid shg_node_info struct pointer
66     $async void requestNodeInfo(unsigned phaseID, int nodeID);
67
68     // Dump out contents of search history graph into a file
69     // valid flag values:  1 = global 2 = phase 3 = all
70     $async void saveSHG(const char *filename, int flag);
71
72     $signore
73     // these globals hold values updated by tunable constant callbacks
74     static float hysteresisRange;
75     static float predictedCostLimit;
76     static float minObservationTime;
77     static float sufficientTime;
78     static bool printDataTrace;
79     static bool printTestResults;
80     static bool printSearchChanges;
81     static bool printDataCollection;
82     static bool collectInstrTimings;
83     static bool useIndividualThresholds;
84     static bool useCallGraphSearch;
85     // other PC-globals
86     static unsigned DMcurrentPhaseToken;
87     static unsigned currentPhase;
88     static perfStreamHandle pstream;
89     static metricHandle normalMetric;
90     static bool PChyposDefined;
91     static unsigned numMetrics;
92     // for quick handling of new data
93     static filteredDataServer *globalRawDataServer;
94     static filteredDataServer *currentRawDataServer;
95     static PCmetricInstServer *globalPCMetricServer;
96     $signore    
97 };