X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=formats%2Fctf%2Fmetadata%2Fctf-visitor-generate-io-struct.c;h=4f604d1cee2a8e610a84e7ae7e6fc767c15c3dac;hp=1fc69125ce8ef180c70fc0f95b48042c7959ea2c;hb=82ace6d6d97ecb15d093232c76c5d4a3c31e6948;hpb=02dc4610b1dccefaf545ba77378857ee6188ea33 diff --git a/formats/ctf/metadata/ctf-visitor-generate-io-struct.c b/formats/ctf/metadata/ctf-visitor-generate-io-struct.c index 1fc69125..4f604d1c 100644 --- a/formats/ctf/metadata/ctf-visitor-generate-io-struct.c +++ b/formats/ctf/metadata/ctf-visitor-generate-io-struct.c @@ -39,6 +39,8 @@ #define _cds_list_first_entry(ptr, type, member) \ cds_list_entry((ptr)->next, type, member) +int opt_clock_force_correlate; + static struct declaration *ctf_type_specifier_list_visit(FILE *fd, int depth, struct ctf_node *type_specifier_list, @@ -2281,13 +2283,24 @@ int ctf_clock_visit(FILE *fd, int depth, struct ctf_node *node, struct ctf_trace if (ret) goto error; } + if (opt_clock_force_correlate) { + /* + * User requested to forcibly correlate the clock + * sources, even if we have no correlatation + * information. + */ + if (!clock->absolute) { + fprintf(fd, "[warning] Forcibly correlating trace clock sources (--clock-force-correlate).\n"); + } + clock->absolute = 1; + } if (!CTF_CLOCK_FIELD_IS_SET(clock, name)) { ret = -EPERM; 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"); + fprintf(fd, "[error] Only CTF traces with a single clock description are supported by this babeltrace version.\n"); ret = -EINVAL; goto error; } @@ -2312,7 +2325,19 @@ void ctf_clock_default(FILE *fd, int depth, struct ctf_trace *trace) clock->description = g_strdup("Default clock"); /* Default clock frequency is set to 1000000000 */ clock->freq = 1000000000ULL; - clock->absolute = 0; /* Not an absolute reference across traces */ + if (opt_clock_force_correlate) { + /* + * User requested to forcibly correlate the clock + * sources, even if we have no correlatation + * information. + */ + if (!clock->absolute) { + fprintf(fd, "[warning] Forcibly correlating trace clock sources (--clock-force-correlate).\n"); + } + clock->absolute = 1; + } else { + clock->absolute = 0; /* Not an absolute reference across traces */ + } trace->single_clock = clock; g_hash_table_insert(trace->clocks, (gpointer) (unsigned long) clock->name, clock);