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