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