X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=include%2Fbabeltrace%2Fctf%2Fmetadata.h;h=d833a56d771dad990d5bf566160254f86f7107f8;hp=85ff1cb8145922ec31ef59443907218114de5a02;hb=ff00cad2a14ea6dad073761b3dbb4aaa259723d0;hpb=f66259163f060ada8d0fee348857c968e338ea40 diff --git a/include/babeltrace/ctf/metadata.h b/include/babeltrace/ctf/metadata.h index 85ff1cb8..d833a56d 100644 --- a/include/babeltrace/ctf/metadata.h +++ b/include/babeltrace/ctf/metadata.h @@ -20,6 +20,9 @@ */ #include +#include +#include +#include #include #include #include @@ -28,9 +31,15 @@ struct ctf_trace; struct ctf_stream; struct ctf_event; -#define CTF_TRACE_SET_FIELD(ctf_trace, field, value) \ +struct ctf_stream_file { + /* Information about stream backing file */ + int fd; + char *mmap; /* current stream mmap */ + struct 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) @@ -47,29 +56,30 @@ struct ctf_event; struct ctf_trace { /* root scope */ struct declaration_scope *root_declaration_scope; - /* root scope */ - struct definition_scope *root_definition_scope; struct declaration_scope *declaration_scope; - struct definition_scope *definition_scope; GPtrArray *streams; /* Array of struct ctf_stream pointers*/ + struct ctf_stream_file metadata; uint64_t major; uint64_t minor; uuid_t uuid; - uint64_t word_size; + int byte_order; 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), } 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) @@ -86,20 +96,28 @@ struct ctf_stream { struct ctf_trace *trace; /* parent is lexical scope conaining the stream scope */ struct declaration_scope *declaration_scope; - /* parent is trace scope */ + /* innermost definition scope. to be used as parent of event. */ struct definition_scope *definition_scope; GPtrArray *events_by_id; /* Array of struct ctf_event pointers indexed by id */ GHashTable *event_quark_to_id; /* GQuark to numeric id */ + /* Declarations only used when parsing */ + struct declaration_struct *packet_context_decl; + 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; - struct definition_struct *packet_context; uint64_t stream_id; enum { /* Fields populated mask */ CTF_STREAM_stream_id = (1 << 0), } field_mask; + + struct ctf_stream_file file; /* Backing file */ }; #define CTF_EVENT_SET_FIELD(ctf_event, field) \ @@ -121,8 +139,12 @@ struct ctf_event { struct ctf_stream *stream; /* parent is lexical scope conaining the event scope */ struct declaration_scope *declaration_scope; - /* parent is stream scope */ - struct definition_scope *definition_scope; + + /* Declarations only used when parsing */ + struct declaration_struct *context_decl; + struct declaration_struct *fields_decl; + + /* Definitions used afterward */ struct definition_struct *context; struct definition_struct *fields;