From 5134570b80f36117ded5e5af48bfe9db805c6f25 Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Thu, 11 May 2017 02:07:43 -0400 Subject: [PATCH] lib/ctf-ir/clock-class.c: add logging MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Proulx Signed-off-by: Jérémie Galarneau --- lib/ctf-ir/clock-class.c | 190 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 178 insertions(+), 12 deletions(-) diff --git a/lib/ctf-ir/clock-class.c b/lib/ctf-ir/clock-class.c index 96fd2c33..eca2c264 100644 --- a/lib/ctf-ir/clock-class.c +++ b/lib/ctf-ir/clock-class.c @@ -33,6 +33,9 @@ #include #include +#define BT_LOG_TAG "CLOCK-CLASS" +#include + static void bt_ctf_clock_class_destroy(struct bt_object *obj); @@ -47,12 +50,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 +76,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 +92,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 +109,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 +135,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 +153,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 +169,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 +198,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 +212,24 @@ int bt_ctf_clock_class_set_frequency(struct bt_ctf_clock_class *clock_class, { int ret = 0; - if (!clock_class || clock_class->frozen || freq == -1ULL) { + 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 +239,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 +253,24 @@ int bt_ctf_clock_class_set_precision(struct bt_ctf_clock_class *clock_class, { int ret = 0; - if (!clock_class || clock_class->frozen || precision == -1ULL) { + 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 +281,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 +298,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 +324,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,12 +341,22 @@ 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; } @@ -274,6 +366,7 @@ int 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; } @@ -287,12 +380,22 @@ int bt_ctf_clock_class_set_is_absolute(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->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 +405,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 +428,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 +485,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 +501,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 +544,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 +561,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 +577,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 +605,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,6 +624,9 @@ 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; } @@ -487,6 +652,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; } -- 2.34.1