Move to kernel style SPDX license identifiers
[babeltrace.git] / src / ctf-writer / stream.c
index 3f5e610094e7c45ef311070ca91032274d89c13a..ccd7cc605bc797d01c3ab3df2fa8e644ed6aad27 100644 (file)
@@ -1,30 +1,15 @@
 /*
+ * 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/STREAM"
 #include "logging.h"
 
 #include <inttypes.h>
+#include <stdbool.h>
 #include <stdint.h>
 #include <unistd.h>
 
@@ -146,7 +131,7 @@ static
 void bt_ctf_stream_destroy(struct bt_ctf_object *obj);
 
 static
-int try_set_structure_field_integer(struct bt_ctf_field *, char *, uint64_t);
+int try_set_structure_field_integer(struct bt_ctf_field *, const char *, uint64_t);
 
 static
 int set_integer_field_value(struct bt_ctf_field* field, uint64_t value)
@@ -161,7 +146,7 @@ int set_integer_field_value(struct bt_ctf_field* field, uint64_t value)
        }
 
        field_type = bt_ctf_field_get_type(field);
-       BT_ASSERT(field_type);
+       BT_ASSERT_DBG(field_type);
 
        if (bt_ctf_field_type_get_type_id(field_type) !=
                        BT_CTF_FIELD_TYPE_ID_INTEGER) {
@@ -207,7 +192,7 @@ int set_packet_header_magic(struct bt_ctf_stream *stream)
                stream->packet_header, "magic");
        const uint32_t magic_value = 0xc1fc1fc1;
 
-       BT_ASSERT(stream);
+       BT_ASSERT_DBG(stream);
 
        if (!magic_field) {
                /* No magic field found. Not an error, skip. */
@@ -245,7 +230,7 @@ int set_packet_header_uuid(struct bt_ctf_stream *stream)
        struct bt_ctf_field *uuid_field = bt_ctf_field_structure_get_field_by_name(
                stream->packet_header, "uuid");
 
