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)23 static 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