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