From: Jérémie Galarneau Date: Mon, 20 Oct 2014 16:11:58 +0000 (-0400) Subject: Don't automatically generate a clock UUID in _bt_ctf_clock_create X-Git-Tag: v2.0.0-pre1~1472 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=be018f151e598d1916b8bbe265e3dff7e47220ca Don't automatically generate a clock UUID in _bt_ctf_clock_create While the public clock constructor still generates a UUID, it should not be done when creating a clock during TSDL metadata parsing. This makes it possible to use bt_ctf_clock_get_uuid to check if a UUID has already been set during clock definition parsing. Signed-off-by: Jérémie Galarneau --- diff --git a/formats/ctf/ir/clock.c b/formats/ctf/ir/clock.c index f0213868..195f8371 100644 --- a/formats/ctf/ir/clock.c +++ b/formats/ctf/ir/clock.c @@ -26,7 +26,6 @@ * SOFTWARE. */ -#include #include #include #include @@ -47,7 +46,6 @@ struct bt_ctf_clock *_bt_ctf_clock_create(void) clock->precision = 1; clock->frequency = 1000000000; - uuid_generate(clock->uuid); bt_ctf_ref_init(&clock->ref_count); end: return clock; @@ -92,6 +90,12 @@ struct bt_ctf_clock *bt_ctf_clock_create(const char *name) goto error_destroy; } + ret = babeltrace_uuid_generate(clock->uuid); + if (ret) { + goto error_destroy; + } + + clock->uuid_set = 1; return clock; error_destroy: bt_ctf_clock_destroy(&clock->ref_count); @@ -284,7 +288,7 @@ const unsigned char *bt_ctf_clock_get_uuid(struct bt_ctf_clock *clock) { const unsigned char *ret; - if (!clock) { + if (!clock || !clock->uuid_set) { ret = NULL; goto end; } @@ -298,12 +302,13 @@ int bt_ctf_clock_set_uuid(struct bt_ctf_clock *clock, const unsigned char *uuid) { int ret = 0; - if (!clock || !uuid) { + if (!clock || !uuid || clock->frozen) { ret = -1; goto end; } memcpy(clock->uuid, uuid, sizeof(uuid_t)); + clock->uuid_set = 1; end: return ret; } diff --git a/include/babeltrace/ctf-ir/clock-internal.h b/include/babeltrace/ctf-ir/clock-internal.h index 9e800ac5..f876cd30 100644 --- a/include/babeltrace/ctf-ir/clock-internal.h +++ b/include/babeltrace/ctf-ir/clock-internal.h @@ -32,7 +32,7 @@ #include #include #include -#include +#include struct bt_ctf_clock { struct bt_ctf_ref ref_count; @@ -44,6 +44,7 @@ struct bt_ctf_clock { uint64_t offset; /* Offset in ticks */ uint64_t time; /* Current clock value */ uuid_t uuid; + int uuid_set; int absolute; /* * A clock's properties can't be modified once it is added to a stream