added phase interface functions
[dyninst.git] / visi / h / visi.I
1
2 /*
3  * Copyright (c) 1993, 1994 Barton P. Miller, Jeff Hollingsworth,
4  *     Bruce Irvin, Jon Cargille, Krishna Kunchithapadam, Karen
5  *     Karavanic, Tia Newhall, Mark Callaghan.  All rights reserved.
6  * 
7  * This software is furnished under the condition that it may not be
8  * provided or otherwise made available to, or used by, any other
9  * person, except as provided for by the terms of applicable license
10  * agreements.  No title to or ownership of the software is hereby
11  * transferred.  The name of the principals may not be used in any
12  * advertising or publicity related to this software without specific,
13  * written prior authorization.  Any use of this software must include
14  * the above copyright notice.
15  *
16  */
17
18 /* $Log: visi.I,v $
19 /* Revision 1.10  1995/02/26 01:59:28  newhall
20 /* added phase interface functions
21 /*
22 # Revision 1.9  1995/02/16  09:32:03  markc
23 # Modified to support machines which do not have NaN(x).
24 # This code has not been tested, but it compiles.
25 #
26 # Revision 1.8  1994/09/25  01:58:13  newhall
27 # changed interface definitions to work for new version of igen
28 # changed AddMetricsResources def. to take array of metric/focus pairs
29 #
30 # Revision 1.7  1994/09/22  03:12:24  markc
31 # declared arrays at start
32 # incremented version number
33 #
34 # Revision 1.6  1994/08/17  18:21:09  markc
35 # Incremented the version number because a new version of igen is in place.
36 #
37 # Revision 1.5  1994/08/03  20:47:28  newhall
38 # removed interface routines Enabled and NewMetricsResources
39 #
40 # Revision 1.4  1994/07/30  03:26:18  newhall
41 # added visi interface routines Enabled and BulkDataTransfer
42 #
43 # Revision 1.3  1994/05/11  17:11:07  newhall
44 # changed data values from double to float
45 #
46 # Revision 1.2  1994/04/13  21:23:09  newhall
47 # *** empty log message ***
48 #
49 # Revision 1.1  1994/03/29  02:42:13  newhall
50 # exported services of the visualization process
51 #
52 # Revision 1.3  1994/03/17  05:20:35  newhall
53 # changed bucket width and time value's type to double
54 #
55 # Revision 1.2  1994/03/14  20:28:52  newhall
56 # changed visi subdirectory structure
57 #  */ 
58
59
60 $remote struct metricType {
61      string units;    // how units are measured  i.e. "ms" 
62      string name;     // for y-axis labeling  
63      int     Id;       // unique metric Id
64      int     aggregate;  //either SUM or AVE
65 };
66
67 $remote struct resourceType {
68      string name;     // obj. name for graph labeling
69      int    Id;       // unique resource id
70 };
71
72 $remote struct dataValue {
73   int   metricId;
74   int   resourceId;
75   int   bucketNum;
76   float data;
77 };
78
79 $remote struct visi_matrix {
80     resourceType res;
81     metricType   met;
82 };
83
84 $remote struct phase_info{
85   double start;
86   double end;
87   double  bucketWidth;
88   int handle;
89   string name;
90 };
91
92 $remote visualization {
93   $base  7000;
94   $version  9;
95
96   // data: list of new data values from Paradyn 
97   $async void Data(vector<dataValue> data);  
98
99   // a fold event from paradyn
100   $async void Fold(double newBucketWidth);
101
102   //
103   // A metric/focus pair has become invalid (from Paradyn)
104   // m: metricId of invalid metric-focus combination
105   // r: resourceId of invalid metric-focus combination
106   //
107   $async void InvalidMR(int m,int r);
108
109   //
110   // A new set of metrics and resources from Paradyn
111   // newElements: a list of new metric-focus matrices
112   // bucketWidth: current bucket width for histograms
113   // nobuckets:   max number of buckets for histograms
114   $async void AddMetricsResources(vector<visi_matrix> newElements,
115                                   double bucketWidth,
116                                   int nobuckets);
117   //
118   // A new phase has been defined by paradyn
119   //
120   $async void PhaseStart(double begin,  // phase start time
121                     double end,         // -1 means phase has not ended yet
122                     double bucketWidth,  // for histogram data values
123                     string name,        // string name for phase 
124                     int handle);        // unique phase id 
125
126   //
127   // A phase specified by "handle" has ended
128   // currently this is just used to fill in the end value in the phase table
129   //
130   $async void PhaseEnd(double end,
131                        int handle);
132
133
134   //
135   // A list of phase data from paradyn
136   //
137   $async void PhaseData(vector<phase_info> phases);
138
139
140   //
141   // An array of data values from Paradyn starting with bucket #0
142   //
143   $async void BulkDataTransfer(vector<float> values, // array of data values 
144                                int metricId,      // id of met. assoc. w/data
145                                int resourceId);   // id of res. assoc. w/data
146
147   //
148   // A request from the visualization to Paradyn for new data
149   //
150   $upcall $async void GetMetricResource(string mets_res,
151                                         int numElements,
152                                         int type);
153   //
154   // A request to Paradyn to stop data associated with metricId & resourceId
155   //
156   $upcall $async void StopMetricResource(int metricId,
157                                          int resourceId);
158
159   // request a new phase start from paradyn 
160   // begin: phase start time (default of -1 means now)
161   // name:  phase name (default of NULL means let paradyn provide name)
162   $upcall $async void StartPhase(double begin, 
163                                 string name);
164 };