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