Fix for paradynd
[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.6  1994/01/27 20:33:39  hollings
6  * Fix for paradynd
7  *
8  * Revision 1.5  1994/01/26  04:54:26  hollings
9  * Change to <module>/h/<interface>.h
10  *
11  * Revision 1.4  1994/01/25  20:52:36  hollings
12  * changed Boolean to keep xdr happy.
13  *
14  * Revision 1.3  1993/12/13  20:10:53  hollings
15  * added ALIGN_TO_WORDSIZE macro
16  *
17  * Revision 1.2  1993/08/26  18:22:03  hollings
18  * added EXIT and ACK.
19  *
20  * Revision 1.1  1993/07/01  17:03:52  hollings
21  * Initial revision
22  *
23  *
24  */
25
26 #ifndef _TRACE_H
27 #define _TRACE_H
28
29 #include "rtinst/h/rtinst.h"
30
31 #ifndef False
32 #define False 0
33 #define True 1
34 #endif
35
36 #ifndef WORDSIZE
37 #define WORDSIZE sizeof(int)
38 #endif
39
40 #define ALIGN_TO_WORDSIZE(x)    (((x) + (WORDSIZE-1)) & ~(WORDSIZE-1))
41
42 typedef int Boolean;
43
44 typedef float sampleValue;
45
46 #define CONTROLLER_FD       3
47 /* 
48  * configuration notification stream id.
49  *
50  */
51 #define CONFIG_NOTIFY_STREAM    1
52
53 /* header that is at the front of every trace record. */
54 struct _traceHeader {
55     time64      wall;           /* wall time of the event */
56     time64      process;        /* process time of the event */
57     short       type;           /* event type */
58     short       length;         /* length of event specifc data */
59 };
60 typedef struct _traceHeader traceHeader;
61
62 /* 
63  * now define each of the event specific data types.
64  *
65  */
66
67 /*
68  * when a new process/thread is created.
69  *
70  */
71 #define TR_FORK                 1
72 #define TR_SAMPLE               2
73 #define TR_NEW_RESOURCE         3
74 #define TR_NEW_ASSOCIATION      4
75 #define TR_MULTI_FORK           5
76 #define TR_EXIT                 6
77 #define TR_PTRACE_ACK           7
78 #define TR_HANDLER_READY        8
79
80 struct _traceSample {
81     sampleId    id;             /* id of the sample */
82     sampleValue value;          /* sample value */
83 };
84
85 typedef struct _traceSample traceSample;
86
87 struct _traceFork {
88     int ppid;   /* id of creating thread */
89     int pid;    /* id of new thread */
90     int npids;  /* number of new threads */
91     int stride; /* offset to next pid in multi */
92 };
93
94
95 /* a map from one name space to another.  
96  *   For example 
97  *        association = "fd-fileName";
98  *        key = "3";
99  *        value = "/tmp/bigFile";
100  *
101  * defines the maping from file descriptior 3 to its file (/tmp/bigFile).
102  *
103  * This is used to generalize the association of values with resources.
104  *
105  */
106 struct associationEntry {
107     char        association[64];
108     char        key[64];
109     char        value[64];
110 };
111
112 struct _newresource {
113     char        name[255];              /* full path name of resource */
114     char        maping[64];
115 };
116
117 typedef struct _traceFork traceFork;
118
119 struct _ptraceAck {
120     int seqNumber;              /* sequence number of ptrace request */
121     int bytes_read;             /* bytes which made up the ptrace request. */
122                                 /* We can extend the window by this much. */
123 };
124
125 typedef struct _ptraceAck ptraceAck;
126
127 #endif