Move definitions to per-file structure
[babeltrace.git] / include / babeltrace / ctf / metadata.h
index de1a70d101b921975a5f10fb23b183ff9e558adb..56b0aa22e6f913466de2422a6e65ba45db35caef 100644 (file)
 #include <glib.h>
 
 #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 definition_struct *trace_packet_header;
+       struct definition_struct *stream_packet_context;
+       struct definition_struct *stream_event_header;
+       struct definition_struct *stream_event_context;
+       GPtrArray *events_by_id;                /* Array of struct ctf_file_event pointers indexed by id */
+       struct definition_scope *parent_def_scope;      /* for initialization */
+       int stream_definitions_created;
+};
+
+struct ctf_file_event {
+       struct definition_struct *event_context;
+       struct definition_struct *event_fields;
+};
+
 struct ctf_file_stream {
        uint64_t stream_id;
-       struct ctf_stream_class *stream;
+       struct ctf_stream stream;
        struct ctf_stream_pos pos;      /* current stream position */
 };
 
@@ -69,9 +89,6 @@ struct ctf_trace {
        /* 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;
@@ -89,6 +106,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)                                \
@@ -119,11 +139,6 @@ struct ctf_stream_class {
        struct declaration_struct *event_header_decl;
        struct declaration_struct *event_context_decl;
 
-       /* Definitions used afterward */
-       struct definition_struct *packet_context;
-       struct definition_struct *event_header;
-       struct definition_struct *event_context;
-
        uint64_t stream_id;
 
        enum {                                  /* Fields populated mask */
@@ -157,10 +172,6 @@ struct ctf_event {
        struct declaration_struct *context_decl;
        struct declaration_struct *fields_decl;
 
-       /* Definitions used afterward */
-       struct definition_struct *context;
-       struct definition_struct *fields;
-
        GQuark name;
        uint64_t id;            /* Numeric identifier within the stream */
        uint64_t stream_id;
@@ -172,4 +183,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 */
This page took 0.024857 seconds and 4 git commands to generate.