/*
+ * SPDX-License-Identifier: MIT
+ *
* Copyright 2013, 2014 Jérémie Galarneau <jeremie.galarneau@efficios.com>
* Copyright 2017-2018 Philippe Proulx <pproulx@efficios.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
*/
-#define BT_LOG_TAG "CTF-WRITER-TRACE"
+#define BT_LOG_TAG "CTF-WRITER/TRACE"
#include "logging.h"
#include <inttypes.h>
+#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
-#include <babeltrace2/ctf-writer/event.h>
-#include <babeltrace2/ctf-writer/object.h>
-#include <babeltrace2/ctf-writer/utils.h>
+#include <babeltrace2-ctf-writer/event.h>
+#include <babeltrace2-ctf-writer/object.h>
+#include <babeltrace2-ctf-writer/utils.h>
#include <babeltrace2/types.h>
#include "common/assert.h"
goto end;
}
- BT_LOGV("Set trace's name: addr=%p, name=\"%s\"", trace, name);
+ BT_LOGT("Set trace's name: addr=%p, name=\"%s\"", trace, name);
end:
return ret;
BT_HIDDEN
int bt_ctf_trace_common_set_uuid(struct bt_ctf_trace_common *trace,
- const unsigned char *uuid)
+ const uint8_t *uuid)
{
int ret = 0;
goto end;
}
- memcpy(trace->uuid, uuid, BABELTRACE_UUID_LEN);
- trace->uuid_set = BT_TRUE;
- BT_LOGV("Set trace's UUID: addr=%p, name=\"%s\", "
- "uuid=\"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\"",
+ bt_uuid_copy(trace->uuid, uuid);
+ trace->uuid_set = BT_CTF_TRUE;
+ BT_LOGT("Set trace's UUID: addr=%p, name=\"%s\", "
+ "uuid=\"" BT_UUID_FMT "\"",
trace, bt_ctf_trace_common_get_name(trace),
- (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]);
+ BT_UUID_FMT_VALUES(uuid));
end:
return ret;
"env-name=\"%s\"",
trace, bt_ctf_trace_common_get_name(trace), name);
} else {
- BT_LOGV("Set environment field's value: "
+ BT_LOGT("Set environment field's value: "
"trace-addr=%p, trace-name=\"%s\", "
"env-name=\"%s\", value-addr=%p",
trace, bt_ctf_trace_common_get_name(trace), name, value);
g_ptr_array_add(trace->clock_classes, clock_class);
if (trace->frozen) {
- BT_LOGV_STR("Freezing added clock class because trace is frozen.");
+ BT_LOGT_STR("Freezing added clock class because trace is frozen.");
bt_ctf_clock_class_freeze(clock_class);
}
- BT_LOGV("Added clock class to trace: "
+ BT_LOGT("Added clock class to trace: "
"trace-addr=%p, trace-name=\"%s\", "
"clock-class-addr=%p, clock-class-name=\"%s\"",
trace, bt_ctf_trace_common_get_name(trace),
ret = bt_ctf_field_type_common_structure_borrow_field_by_index(
packet_header_type, &field_name, NULL, 0);
- BT_ASSERT(ret == 0);
+ BT_ASSERT_DBG(ret == 0);
if (strcmp(field_name, "magic") != 0) {
BT_LOGW("Invalid packet header field type: `magic` field must be the first field: "
}
elem_ft = bt_ctf_field_type_common_array_borrow_element_field_type(field_type);
- BT_ASSERT(elem_ft);
+ BT_ASSERT_DBG(elem_ft);
if (elem_ft->id != BT_CTF_FIELD_TYPE_ID_INTEGER) {
BT_LOGW("Invalid packet header field type: `uuid` field's element field type must be an integer field type: "
goto invalid;
}
- BT_ASSERT(int_ft);
+ BT_ASSERT_DBG(int_ft);
if (bt_ctf_field_type_common_integer_is_signed(int_ft)) {
BT_LOGW("Invalid event header field type: `id` field must be an unsigned integer or enumeration field type: "
"id-ft-addr=%p", int_ft);
struct bt_ctf_field_type_common *packet_context_type = NULL;
struct bt_ctf_field_type_common *event_header_type = NULL;
struct bt_ctf_field_type_common *stream_event_ctx_type = NULL;
- int64_t event_class_count;
+ int64_t event_class_count = 0;
struct bt_ctf_trace_common *current_parent_trace = NULL;
struct bt_ctf_clock_class *expected_clock_class =
bt_ctf_object_get_ref(init_expected_clock_class);
- BT_ASSERT(copy_field_type_func);
+ BT_ASSERT_DBG(copy_field_type_func);
if (!trace) {
BT_LOGW_STR("Invalid parameter: trace is NULL.");
event_class_count =
bt_ctf_stream_class_common_get_event_class_count(stream_class);
- BT_ASSERT(event_class_count >= 0);
+ BT_ASSERT_DBG(event_class_count >= 0);
if (!stream_class->frozen) {
/*
}
BT_HIDDEN
-bt_bool bt_ctf_trace_common_has_clock_class(struct bt_ctf_trace_common *trace,
+bt_ctf_bool bt_ctf_trace_common_has_clock_class(struct bt_ctf_trace_common *trace,
struct bt_ctf_clock_class *clock_class)
{
struct bt_ctf_search_query query = { .value = clock_class, .found = 0 };
- BT_ASSERT(trace);
- BT_ASSERT(clock_class);
+ BT_ASSERT_DBG(trace);
+ BT_ASSERT_DBG(clock_class);
g_ptr_array_foreach(trace->clock_classes, value_exists, &query);
return query.found;
}
trace->native_byte_order = byte_order;
- BT_LOGV("Set trace's native byte order: "
+ BT_LOGT("Set trace's native byte order: "
"addr=%p, name=\"%s\", bo=%s",
trace, bt_ctf_trace_common_get_name(trace),
bt_ctf_byte_order_string(byte_order));
bt_ctf_object_put_ref(trace->packet_header_field_type);
trace->packet_header_field_type = bt_ctf_object_get_ref(packet_header_type);
- BT_LOGV("Set trace's packet header field type: "
+ BT_LOGT("Set trace's packet header field type: "
"addr=%p, name=\"%s\", packet-context-ft-addr=%p",
trace, bt_ctf_trace_common_get_name(trace), packet_header_type);
end:
goto end;
}
- BT_LOGV("Visiting trace: addr=%p, name=\"%s\"",
+ BT_LOGT("Visiting trace: addr=%p, name=\"%s\"",
trace, bt_ctf_trace_get_name(trace));
ret = bt_ctf_visitor_helper(&obj, get_stream_class_count,
get_stream_class, visit_stream_class, visitor, data);
return trace;
}
-const unsigned char *bt_ctf_trace_get_uuid(struct bt_ctf_trace *trace)
+const uint8_t *bt_ctf_trace_get_uuid(struct bt_ctf_trace *trace)
{
return bt_ctf_trace_common_get_uuid(BT_CTF_TO_COMMON(trace));
}
int bt_ctf_trace_set_uuid(struct bt_ctf_trace *trace,
- const unsigned char *uuid)
+ const uint8_t *uuid)
{
return bt_ctf_trace_common_set_uuid(BT_CTF_TO_COMMON(trace), uuid);
}
int append_trace_metadata(struct bt_ctf_trace *trace,
struct metadata_context *context)
{
- unsigned char *uuid = trace->common.uuid;
+ uint8_t *uuid = trace->common.uuid;
int ret = 0;
if (trace->common.native_byte_order == BT_CTF_BYTE_ORDER_NATIVE ||
g_string_append(context->string, "trace {\n");
g_string_append(context->string, "\tmajor = 1;\n");
g_string_append(context->string, "\tminor = 8;\n");
- BT_ASSERT(trace->common.native_byte_order == BT_CTF_BYTE_ORDER_LITTLE_ENDIAN ||
+ BT_ASSERT_DBG(trace->common.native_byte_order == BT_CTF_BYTE_ORDER_LITTLE_ENDIAN ||
trace->common.native_byte_order == BT_CTF_BYTE_ORDER_BIG_ENDIAN ||
trace->common.native_byte_order == BT_CTF_BYTE_ORDER_NETWORK);
if (trace->common.uuid_set) {
g_string_append_printf(context->string,
- "\tuuid = \"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\";\n",
- uuid[0], uuid[1], uuid[2], uuid[3],
- uuid[4], uuid[5], uuid[6], uuid[7],
- uuid[8], uuid[9], uuid[10], uuid[11],
- uuid[12], uuid[13], uuid[14], uuid[15]);
+ "\tuuid = \"" BT_UUID_FMT "\";\n",
+ BT_UUID_FMT_VALUES(uuid));
}
g_string_append_printf(context->string, "\tbyte_order = %s;\n",
env_field_value_obj = bt_ctf_attributes_borrow_field_value(
trace->common.environment, i);
- BT_ASSERT(entry_name);
- BT_ASSERT(env_field_value_obj);
+ BT_ASSERT_DBG(entry_name);
+ BT_ASSERT_DBG(env_field_value_obj);
switch (bt_ctf_value_get_type(
bt_ctf_private_value_as_value(env_field_value_obj))) {