Added code to suppress "functions" that have aninvalid instruction
[dyninst.git] / rtinst / h / trace.h
1 /*
2  * Define the trace format that is generated by the system.
3  *
4  * $Log: trace.h,v $
5  * Revision 1.12  1994/07/22 19:24:00  hollings
6  * added reporting of actual pause time for CM-5
7  *
8  * Revision 1.11  1994/07/15  20:23:55  hollings
9  * made all fileds of records be 32 bits not 64 bits.
10  *
11  * Revision 1.10  1994/07/14  23:32:33  hollings
12  * added cost record type and end stats record.
13  *
14  * Revision 1.9  1994/07/11  22:29:10  jcargill
15  * Got rid of old/unused trace-record types, and added a new one for cm5 node
16  * paradynd printing
17  *
18  * Revision 1.8  1994/06/27  21:29:52  rbi
19  * Abstraction-specific resources and mapping info
20  *
21  * Revision 1.7  1994/03/17  14:55:49  jcargill
22  * Changed type of "Boolean" to be a char, to be consistent with X convention
23  * and to stop a type conflict with the definition in util/h/list.h
24  *
25  * Revision 1.6  1994/01/27  20:33:39  hollings
26  * Fix for paradynd
27  *
28  * Revision 1.5  1994/01/26  04:54:26  hollings
29  * Change to <module>/h/<interface>.h
30  *
31  * Revision 1.4  1994/01/25  20:52:36  hollings
32  * changed Boolean to keep xdr happy.
33  *
34  * Revision 1.3  1993/12/13  20:10:53  hollings
35  * added ALIGN_TO_WORDSIZE macro
36  *
37  * Revision 1.2  1993/08/26  18:22:03  hollings
38  * added EXIT and ACK.
39  *
40  * Revision 1.1  1993/07/01  17:03:52  hollings
41  * Initial revision
42  *
43  *
44  */
45
46 #ifndef _TRACE_H
47 #define _TRACE_H
48
49 #include "rtinst/h/rtinst.h"
50
51 #ifndef False
52 #define False 0
53 #define True 1
54 #endif
55
56 /*
57  * Need to make this double word since we send long longs now and then
58  *
59  */
60 #define WORDSIZE sizeof(long)
61
62 #define ALIGN_TO_WORDSIZE(x)    (((x) + (WORDSIZE-1)) & ~(WORDSIZE-1))
63
64 typedef char Boolean;
65
66 typedef float sampleValue;
67
68 #define CONTROLLER_FD       3
69 /* 
70  * configuration notification stream id.
71  *
72  */
73 #define CONFIG_NOTIFY_STREAM    1
74
75 /* header that is at the front of every trace record. */
76 struct _traceHeader {
77     time64      wall;           /* wall time of the event */
78     time64      process;        /* process time of the event */
79     short       type;           /* event type */
80     short       length;         /* length of event specifc data */
81 };
82 typedef struct _traceHeader traceHeader;
83
84 /* 
85  * now define each of the event specific data types.
86  *
87  */
88
89 /*
90  * when a new process/thread is created.
91  *
92  */
93 #define TR_FORK                 1
94 #define TR_SAMPLE               2
95 #define TR_NEW_RESOURCE         3
96 #define TR_NEW_ASSOCIATION      4
97 #define TR_MULTI_FORK           5
98 #define TR_EXIT                 6
99 #define TR_NODE_PRINT           7
100 #define TR_COST_UPDATE          9
101
102 struct _traceSample {
103     sampleId    id;             /* id of the sample */
104     sampleValue value;          /* sample value */
105 };
106
107 typedef struct _traceSample traceSample;
108
109 struct _traceFork {
110     int ppid;   /* id of creating thread */
111     int pid;    /* id of new thread */
112     int npids;  /* number of new threads */
113     int stride; /* offset to next pid in multi */
114 };
115
116
117 /* a map from one name space to another.  
118  *   For example 
119  *        type = "fd-fileName";
120  *        key = "3";
121  *        value = "/tmp/bigFile";
122  *
123  * defines the maping from file descriptior 3 to its file (/tmp/bigFile).
124  *
125  * This is used to generalize the association of values with resources.
126  *
127  */
128 struct _association {
129     char        abstraction[64];
130     char        type[64];
131     char        key[255];
132     char        value[64];
133 };
134
135 struct _newresource {
136     char        name[255];              /* full path name of resource */
137     char        abstraction[64];        /* name of abstraction */
138 };
139
140 typedef struct _traceFork traceFork;
141
142 struct _ptraceAck {
143     int seqNumber;              /* sequence number of ptrace request */
144     int bytes_read;             /* bytes which made up the ptrace request. */
145                                 /* We can extend the window by this much. */
146 };
147
148 typedef struct _ptraceAck ptraceAck;
149
150 struct _costUpdate {
151     int         slotsExecuted;  /* number of base tramps halves called. */
152     float       observedCost;   /* # of cycles of observed cost */
153     float       pauseTime;      /* total pause time this interval */
154 };
155
156 typedef struct _costUpdate costUpdate;
157
158 #endif