Initial revision
[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.1  1993/07/01 17:03:52  hollings
6  * Initial revision
7  *
8  *
9  */
10
11 #ifndef _TRACE_H
12 #define _TRACE_H
13
14 #include "interface.h"
15 #include "rtinst.h"
16
17 #define CONTROLLER_FD       3
18 /* 
19  * configuration notification stream id.
20  *
21  */
22 #define CONFIG_NOTIFY_STREAM    1
23
24 /* header that is at the front of every trace record. */
25 struct _traceHeader {
26     time64      wall;           /* wall time of the event */
27     time64      process;        /* process time of the event */
28     short       type;           /* event type */
29     short       length;         /* length of event specifc data */
30 };
31 typedef struct _traceHeader traceHeader;
32
33 /* 
34  * now define each of the event specific data types.
35  *
36  */
37
38 /*
39  * when a new process/thread is created.
40  *
41  */
42 #define TR_FORK                 1
43 #define TR_SAMPLE               2
44 #define TR_NEW_RESOURCE         3
45 #define TR_NEW_ASSOCIATION      4
46 #define TR_MULTI_FORK           5
47
48 struct _traceSample {
49     sampleId    id;             /* id of the sample */
50     sampleValue value;          /* sample value */
51 };
52
53 typedef struct _traceSample traceSample;
54
55 struct _traceFork {
56     int ppid;   /* id of creating thread */
57     int pid;    /* id of new thread */
58     int npids;  /* number of new threads */
59     int stride; /* offset to next pid in multi */
60 };
61
62
63 /* a map from one name space to another.  
64  *   For example 
65  *        association = "fd-fileName";
66  *        key = "3";
67  *        value = "/tmp/bigFile";
68  *
69  * defines the maping from file descriptior 3 to its file (/tmp/bigFile).
70  *
71  * This is used to generalize the association of values with resources.
72  *
73  */
74 struct associationEntry {
75     char        association[64];
76     char        key[64];
77     char        value[64];
78 };
79
80 struct _newresource {
81     char        name[255];              /* full path name of resource */
82     char        maping[64];
83 };
84
85 typedef struct _traceFork traceFork;
86 #endif