X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Fctf-ir%2Fclock-class.c;h=e3c711c0d854d0453dd268c3c80594f25fe2cf3f;hb=a2b94977951d0167a25086e75c715833667887dd;hp=37635ca9763f309ee9d4fca342f73ad01fd41cfe;hpb=3d9990ac8bcbb870300869ed217b80151b52bf4e;p=babeltrace.git diff --git a/lib/ctf-ir/clock-class.c b/lib/ctf-ir/clock-class.c index 37635ca9..e3c711c0 100644 --- a/lib/ctf-ir/clock-class.c +++ b/lib/ctf-ir/clock-class.c @@ -31,13 +31,17 @@ #include #include #include +#include #include +#define BT_LOG_TAG "CLOCK-CLASS" +#include + static void bt_ctf_clock_class_destroy(struct bt_object *obj); BT_HIDDEN -bool bt_ctf_clock_class_is_valid(struct bt_ctf_clock_class *clock_class) +bt_bool bt_ctf_clock_class_is_valid(struct bt_ctf_clock_class *clock_class) { return clock_class && clock_class->name; } @@ -47,12 +51,23 @@ int bt_ctf_clock_class_set_name(struct bt_ctf_clock_class *clock_class, { int ret = 0; - if (!clock_class || clock_class->frozen) { + if (!clock_class) { + BT_LOGW_STR("Invalid parameter: clock class is NULL."); + ret = -1; + goto end; + } + + if (clock_class->frozen) { + BT_LOGW("Invalid parameter: clock class is frozen: addr=%p", + clock_class); ret = -1; goto end; } if (bt_ctf_validate_identifier(name)) { + BT_LOGE("Clock class's name is not a valid CTF identifier: " + "clock-class-addr=%p, name=\"%s\"", + clock_class, name); ret = -1; goto end; } @@ -62,11 +77,15 @@ int bt_ctf_clock_class_set_name(struct bt_ctf_clock_class *clock_class, } else { clock_class->name = g_string_new(name); if (!clock_class->name) { + BT_LOGE_STR("Failed to allocate a GString."); ret = -1; goto end; } } + BT_LOGV("Set clock class's name: clock-class-addr=%p, name=\"%s\"", + clock_class, name); + end: return ret; } @@ -74,10 +93,13 @@ end: struct bt_ctf_clock_class *bt_ctf_clock_class_create(const char *name) { int ret; - struct bt_ctf_clock_class *clock_class = - g_new0(struct bt_ctf_clock_class, 1); + struct bt_ctf_clock_class *clock_class; + BT_LOGD("Creating default clock class object: name=\"%s\"", + name); + clock_class = g_new0(struct bt_ctf_clock_class, 1); if (!clock_class) { + BT_LOGE_STR("Failed to allocate one clock class."); goto error; } @@ -88,16 +110,21 @@ struct bt_ctf_clock_class *bt_ctf_clock_class_create(const char *name) if (name) { ret = bt_ctf_clock_class_set_name(clock_class, name); if (ret) { + BT_LOGE("Cannot set clock class's name: " + "clock-class-addr=%p, name=\"%s\"", + clock_class, name); goto error; } } ret = bt_uuid_generate(clock_class->uuid); if (ret) { + BT_LOGE_STR("Failed to generate a UUID."); goto error; } clock_class->uuid_set = 1; + BT_LOGD("Created clock class object: addr=%p", clock_class); return clock_class; error: BT_PUT(clock_class); @@ -109,6 +136,7 @@ const char *bt_ctf_clock_class_get_name(struct bt_ctf_clock_class *clock_class) const char *ret = NULL; if (!clock_class) { + BT_LOGW_STR("Invalid parameter: clock class is NULL."); goto end; } @@ -126,6 +154,7 @@ const char *bt_ctf_clock_class_get_description( const char *ret = NULL; if (!clock_class) { + BT_LOGW_STR("Invalid parameter: clock class is NULL."); goto end; } @@ -141,13 +170,25 @@ int bt_ctf_clock_class_set_description(struct bt_ctf_clock_class *clock_class, { int ret = 0; - if (!clock_class || !desc || clock_class->frozen) { + if (!clock_class || !desc) { + BT_LOGW("Invalid parameter: clock class or description is NULL: " + "clock-class-addr=%p, desc-addr=%p", + clock_class, desc); + ret = -1; + goto end; + } + + if (clock_class->frozen) { + BT_LOGW("Invalid parameter: clock class is frozen: addr=%p", + clock_class); ret = -1; goto end; } clock_class->description = g_string_new(desc); ret = clock_class->description ? 0 : -1; + BT_LOGV("Set clock class's description: clock-class-addr=%p, desc=\"%s\"", + clock_class, desc); end: return ret; } @@ -158,6 +199,7 @@ uint64_t bt_ctf_clock_class_get_frequency( uint64_t ret = -1ULL; if (!clock_class) { + BT_LOGW_STR("Invalid parameter: clock class is NULL."); goto end; } @@ -171,12 +213,24 @@ int bt_ctf_clock_class_set_frequency(struct bt_ctf_clock_class *clock_class, { int ret = 0; - if (!clock_class || clock_class->frozen) { + if (!clock_class || freq == -1ULL) { + BT_LOGW("Invalid parameter: clock class is NULL or frequency is invalid: " + "clock-class-addr=%p, freq=%" PRIu64, + clock_class, freq); + ret = -1; + goto end; + } + + if (clock_class->frozen) { + BT_LOGW("Invalid parameter: clock class is frozen: addr=%p", + clock_class); ret = -1; goto end; } clock_class->frequency = freq; + BT_LOGV("Set clock class's frequency: clock-class-addr=%p, freq=%" PRIu64, + clock_class, freq); end: return ret; } @@ -186,6 +240,7 @@ uint64_t bt_ctf_clock_class_get_precision(struct bt_ctf_clock_class *clock_class uint64_t ret = -1ULL; if (!clock_class) { + BT_LOGW_STR("Invalid parameter: clock class is NULL."); goto end; } @@ -199,12 +254,24 @@ int bt_ctf_clock_class_set_precision(struct bt_ctf_clock_class *clock_class, { int ret = 0; - if (!clock_class || clock_class->frozen) { + if (!clock_class || precision == -1ULL) { + BT_LOGW("Invalid parameter: clock class is NULL or precision is invalid: " + "clock-class-addr=%p, precision=%" PRIu64, + clock_class, precision); + ret = -1; + goto end; + } + + if (clock_class->frozen) { + BT_LOGW("Invalid parameter: clock class is frozen: addr=%p", + clock_class); ret = -1; goto end; } clock_class->precision = precision; + BT_LOGV("Set clock class's precision: clock-class-addr=%p, precision=%" PRIu64, + clock_class, precision); end: return ret; } @@ -215,6 +282,9 @@ int bt_ctf_clock_class_get_offset_s(struct bt_ctf_clock_class *clock_class, int ret = 0; if (!clock_class || !offset_s) { + BT_LOGW("Invalid parameter: clock class or offset pointer is NULL: " + "clock-class-addr=%p, offset-addr=%p", + clock_class, offset_s); ret = -1; goto end; } @@ -229,12 +299,22 @@ int bt_ctf_clock_class_set_offset_s(struct bt_ctf_clock_class *clock_class, { int ret = 0; - if (!clock_class || clock_class->frozen) { + if (!clock_class) { + BT_LOGW_STR("Invalid parameter: clock class is NULL."); + ret = -1; + goto end; + } + + if (clock_class->frozen) { + BT_LOGW("Invalid parameter: clock class is frozen: addr=%p", + clock_class); ret = -1; goto end; } clock_class->offset_s = offset_s; + BT_LOGV("Set clock class's offset (seconds): clock-class-addr=%p, offset-s=%" PRId64, + clock_class, offset_s); end: return ret; } @@ -245,6 +325,9 @@ int bt_ctf_clock_class_get_offset_cycles(struct bt_ctf_clock_class *clock_class, int ret = 0; if (!clock_class || !offset) { + BT_LOGW("Invalid parameter: clock class or offset pointer is NULL: " + "clock-class-addr=%p, offset-addr=%p", + clock_class, offset); ret = -1; goto end; } @@ -259,21 +342,32 @@ int bt_ctf_clock_class_set_offset_cycles(struct bt_ctf_clock_class *clock_class, { int ret = 0; - if (!clock_class || clock_class->frozen) { + if (!clock_class) { + BT_LOGW_STR("Invalid parameter: clock class is NULL."); + ret = -1; + goto end; + } + + if (clock_class->frozen) { + BT_LOGW("Invalid parameter: clock class is frozen: addr=%p", + clock_class); ret = -1; goto end; } clock_class->offset = offset; + BT_LOGV("Set clock class's offset (cycles): clock-class-addr=%p, offset-cycles=%" PRId64, + clock_class, offset); end: return ret; } -int bt_ctf_clock_class_get_is_absolute(struct bt_ctf_clock_class *clock_class) +bt_bool bt_ctf_clock_class_is_absolute(struct bt_ctf_clock_class *clock_class) { int ret = -1; if (!clock_class) { + BT_LOGW_STR("Invalid parameter: clock class is NULL."); goto end; } @@ -283,16 +377,26 @@ end: } int bt_ctf_clock_class_set_is_absolute(struct bt_ctf_clock_class *clock_class, - int is_absolute) + bt_bool is_absolute) { int ret = 0; - if (!clock_class || clock_class->frozen) { + if (!clock_class) { + BT_LOGW_STR("Invalid parameter: clock class is NULL."); + ret = -1; + goto end; + } + + if (clock_class->frozen) { + BT_LOGW("Invalid parameter: clock class is frozen: addr=%p", + clock_class); ret = -1; goto end; } clock_class->absolute = !!is_absolute; + BT_LOGV("Set clock class's absolute flag: clock-class-addr=%p, is-absolute=%d", + clock_class, !!is_absolute); end: return ret; } @@ -302,7 +406,15 @@ const unsigned char *bt_ctf_clock_class_get_uuid( { const unsigned char *ret; - if (!clock_class || !clock_class->uuid_set) { + if (!clock_class) { + BT_LOGW_STR("Invalid parameter: clock class is NULL."); + ret = NULL; + goto end; + } + + if (!clock_class->uuid_set) { + BT_LOGV("Clock class's UUID is not set: clock-class-addr=%p", + clock_class); ret = NULL; goto end; } @@ -317,13 +429,42 @@ int bt_ctf_clock_class_set_uuid(struct bt_ctf_clock_class *clock_class, { int ret = 0; - if (!clock_class || !uuid || clock_class->frozen) { + if (!clock_class || !uuid) { + BT_LOGW("Invalid parameter: clock class or UUID is NULL: " + "clock-class-addr=%p, uuid-addr=%p", + clock_class, uuid); + ret = -1; + goto end; + } + + if (clock_class->frozen) { + BT_LOGW("Invalid parameter: clock class is frozen: addr=%p", + clock_class); ret = -1; goto end; } memcpy(clock_class->uuid, uuid, sizeof(uuid_t)); clock_class->uuid_set = 1; + BT_LOGV("Set clock class's UUID: clock-class-addr=%p, " + "uuid=\"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\"", + clock_class, + (unsigned int) uuid[0], + (unsigned int) uuid[1], + (unsigned int) uuid[2], + (unsigned int) uuid[3], + (unsigned int) uuid[4], + (unsigned int) uuid[5], + (unsigned int) uuid[6], + (unsigned int) uuid[7], + (unsigned int) uuid[8], + (unsigned int) uuid[9], + (unsigned int) uuid[10], + (unsigned int) uuid[11], + (unsigned int) uuid[12], + (unsigned int) uuid[13], + (unsigned int) uuid[14], + (unsigned int) uuid[15]); end: return ret; } @@ -345,10 +486,14 @@ BT_HIDDEN void bt_ctf_clock_class_freeze(struct bt_ctf_clock_class *clock_class) { if (!clock_class) { + BT_LOGW_STR("Invalid parameter: clock class is NULL."); return; } - clock_class->frozen = 1; + if (!clock_class->frozen) { + BT_LOGD("Freezing clock class: addr=%p", clock_class); + clock_class->frozen = 1; + } } BT_HIDDEN @@ -357,7 +502,13 @@ void bt_ctf_clock_class_serialize(struct bt_ctf_clock_class *clock_class, { unsigned char *uuid; + BT_LOGD("Serializing clock class's metadata: clock-class-addr=%p, " + "metadata-context-addr=%p", clock_class, context); + if (!clock_class || !context) { + BT_LOGW("Invalid parameter: clock class or metadata context is NULL: " + "clock-class-addr=%p, metadata-context-addr=%p", + clock_class, context); return; } @@ -394,6 +545,7 @@ void bt_ctf_clock_class_destroy(struct bt_object *obj) { struct bt_ctf_clock_class *clock_class; + BT_LOGD("Destroying clock class: addr=%p", obj); clock_class = container_of(obj, struct bt_ctf_clock_class, base); if (clock_class->name) { g_string_free(clock_class->name, TRUE); @@ -410,6 +562,8 @@ void bt_ctf_clock_value_destroy(struct bt_object *obj) { struct bt_ctf_clock_value *value; + BT_LOGD("Destroying clock value: addr=%p", obj); + if (!obj) { return; } @@ -424,18 +578,24 @@ struct bt_ctf_clock_value *bt_ctf_clock_value_create( { struct bt_ctf_clock_value *ret = NULL; + BT_LOGD("Creating clock value object: clock-class-addr=%p, " + "value=%" PRIu64, clock_class, value); + if (!clock_class) { + BT_LOGW_STR("Invalid parameter: clock class is NULL."); goto end; } ret = g_new0(struct bt_ctf_clock_value, 1); if (!ret) { + BT_LOGE_STR("Failed to allocate one clock value."); goto end; } bt_object_init(ret, bt_ctf_clock_value_destroy); ret->clock_class = bt_get(clock_class); ret->value = value; + BT_LOGD("Created clock value object: addr=%p", ret); end: return ret; } @@ -446,6 +606,9 @@ int bt_ctf_clock_value_get_value( int ret = 0; if (!clock_value || !raw_value) { + BT_LOGW("Invalid parameter: clock value or raw value is NULL: " + "clock-value-addr=%p, raw-value-addr=%p", + clock_value, raw_value); ret = -1; goto end; } @@ -462,12 +625,15 @@ int bt_ctf_clock_value_get_value_ns_from_epoch(struct bt_ctf_clock_value *value, int64_t ns; if (!value || !ret_value_ns) { + BT_LOGW("Invalid parameter: clock value or return value pointer is NULL: " + "clock-value-addr=%p, ret-value-addr=%p", + value, ret_value_ns); ret = -1; goto end; } /* Initialize nanosecond timestamp to clock's offset in seconds. */ - ns = value->clock_class->offset_s * 1000000000; + ns = value->clock_class->offset_s * (int64_t) 1000000000; /* Add offset in cycles, converted to nanoseconds. */ ns += ns_from_value(value->clock_class->frequency, @@ -487,6 +653,7 @@ struct bt_ctf_clock_class *bt_ctf_clock_value_get_class( struct bt_ctf_clock_class *clock_class = NULL; if (!clock_value) { + BT_LOGW_STR("Invalid parameter: clock value is NULL."); goto end; }