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=56aad2c9218832fb3878faa2c5d04ee332736f25;hb=e003ab503def7b0db6c130cccbc03685adb32bbb;hpb=127631b1d137db94f6bb5c51e38ea06321b5611d diff --git a/formats/ctf/metadata/ctf-visitor-generate-io-struct.c b/formats/ctf/metadata/ctf-visitor-generate-io-struct.c index 56aad2c9..9ded7162 100644 --- a/formats/ctf/metadata/ctf-visitor-generate-io-struct.c +++ b/formats/ctf/metadata/ctf-visitor-generate-io-struct.c @@ -23,13 +23,14 @@ #include #include #include -#include #include #include #include #include #include -#include +#include +#include +#include #include "ctf-scanner.h" #include "ctf-parser.h" #include "ctf-ast.h" @@ -220,7 +221,7 @@ int get_unary_signed(struct bt_list_head *head, int64_t *value) } static -int get_unary_uuid(struct bt_list_head *head, uuid_t *uuid) +int get_unary_uuid(struct bt_list_head *head, unsigned char *uuid) { struct ctf_node *node; int i = 0; @@ -234,13 +235,13 @@ int get_unary_uuid(struct bt_list_head *head, uuid_t *uuid) assert(node->u.unary_expression.link == UNARY_LINK_UNKNOWN); assert(i == 0); src_string = node->u.unary_expression.u.string; - ret = uuid_parse(src_string, *uuid); + ret = babeltrace_uuid_parse(src_string, uuid); } return ret; } 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); @@ -2035,16 +2039,16 @@ int ctf_trace_declaration_visit(FILE *fd, int depth, struct ctf_node *node, stru } CTF_TRACE_SET_FIELD(trace, minor); } else if (!strcmp(left, "uuid")) { - uuid_t uuid; + unsigned char uuid[BABELTRACE_UUID_LEN]; - ret = get_unary_uuid(&node->u.ctf_expression.right, &uuid); + ret = get_unary_uuid(&node->u.ctf_expression.right, uuid); if (ret) { fprintf(fd, "[error] %s: unexpected unary expression for trace uuid\n", __func__); ret = -EINVAL; goto error; } if (CTF_TRACE_FIELD_IS_SET(trace, uuid) - && uuid_compare(uuid, trace->uuid)) { + && babeltrace_uuid_compare(uuid, trace->uuid)) { fprintf(fd, "[error] %s: uuid mismatch\n", __func__); ret = -EPERM; goto error; @@ -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;