The data tracing facility defines three data structures: dt is the main object associated with a trace (it manages the trace buffers and output file); dthdr keeps track of the numbers and sizes of trace buffers written to the output file; and dtpost manages the postamble list (postamble buffers are written to the trace file after the trace has completed).
typedef struct dt_object_struct {char *buffer;
char *current;
char *last;
char *traceName;
int fileSize;
dthdr fileHdr;
dtpost *post;
int numPost;
dtCloseFunc closeFunc;
void *closeArg;
struct dt_object_struct *next;
} dt;
typedef struct dt_filehdr_struct {
int version;
int bufferSize;
int numberBuffers;
int lastBufferIdx;
int lastBufferSize;
} dthdr;
typedef struct dt_postamble_struct {
char *buffer;
int size;
struct dt_postamble_struct *next;
} dtpost;