(really Karen)
[dyninst.git] / paradyn / h / performanceConsultant.I
1
2 /*
3  * Interface between the Performance Consultant and the rest of paradyn.
4  *
5  * $Log: performanceConsultant.I,v $
6  * Revision 1.13  1995/10/17 03:11:54  tamches
7  * (really Karen)
8  * Added endSearch() igen call
9  *
10  * Revision 1.12  1995/10/05 04:48:24  karavan
11  * changes to support multiple searches, one per phase.
12  *
13  * Revision 1.11  1995/02/16  08:01:45  markc
14  * Modified interfaces:
15  *   1) XDR interfaces use strings and vectors instead of igen arrays and char*'s
16  *   2) No sync upcalls are allowed by the server in xdr interfaces
17  *   3) Redefined igen arrays that were used in thread code to use manually defined
18  *      structures rather than igen-defined, since igen did not need to know about
19  *      these structures.
20  *   4) Upped all of the version numbers since all new interface code is generated
21  *   5) Async calls are no longer handled while waiting for sync responses, these
22  *      requests are buffered.
23  *
24  * Revision 1.10  1995/01/26  17:59:31  jcargill
25  * Changed igen-generated include files to new naming convention; fixed
26  * some bugs compiling with gcc-2.6.3.
27  *
28  * Revision 1.9  1994/09/22  00:45:15  markc
29  * Made array declarations explicit
30  * Incremented version number
31  *
32  * Revision 1.8  1994/08/17  17:55:29  markc
33  * Incremented version numbers because a new version of igen has been
34  * committed.
35  *
36  * Revision 1.7  1994/05/09  20:53:36  hollings
37  * added changeState to dataManager, and clearSHG to performanceConsultant.
38  *
39  * Revision 1.6  1994/05/06  06:50:45  karavan
40  * added startSHG().
41  *
42  * Revision 1.5  1994/05/02  20:36:50  hollings
43  * Added pause and shg get node routines.
44  *
45  * Revision 1.4  1994/04/27  22:54:52  hollings
46  * Merged refine auto and search.
47  *
48  * Revision 1.3  1994/04/21  05:01:21  karavan
49  * changed search and autoRefine to async to avoid deadlock with UIM.
50  *
51  * Revision 1.2  1994/02/02  00:43:20  hollings
52  * Added Auto Refinement options.
53  *
54  * Revision 1.1  1994/02/01  18:47:35  hollings
55  * Upgrades for performanceConsultant thread.
56  *
57  */
58 #include "dataManager.thread.h"
59
60 //
61 // Forward decl of classes that are passed out the interface.
62 //
63 class searchHistoryNode;
64 typedef searchHistoryNode *SHNptr;
65
66 typedef struct int_Array {
67   int count;
68   int *data;
69 } int_Array;
70
71 typedef struct SHNptr_Array {
72   int count;
73   SHNptr *data;
74 } SHNptr_Array;
75
76 $remote performanceConsultant {
77     $base 6000;
78     $version 5;
79
80     // for all of the configured tests print their status.
81     //  This is intended for debugging only.
82     void printTestStatus();
83
84     // enumerate all of the refinements.
85     SHNptr_Array getWhyRefinements(searchHistoryNode *);
86     SHNptr_Array getWhenRefinements(searchHistoryNode *);
87     SHNptr_Array getWhereRefinements(searchHistoryNode *);
88     SHNptr_Array getAllRefinements(searchHistoryNode *);
89
90     // return the current refinement node.
91     searchHistoryNode *getCurrentRefinement();
92     int getCurrentNodeId();
93
94     // all initialization for new search; checks first if search already
95     // active for specified phase, to enforce 1 search/phase rule
96     // this calls ui->initSHG which opens new display
97     $async void newSearch(phaseType pt);
98
99     void printSHGNode(searchHistoryNode *);
100     void printSHGList();
101
102     // try to make automated refinements.  Up to limit number of steps.
103     $async void search(bool, int limit, int phaseID);
104
105     // stop the automated search process in its tracks.
106     $async void pauseSearch(int phaseID);
107
108     // Completely terminate a search; remove all instrumentation.
109     void endSearch(int phaseID);
110
111     // change the current refinement node.
112     //  NOTE:  The node must be true and an ancestral path to the root must
113     //         also be true or set will fail.
114     //         As a side effect, searching is paused!!
115     int setCurrentSHGnode(int node);
116
117     // This doesn't work yet !!
118     void doRefine(int_Array ids);
119
120     // Really just setCurrentSHGnode(id of root node).
121     $async void resetRefinement();
122 };