1 /* 2 * Copyright (c) 2023 Nordic Semiconductor ASA 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef NSI_COMMON_SRC_NSI_SAFE_CALLL_H 8 #define NSI_COMMON_SRC_NSI_SAFE_CALLL_H 9 10 #include <stdbool.h> 11 #include "nsi_tracing.h" 12 13 #ifdef __cplusplus 14 extern "C" { 15 #endif 16 17 #ifndef nsi_unlikely 18 #define nsi_unlikely(x) (__builtin_expect((bool)!!(x), false) != 0L) 19 #endif 20 21 #define NSI_SAFE_CALL(a) nsi_safe_call(a, #a) 22 nsi_safe_call(int test,const char * test_str)23static inline void nsi_safe_call(int test, const char *test_str) 24 { 25 /* LCOV_EXCL_START */ /* See Note1 */ 26 if (nsi_unlikely(test)) { 27 nsi_print_error_and_exit("Error on: %s\n", 28 test_str); 29 } 30 /* LCOV_EXCL_STOP */ 31 } 32 33 #ifdef __cplusplus 34 } 35 #endif 36 37 #endif /* NSI_COMMON_SRC_NSI_SAFE_CALLL_H */ 38