X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=formats%2Fctf%2Fmetadata%2Fctf-visitor-generate-io-struct.c;h=2d3361cbdc5d3d889cbeed4ff7b281e0c8b2473c;hb=bf94ab2bcad1aa584a1ecc763ce390d583b62f0c;hp=4a71a27e04024dae8ecfab95d69cd5854391bc13;hpb=6070d2f1612a27050f14362a910b565b8e70662c;p=babeltrace.git diff --git a/formats/ctf/metadata/ctf-visitor-generate-io-struct.c b/formats/ctf/metadata/ctf-visitor-generate-io-struct.c index 4a71a27e..2d3361cb 100644 --- a/formats/ctf/metadata/ctf-visitor-generate-io-struct.c +++ b/formats/ctf/metadata/ctf-visitor-generate-io-struct.c @@ -2160,7 +2160,7 @@ int ctf_clock_declaration_visit(FILE *fd, int depth, struct ctf_node *node, } clock->name = g_quark_from_string(right); g_free(right); - CTF_EVENT_SET_FIELD(clock, name); + CTF_CLOCK_SET_FIELD(clock, name); } else if (!strcmp(left, "uuid")) { char *right; @@ -2191,7 +2191,7 @@ int ctf_clock_declaration_visit(FILE *fd, int depth, struct ctf_node *node, } clock->description = right; } else if (!strcmp(left, "freq")) { - if (clock->freq) { + if (CTF_CLOCK_FIELD_IS_SET(clock, freq)) { fprintf(fd, "[error] %s: freq already declared in clock declaration\n", __func__); ret = -EPERM; goto error; @@ -2202,6 +2202,7 @@ int ctf_clock_declaration_visit(FILE *fd, int depth, struct ctf_node *node, ret = -EINVAL; goto error; } + CTF_CLOCK_SET_FIELD(clock, freq); } else if (!strcmp(left, "precision")) { if (clock->precision) { fprintf(fd, "[error] %s: precision already declared in clock declaration\n", __func__); @@ -2273,6 +2274,8 @@ int ctf_clock_visit(FILE *fd, int depth, struct ctf_node *node, struct ctf_trace struct ctf_clock *clock; clock = g_new0(struct ctf_clock, 1); + /* Default clock frequency is set to 1000000000 */ + clock->freq = 1000000000ULL; cds_list_for_each_entry(iter, &node->u.clock.declaration_list, siblings) { ret = ctf_clock_declaration_visit(fd, depth + 1, iter, clock, trace); if (ret) @@ -2283,6 +2286,12 @@ int ctf_clock_visit(FILE *fd, int depth, struct ctf_node *node, struct ctf_trace fprintf(fd, "[error] %s: missing namefield in clock declaration\n", __func__); goto error; } + if (g_hash_table_size(trace->clocks) > 0) { + fprintf(stderr, "[error] Only CTF traces with a single clock description are supported by this babeltrace version.\n"); + ret = -EINVAL; + goto error; + } + trace->single_clock = clock; g_hash_table_insert(trace->clocks, (gpointer) (unsigned long) clock->name, clock); return 0;