X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=include%2Fbabeltrace%2Fctf%2Fmetadata.h;h=903d018dd9cb7c6811fcb9ce42712a29864c88f3;hp=d98a26306cc9da3629a8aa90a039073ec5e91b96;hb=764af3f43c289a0a5cd8bf6fd85d9361ae17a253;hpb=41253107837c6698a01af3133d11762302d8f9e5 diff --git a/include/babeltrace/ctf/metadata.h b/include/babeltrace/ctf/metadata.h index d98a2630..903d018d 100644 --- a/include/babeltrace/ctf/metadata.h +++ b/include/babeltrace/ctf/metadata.h @@ -20,17 +20,34 @@ */ #include +#include +#include +#include +#include #include #include #include +#define CTF_MAGIC 0xC1FC1FC1 + struct ctf_trace; +struct ctf_stream_class; struct ctf_stream; struct ctf_event; -#define CTF_TRACE_SET_FIELD(ctf_trace, field, value) \ +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 */ +}; + +#define CTF_TRACE_SET_FIELD(ctf_trace, field) \ do { \ - (ctf_trace)->(field) = (value); \ (ctf_trace)->field_mask |= CTF_TRACE_ ## field; \ } while (0) @@ -45,28 +62,43 @@ struct ctf_event; struct ctf_trace { + struct trace_descriptor parent; /* root scope */ struct declaration_scope *root_declaration_scope; struct declaration_scope *declaration_scope; - GPtrArray *streams; /* Array of struct ctf_stream pointers*/ + /* innermost definition scope. to be used as parent of stream. */ + struct definition_scope *definition_scope; + GPtrArray *streams; /* Array of struct ctf_stream_class pointers */ + struct ctf_file_stream metadata; + + /* Declarations only used when parsing */ + struct declaration_struct *packet_header_decl; + + /* Definitions used afterward */ + struct definition_struct *packet_header; uint64_t major; uint64_t minor; uuid_t uuid; - uint64_t word_size; + int byte_order; /* trace BYTE_ORDER. 0 if unset. */ enum { /* Fields populated mask */ - CTF_TRACE_major = (1U << 0), - CTF_TRACE_minor = (1U << 1), - CTF_TRACE_uuid = (1U << 2), - CTF_TRACE_word_size = (1U << 3), + CTF_TRACE_major = (1U << 0), + CTF_TRACE_minor = (1U << 1), + CTF_TRACE_uuid = (1U << 2), + CTF_TRACE_byte_order = (1U << 3), + CTF_TRACE_packet_header = (1U << 4), } field_mask; + + /* Information about trace backing directory and files */ + DIR *dir; + int dirfd; + int flags; /* open flags */ }; -#define CTF_STREAM_SET_FIELD(ctf_stream, field, value) \ +#define CTF_STREAM_SET_FIELD(ctf_stream, field) \ do { \ - (ctf_stream)->(field) = (value); \ (ctf_stream)->field_mask |= CTF_STREAM_ ## field; \ } while (0) @@ -79,7 +111,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; @@ -103,6 +135,8 @@ struct ctf_stream { enum { /* Fields populated mask */ CTF_STREAM_stream_id = (1 << 0), } field_mask; + + GPtrArray *files; /* Array of struct ctf_file_stream pointers */ }; #define CTF_EVENT_SET_FIELD(ctf_event, field) \ @@ -121,7 +155,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;