X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=include%2Fbabeltrace%2Fctf%2Fmetadata.h;h=453c9f7085276de0b4ba5eb6798b475f5d6d7363;hp=5e7fd30e11dc4f66373fcdf2cf1a2b9f2fed688f;hb=0d0f514904a3ebb85775abceed30da0675f55cc6;hpb=46322b331aefc5739efd841df72d1928e35050e6 diff --git a/include/babeltrace/ctf/metadata.h b/include/babeltrace/ctf/metadata.h index 5e7fd30e..453c9f70 100644 --- a/include/babeltrace/ctf/metadata.h +++ b/include/babeltrace/ctf/metadata.h @@ -29,15 +29,22 @@ #include #define CTF_MAGIC 0xC1FC1FC1 +#define TSDL_MAGIC 0x75D11D57 struct ctf_trace; +struct ctf_stream_class; struct ctf_stream; struct ctf_event; +struct ctf_stream { + struct ctf_stream_class *stream_class; + uint64_t timestamp; /* Current timestamp, in ns */ +}; + struct ctf_file_stream { uint64_t stream_id; - struct ctf_stream *stream; - struct ctf_stream_pos pos; /* current stream position */ + struct ctf_stream stream; + struct ctf_stream_pos pos; /* current stream position */ }; #define CTF_TRACE_SET_FIELD(ctf_trace, field) \ @@ -63,7 +70,7 @@ struct ctf_trace { struct declaration_scope *declaration_scope; /* innermost definition scope. to be used as parent of stream. */ struct definition_scope *definition_scope; - GPtrArray *streams; /* Array of struct ctf_stream pointers */ + GPtrArray *streams; /* Array of struct ctf_stream_class pointers */ struct ctf_file_stream metadata; /* Declarations only used when parsing */ @@ -89,6 +96,9 @@ struct ctf_trace { DIR *dir; int dirfd; int flags; /* open flags */ + + /* Heap of streams, ordered to always get the lowest timestam */ + struct ptr_heap *stream_heap; }; #define CTF_STREAM_SET_FIELD(ctf_stream, field) \ @@ -105,7 +115,7 @@ struct ctf_trace { (ctf_stream)->(field); \ }) -struct ctf_stream { +struct ctf_stream_class { struct ctf_trace *trace; /* parent is lexical scope conaining the stream scope */ struct declaration_scope *declaration_scope; @@ -149,7 +159,7 @@ struct ctf_stream { struct ctf_event { /* stream mapped by stream_id */ - struct ctf_stream *stream; + struct ctf_stream_class *stream; /* parent is lexical scope conaining the event scope */ struct declaration_scope *declaration_scope; @@ -172,4 +182,19 @@ struct ctf_event { } field_mask; }; +#define HEADER_END char end_field +#define header_sizeof(type) offsetof(typeof(type), end_field) + +struct metadata_packet_header { + uint32_t magic; /* 0x75D11D57 */ + uint8_t uuid[16]; /* Unique Universal Identifier */ + uint32_t checksum; /* 0 if unused */ + uint32_t content_size; /* in bits */ + uint32_t packet_size; /* in bits */ + uint8_t compression_scheme; /* 0 if unused */ + uint8_t encryption_scheme; /* 0 if unused */ + uint8_t checksum_scheme; /* 0 if unused */ + HEADER_END; +}; + #endif /* _BABELTRACE_CTF_METADATA_H */