Move to kernel style SPDX license identifiers
[babeltrace.git] / src / lib / trace-ir / trace.c
index 3bf26b7bcdb8b009a32311ff9dd29e07a3c81582..30e1f2419e79d66b1ad216aa28d816d8469f2a43 100644 (file)
@@ -1,24 +1,8 @@
 /*
+ * SPDX-License-Identifier: MIT
+ *
  * Copyright 2017-2018 Philippe Proulx <pproulx@efficios.com>
  * Copyright 2014 Jérémie Galarneau <jeremie.galarneau@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 "LIB/TRACE"
 #include "lib/assert-pre.h"
 #include "lib/assert-post.h"
 #include <babeltrace2/trace-ir/trace.h>
-#include <babeltrace2/trace-ir/trace-const.h>
 #include <babeltrace2/trace-ir/event-class.h>
 #include "ctf-writer/functor.h"
 #include "ctf-writer/clock.h"
 #include "compat/compiler.h"
 #include <babeltrace2/value.h>
-#include <babeltrace2/value-const.h>
 #include "lib/value.h"
 #include <babeltrace2/types.h>
 #include "compat/endian.h"
@@ -82,6 +64,8 @@ void destroy_trace(struct bt_object *obj)
         */
        if (trace->destruction_listeners) {
                uint64_t i;
+               const struct bt_error *saved_error;
+
                BT_LIB_LOGD("Calling trace destruction listener(s): %!+t", trace);
 
                /*
@@ -96,6 +80,8 @@ void destroy_trace(struct bt_object *obj)
                */
                trace->base.ref_count++;
 
+               saved_error = bt_current_thread_take_error();
+
                /* Call all the trace destruction listeners */
                for (i = 0; i < trace->destruction_listeners->len; i++) {
                        struct bt_trace_destruction_listener_elem elem =
@@ -115,6 +101,10 @@ void destroy_trace(struct bt_object *obj)
                }
                g_array_free(trace->destruction_listeners, TRUE);
                trace->destruction_listeners = NULL;
+
+               if (saved_error) {
+                       BT_CURRENT_THREAD_MOVE_ERROR_AND_RESET(saved_error);
+               }
        }
 
        if (trace->name.str) {
@@ -150,6 +140,8 @@ struct bt_trace *bt_trace_create(struct bt_trace_class *tc)
 {
        struct bt_trace *trace = NULL;
 
+       BT_ASSERT_PRE_NO_ERROR();
+
        BT_LIB_LOGD("Creating trace object: %![tc-]+T", tc);
        trace = g_new0(struct bt_trace, 1);
        if (!trace) {
@@ -219,6 +211,7 @@ const char *bt_trace_get_name(const struct bt_trace *trace)
 enum bt_trace_set_name_status bt_trace_set_name(struct bt_trace *trace,
                const char *name)
 {
+       BT_ASSERT_PRE_NO_ERROR();
        BT_ASSERT_PRE_NON_NULL(trace, "Trace");
        BT_ASSERT_PRE_NON_NULL(name, "Name");
        BT_ASSERT_PRE_DEV_TRACE_HOT(trace);
@@ -289,9 +282,12 @@ bt_trace_set_environment_entry_string(
 {
        int ret;
        struct bt_value *value_obj;
+
+       BT_ASSERT_PRE_NO_ERROR();
        BT_ASSERT_PRE_NON_NULL(trace, "Trace");
        BT_ASSERT_PRE_NON_NULL(name, "Name");
        BT_ASSERT_PRE_NON_NULL(value, "Value");
+
        value_obj = bt_value_string_create_init(value);
        if (!value_obj) {
                BT_LIB_LOGE_APPEND_CAUSE(
@@ -314,8 +310,11 @@ bt_trace_set_environment_entry_integer(
 {
        int ret;
        struct bt_value *value_obj;
+
+       BT_ASSERT_PRE_NO_ERROR();
        BT_ASSERT_PRE_NON_NULL(trace, "Trace");
        BT_ASSERT_PRE_NON_NULL(name, "Name");
+
        value_obj = bt_value_integer_signed_create_init(value);
        if (!value_obj) {
                BT_LIB_LOGE_APPEND_CAUSE(
@@ -422,6 +421,7 @@ enum bt_trace_add_listener_status bt_trace_add_destruction_listener(
                .data = data,
        };
 
+       BT_ASSERT_PRE_NO_ERROR();
        BT_ASSERT_PRE_NON_NULL(trace, "Trace");
        BT_ASSERT_PRE_NON_NULL(listener, "Listener");
 
@@ -466,6 +466,7 @@ enum bt_trace_remove_listener_status bt_trace_remove_destruction_listener(
        struct bt_trace *trace = (void *) c_trace;
        struct bt_trace_destruction_listener_elem *elem;
 
+       BT_ASSERT_PRE_NO_ERROR();
        BT_ASSERT_PRE_NON_NULL(trace, "Trace");
        BT_ASSERT_PRE(has_listener_id(trace, listener_id),
                "Trace has no such trace destruction listener ID: "
This page took 0.02442 seconds and 4 git commands to generate.