X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=formats%2Fctf%2Fmetadata%2Fctf-visitor-generate-io-struct.c;h=9ded71627a65af988bc23eb0ddce68c5f0024356;hp=119114c0377a8d153d409ad973a9c75389d34df4;hb=e003ab503def7b0db6c130cccbc03685adb32bbb;hpb=bf81a25e519f86c19ef33a7c2c9c33417f5e74a7 diff --git a/formats/ctf/metadata/ctf-visitor-generate-io-struct.c b/formats/ctf/metadata/ctf-visitor-generate-io-struct.c index 119114c0..9ded7162 100644 --- a/formats/ctf/metadata/ctf-visitor-generate-io-struct.c +++ b/formats/ctf/metadata/ctf-visitor-generate-io-struct.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "ctf-scanner.h" #include "ctf-parser.h" #include "ctf-ast.h" @@ -240,7 +241,7 @@ int get_unary_uuid(struct bt_list_head *head, unsigned char *uuid) } static -struct ctf_stream_class *trace_stream_lookup(struct ctf_trace *trace, uint64_t stream_id) +struct ctf_stream_declaration *trace_stream_lookup(struct ctf_trace *trace, uint64_t stream_id) { if (trace->streams->len <= stream_id) return NULL; @@ -1585,7 +1586,7 @@ struct declaration *ctf_type_specifier_list_visit(FILE *fd, } static -int ctf_event_declaration_visit(FILE *fd, int depth, struct ctf_node *node, struct ctf_event *event, struct ctf_trace *trace) +int ctf_event_declaration_visit(FILE *fd, int depth, struct ctf_node *node, struct ctf_event_declaration *event, struct ctf_trace *trace) { int ret = 0; @@ -1741,9 +1742,11 @@ int ctf_event_visit(FILE *fd, int depth, struct ctf_node *node, { int ret = 0; struct ctf_node *iter; - struct ctf_event *event; + struct ctf_event_declaration *event; + struct bt_ctf_event_decl *event_decl; - event = g_new0(struct ctf_event, 1); + event_decl = g_new0(struct bt_ctf_event_decl, 1); + event = &event_decl->parent; event->declaration_scope = new_declaration_scope(parent_declaration_scope); event->loglevel = -1; bt_list_for_each_entry(iter, &node->u.event.declaration_list, siblings) { @@ -1787,6 +1790,7 @@ int ctf_event_visit(FILE *fd, int depth, struct ctf_node *node, g_hash_table_insert(event->stream->event_quark_to_id, (gpointer) (unsigned long) event->name, &event->id); + g_ptr_array_add(trace->event_declarations, event_decl); return 0; error: @@ -1795,13 +1799,13 @@ error: if (event->context_decl) declaration_unref(&event->context_decl->p); free_declaration_scope(event->declaration_scope); - g_free(event); + g_free(event_decl); return ret; } static -int ctf_stream_declaration_visit(FILE *fd, int depth, struct ctf_node *node, struct ctf_stream_class *stream, struct ctf_trace *trace) +int ctf_stream_declaration_visit(FILE *fd, int depth, struct ctf_node *node, struct ctf_stream_declaration *stream, struct ctf_trace *trace) { int ret = 0; @@ -1927,9 +1931,9 @@ int ctf_stream_visit(FILE *fd, int depth, struct ctf_node *node, { int ret = 0; struct ctf_node *iter; - struct ctf_stream_class *stream; + struct ctf_stream_declaration *stream; - stream = g_new0(struct ctf_stream_class, 1); + stream = g_new0(struct ctf_stream_declaration, 1); stream->declaration_scope = new_declaration_scope(parent_declaration_scope); stream->events_by_id = g_ptr_array_new(); stream->event_quark_to_id = g_hash_table_new(g_direct_hash, g_direct_equal); @@ -2128,6 +2132,7 @@ int ctf_trace_visit(FILE *fd, int depth, struct ctf_node *node, struct ctf_trace return -EEXIST; trace->declaration_scope = new_declaration_scope(trace->root_declaration_scope); trace->streams = g_ptr_array_new(); + trace->event_declarations = g_ptr_array_new(); bt_list_for_each_entry(iter, &node->u.trace.declaration_list, siblings) { ret = ctf_trace_declaration_visit(fd, depth + 1, iter, trace); if (ret) @@ -2143,11 +2148,6 @@ int ctf_trace_visit(FILE *fd, int depth, struct ctf_node *node, struct ctf_trace fprintf(fd, "[error] %s: missing minor field in trace declaration\n", __func__); goto error; } - if (!CTF_TRACE_FIELD_IS_SET(trace, uuid)) { - ret = -EPERM; - fprintf(fd, "[error] %s: missing uuid field in trace declaration\n", __func__); - goto error; - } if (!CTF_TRACE_FIELD_IS_SET(trace, byte_order)) { ret = -EPERM; fprintf(fd, "[error] %s: missing byte_order field in trace declaration\n", __func__); @@ -2171,6 +2171,7 @@ error: trace->packet_header_decl = NULL; } g_ptr_array_free(trace->streams, TRUE); + g_ptr_array_free(trace->event_declarations, TRUE); free_declaration_scope(trace->declaration_scope); trace->declaration_scope = NULL; return ret;