X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Flib%2Fcurrent-thread.c;h=69f1471339f56dd0526016c75a99b62def66e7f6;hb=5f62b71528d449635292ae3e4470115ae2500f75;hp=959e1695140d8941b9a47e1fb28c7376680062a8;hpb=553c4bab3cad8ad569c14a01b39a66a2d8bcde7c;p=babeltrace.git diff --git a/src/lib/current-thread.c b/src/lib/current-thread.c index 959e1695..69f14713 100644 --- a/src/lib/current-thread.c +++ b/src/lib/current-thread.c @@ -1,43 +1,34 @@ /* - * Copyright (c) 2019 Philippe Proulx - * - * 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. + * SPDX-License-Identifier: MIT * - * 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. + * Copyright (c) 2019 Philippe Proulx */ #define BT_LOG_TAG "LIB/CUR-THREAD" #include "lib/logging.h" -#include +#include #include #include #include "error.h" #include "common/assert.h" -#include "lib/assert-pre.h" +#include "lib/assert-cond.h" #include "lib/func-status.h" +#define BT_ASSERT_PRE_FILE_NAME_NON_NULL(_file_name) \ + BT_ASSERT_PRE_NON_NULL("file-name", (_file_name), "File name"); + +#define BT_ASSERT_PRE_MSG_FMT_NON_NULL(_msg_fmt) \ + BT_ASSERT_PRE_NON_NULL("message-format", (_msg_fmt), "Message format"); + /* * This points to the thread's error object, or it's `NULL` if there's * no current error object. */ static __thread struct bt_error *thread_error; +BT_EXPORT const struct bt_error *bt_current_thread_take_error(void) { struct bt_error *error = thread_error; @@ -48,6 +39,7 @@ const struct bt_error *bt_current_thread_take_error(void) return error; } +BT_EXPORT void bt_current_thread_clear_error(void) { bt_error_destroy(thread_error); @@ -56,8 +48,10 @@ void bt_current_thread_clear_error(void) thread_error = NULL; } +BT_EXPORT void bt_current_thread_move_error(const struct bt_error *error) { + BT_ASSERT_PRE_ERROR_NON_NULL(error); bt_current_thread_clear_error(); thread_error = (void *) error; BT_LOGD("Moved error object as current thread's error: addr=%p", @@ -91,6 +85,7 @@ end: return status; } +BT_EXPORT enum bt_current_thread_error_append_cause_status bt_current_thread_error_append_cause_from_unknown( const char *module_name, const char *file_name, @@ -100,6 +95,10 @@ bt_current_thread_error_append_cause_from_unknown( try_create_thread_error(); va_list args; + BT_ASSERT_PRE_NON_NULL("module-name", module_name, "Module name"); + BT_ASSERT_PRE_FILE_NAME_NON_NULL(file_name); + BT_ASSERT_PRE_MSG_FMT_NON_NULL(msg_fmt); + if (status) { goto end; } @@ -115,6 +114,7 @@ end: return status; } +BT_EXPORT enum bt_current_thread_error_append_cause_status bt_current_thread_error_append_cause_from_component( bt_self_component *self_comp, const char *file_name, @@ -124,6 +124,10 @@ bt_current_thread_error_append_cause_from_component( try_create_thread_error(); va_list args; + BT_ASSERT_PRE_COMP_NON_NULL(self_comp); + BT_ASSERT_PRE_FILE_NAME_NON_NULL(file_name); + BT_ASSERT_PRE_MSG_FMT_NON_NULL(msg_fmt); + if (status) { goto end; } @@ -139,6 +143,7 @@ end: return status; } +BT_EXPORT enum bt_current_thread_error_append_cause_status bt_current_thread_error_append_cause_from_component_class( bt_self_component_class *self_comp_class, const char *file_name, @@ -148,6 +153,10 @@ bt_current_thread_error_append_cause_from_component_class( try_create_thread_error(); va_list args; + BT_ASSERT_PRE_COMP_CLS_NON_NULL(self_comp_class); + BT_ASSERT_PRE_FILE_NAME_NON_NULL(file_name); + BT_ASSERT_PRE_MSG_FMT_NON_NULL(msg_fmt); + if (status) { goto end; } @@ -163,6 +172,7 @@ end: return status; } +BT_EXPORT enum bt_current_thread_error_append_cause_status bt_current_thread_error_append_cause_from_message_iterator( bt_self_message_iterator *self_iter, const char *file_name, @@ -172,6 +182,10 @@ bt_current_thread_error_append_cause_from_message_iterator( try_create_thread_error(); va_list args; + BT_ASSERT_PRE_MSG_ITER_NON_NULL(self_iter); + BT_ASSERT_PRE_FILE_NAME_NON_NULL(file_name); + BT_ASSERT_PRE_MSG_FMT_NON_NULL(msg_fmt); + if (status) { goto end; }