-       BT_ASSERT(stream);
+       BT_ASSERT_DBG(stream);
 
        if (!uuid_field) {
                /* No uuid field found. Not an error, skip. */
@@ -395,7 +380,7 @@ int set_packet_context_content_size(struct bt_ctf_stream *stream,
        struct bt_ctf_field *field = bt_ctf_field_structure_get_field_by_name(
                stream->packet_context, "content_size");
 
-       BT_ASSERT(stream);
+       BT_ASSERT_DBG(stream);
 
        if (!field) {
                /* No content size field found. Not an error, skip. */
@@ -430,7 +415,7 @@ int set_packet_context_events_discarded(struct bt_ctf_stream *stream)
        struct bt_ctf_field *field = bt_ctf_field_structure_get_field_by_name(
                stream->packet_context, "events_discarded");
 
-       BT_ASSERT(stream);
+       BT_ASSERT_DBG(stream);
 
        if (!field) {
                /* No discarded events count field found. Not an error, skip. */
@@ -550,7 +535,7 @@ int visit_field_update_clock_value(struct bt_ctf_field *field, uint64_t *val)
                bt_ctf_object_put_ref(cc);
                val_size = bt_ctf_field_type_integer_get_size(
                        (void *) field_common->type);
-               BT_ASSERT(val_size >= 1);
+               BT_ASSERT_DBG(val_size >= 1);
 
                if (bt_ctf_field_type_integer_is_signed(
                                (void *) field_common->type)) {
@@ -575,7 +560,7 @@ int visit_field_update_clock_value(struct bt_ctf_field *field, uint64_t *val)
                struct bt_ctf_field *int_field =
                        bt_ctf_field_enumeration_get_container(field);
 
-               BT_ASSERT(int_field);
+               BT_ASSERT_DBG(int_field);
                ret = visit_field_update_clock_value(int_field, val);
                bt_ctf_object_put_ref(int_field);
                break;
@@ -586,13 +571,13 @@ int visit_field_update_clock_value(struct bt_ctf_field *field, uint64_t *val)
                int64_t len = bt_ctf_field_type_array_get_length(
                        (void *) field_common->type);
 
-               BT_ASSERT(len >= 0);
+               BT_ASSERT_DBG(len >= 0);
 
                for (i = 0; i < len; i++) {
                        struct bt_ctf_field *elem_field =
                                bt_ctf_field_array_get_field(field, i);
 
-                       BT_ASSERT(elem_field);
+                       BT_ASSERT_DBG(elem_field);
                        ret = visit_field_update_clock_value(elem_field, val);
                        bt_ctf_object_put_ref(elem_field);
                        if (ret) {
@@ -616,7 +601,7 @@ int visit_field_update_clock_value(struct bt_ctf_field *field, uint64_t *val)
                        struct bt_ctf_field *elem_field =
                                bt_ctf_field_sequence_get_field(field, i);
 
-                       BT_ASSERT(elem_field);
+                       BT_ASSERT_DBG(elem_field);
                        ret = visit_field_update_clock_value(elem_field, val);
                        bt_ctf_object_put_ref(elem_field);
                        if (ret) {
@@ -631,13 +616,13 @@ int visit_field_update_clock_value(struct bt_ctf_field *field, uint64_t *val)
                int64_t len = bt_ctf_field_type_structure_get_field_count(
                        (void *) field_common->type);
 
-               BT_ASSERT(len >= 0);
+               BT_ASSERT_DBG(len >= 0);
 
                for (i = 0; i < len; i++) {
                        struct bt_ctf_field *member_field =
                                bt_ctf_field_structure_get_field_by_index(field, i);
 
-                       BT_ASSERT(member_field);
+                       BT_ASSERT_DBG(member_field);
                        ret = visit_field_update_clock_value(member_field, val);
                        bt_ctf_object_put_ref(member_field);
                        if (ret) {
@@ -668,6 +653,7 @@ end:
        return ret;
 }
 
+static
 int visit_event_update_clock_value(struct bt_ctf_event *event, uint64_t *val)
 {
        int ret = 0;
@@ -732,7 +718,7 @@ int set_packet_context_timestamps(struct bt_ctf_stream *stream)
        if (ts_begin_field && bt_ctf_field_is_set_recursive(ts_begin_field)) {
                /* Use provided `timestamp_begin` value as starting value */
                ret = bt_ctf_field_integer_unsigned_get_value(ts_begin_field, &val);
-               BT_ASSERT(ret == 0);
+               BT_ASSERT_DBG(ret == 0);
                init_clock_value = val;
        } else if (stream->last_ts_end != -1ULL) {
                /* Use last packet's ending timestamp as starting value */
@@ -768,7 +754,7 @@ int set_packet_context_timestamps(struct bt_ctf_stream *stream)
         */
        len = bt_ctf_field_type_structure_get_field_count(
                (void *) packet_context->type);
-       BT_ASSERT(len >= 0);
+       BT_ASSERT_DBG(len >= 0);
 
        for (i = 0; i < len; i++) {
                const char *member_name;
@@ -776,7 +762,7 @@ int set_packet_context_timestamps(struct bt_ctf_stream *stream)
 
                ret = bt_ctf_field_type_structure_get_field_by_index(
                        (void *) packet_context->type, &member_name, NULL, i);
-               BT_ASSERT(ret == 0);
+               BT_ASSERT_DBG(ret == 0);
 
                if (strcmp(member_name, "timestamp_begin") == 0 ||
                                strcmp(member_name, "timestamp_end") == 0) {
@@ -785,7 +771,7 @@ int set_packet_context_timestamps(struct bt_ctf_stream *stream)
 
                member_field = bt_ctf_field_structure_get_field_by_index(
                        stream->packet_context, i);
-               BT_ASSERT(member_field);
+               BT_ASSERT_DBG(member_field);
 
                if (strcmp(member_name, "packet_size") == 0 &&
                                !bt_ctf_field_is_set_recursive(member_field)) {
@@ -828,7 +814,7 @@ int set_packet_context_timestamps(struct bt_ctf_stream *stream)
        for (i = 0; i < stream->events->len; i++) {
                struct bt_ctf_event *event = g_ptr_array_index(stream->events, i);
 
-               BT_ASSERT(event);
+               BT_ASSERT_DBG(event);
                ret = visit_event_update_clock_value(event, &cur_clock_value);
                if (ret) {
                        BT_LOGW("Cannot automatically update clock value "
@@ -853,7 +839,7 @@ int set_packet_context_timestamps(struct bt_ctf_stream *stream)
         */
        if (ts_end_field && bt_ctf_field_is_set_recursive(ts_end_field)) {
                ret = bt_ctf_field_integer_unsigned_get_value(ts_end_field, &val);
-               BT_ASSERT(ret == 0);
+               BT_ASSERT_DBG(ret == 0);
 
                if (val < cur_clock_value) {
                        BT_LOGW("Packet's final timestamp is less than "
@@ -872,7 +858,7 @@ int set_packet_context_timestamps(struct bt_ctf_stream *stream)
 
        if (ts_end_field && !bt_ctf_field_is_set_recursive(ts_end_field)) {
                ret = set_integer_field_value(ts_end_field, cur_clock_value);
-               BT_ASSERT(ret == 0);
+               BT_ASSERT_DBG(ret == 0);
                stream->last_ts_end = cur_clock_value;
        }
 
@@ -883,7 +869,7 @@ int set_packet_context_timestamps(struct bt_ctf_stream *stream)
        /* Set `timestamp_begin` field to initial clock value */
        if (ts_begin_field && !bt_ctf_field_is_set_recursive(ts_begin_field)) {
                ret = set_integer_field_value(ts_begin_field, init_clock_value);
-               BT_ASSERT(ret == 0);
+               BT_ASSERT_DBG(ret == 0);
        }
 
 end:
@@ -979,7 +965,7 @@ int create_stream_file(struct bt_ctf_writer *writer,
                /* Use stream name's base name as prefix */
                gchar *basename = g_path_get_basename(stream->common.name->str);
 
-               BT_ASSERT(basename);
+               BT_ASSERT_DBG(basename);
 
                if (strcmp(basename, G_DIR_SEPARATOR_S) == 0) {
                        g_string_assign(filename, "stream");
@@ -998,7 +984,7 @@ int create_stream_file(struct bt_ctf_writer *writer,
                        g_path_get_basename(
                                stream->common.stream_class->name->str);
 
-               BT_ASSERT(basename);
+               BT_ASSERT_DBG(basename);
 
                if (strcmp(basename, G_DIR_SEPARATOR_S) == 0) {
                        g_string_assign(filename, "stream");
@@ -1015,8 +1001,8 @@ int create_stream_file(struct bt_ctf_writer *writer,
 
 append_ids:
        stream_class_id = bt_ctf_stream_class_common_get_id(stream->common.stream_class);
-       BT_ASSERT(stream_class_id >= 0);
-       BT_ASSERT(stream->common.id >= 0);
+       BT_ASSERT_DBG(stream_class_id >= 0);
+       BT_ASSERT_DBG(stream->common.id >= 0);
        g_string_append_printf(filename, "-%" PRId64 "-%" PRId64,
                stream_class_id, stream->common.id);
 
@@ -1093,7 +1079,7 @@ struct bt_ctf_stream *bt_ctf_stream_create_with_id(
        stream->last_ts_end = -1ULL;
        BT_LOGD("CTF writer stream object belongs writer's trace: "
                "writer-addr=%p", writer);
-       BT_ASSERT(writer);
+       BT_ASSERT_DBG(writer);
 
        if (stream_class->common.packet_context_field_type) {
                BT_LOGD("Creating stream's packet context field: "
@@ -1299,7 +1285,7 @@ static int auto_populate_event_header(struct bt_ctf_stream *stream,
                        BT_CTF_TO_COMMON(stream)));
        int64_t event_class_id;
 
-       BT_ASSERT(event);
+       BT_ASSERT_DBG(event);
 
        if (!event->common.header_field) {
                goto end;
@@ -1318,7 +1304,7 @@ static int auto_populate_event_header(struct bt_ctf_stream *stream,
        id_field = bt_ctf_field_structure_get_field_by_name(
                (void *) event->common.header_field->field, "id");
        event_class_id = bt_ctf_event_class_common_get_id(event->common.class);
-       BT_ASSERT(event_class_id >= 0);
+       BT_ASSERT_DBG(event_class_id >= 0);
 
        if (id_field && bt_ctf_field_get_type_id(id_field) == BT_CTF_FIELD_TYPE_ID_INTEGER) {
                ret = set_integer_field_value(id_field, event_class_id);
@@ -1350,12 +1336,12 @@ static int auto_populate_event_header(struct bt_ctf_stream *stream,
                if (mapped_clock_class) {
                        uint64_t timestamp;
 
-                       BT_ASSERT(mapped_clock_class ==
+                       BT_ASSERT_DBG(mapped_clock_class ==
                                stream_class->clock->clock_class);
                        ret = bt_ctf_clock_get_value(
                                stream_class->clock,
                                &timestamp);
-                       BT_ASSERT(ret == 0);
+                       BT_ASSERT_DBG(ret == 0);
                        ret = set_integer_field_value(timestamp_field,
                                        timestamp);
                        if (ret) {
@@ -1566,7 +1552,7 @@ int bt_ctf_stream_set_packet_header(struct bt_ctf_stream *stream,
        }
 
        field_type = bt_ctf_field_get_type(field);
-       BT_ASSERT(field_type);
+       BT_ASSERT_DBG(field_type);
 
        if (bt_ctf_field_type_common_compare((void *) field_type,
                        trace->common.packet_header_field_type)) {
@@ -1650,7 +1636,7 @@ int bt_ctf_stream_flush(struct bt_ctf_stream *stream)
                bt_ctf_stream_get_name(stream), stream->flushed_packet_count);
        trace = BT_CTF_FROM_COMMON(bt_ctf_stream_class_common_borrow_trace(
                stream->common.stream_class));
-       BT_ASSERT(trace);
+       BT_ASSERT_DBG(trace);
        native_byte_order = bt_ctf_trace_get_native_byte_order(trace);
 
        ret = auto_populate_packet_header(stream);
@@ -1871,15 +1857,15 @@ void bt_ctf_stream_destroy(struct bt_ctf_object *obj)
 }
 
 static
-int _set_structure_field_integer(struct bt_ctf_field *structure, char *name,
+int _set_structure_field_integer(struct bt_ctf_field *structure, const char *name,
                uint64_t value, bt_ctf_bool force)
 {
        int ret = 0;
        struct bt_ctf_field_type *field_type = NULL;
        struct bt_ctf_field *integer;
 
-       BT_ASSERT(structure);
-       BT_ASSERT(name);
+       BT_ASSERT_DBG(structure);
+       BT_ASSERT_DBG(name);
 
        integer = bt_ctf_field_structure_get_field_by_name(structure, name);
        if (!integer) {
@@ -1898,7 +1884,7 @@ int _set_structure_field_integer(struct bt_ctf_field *structure, char *name,
        }
 
        field_type = bt_ctf_field_get_type(integer);
-       BT_ASSERT(field_type);
+       BT_ASSERT_DBG(field_type);
        if (bt_ctf_field_type_get_type_id(field_type) != BT_CTF_FIELD_TYPE_ID_INTEGER) {
                /*
                 * The user most likely meant for us to populate this field
@@ -1934,7 +1920,7 @@ end:
  * <0 if an error was encoutered
  */
 static
-int try_set_structure_field_integer(struct bt_ctf_field *structure, char *name,
+int try_set_structure_field_integer(struct bt_ctf_field *structure, const char *name,
                uint64_t value)
 {
        return _set_structure_field_integer(structure, name, value, BT_CTF_FALSE);
This page took 0.028844 seconds and 4 git commands to generate.