7#ifndef ZEPHYR_INCLUDE_SYS___ASSERT_H_
8#define ZEPHYR_INCLUDE_SYS___ASSERT_H_
24#if defined(CONFIG_ASSERT_VERBOSE)
25#define __ASSERT_PRINT(fmt, ...) assert_print(fmt, ##__VA_ARGS__)
27#define __ASSERT_PRINT(fmt, ...)
30#ifdef CONFIG_ASSERT_NO_MSG_INFO
31#define __ASSERT_MSG_INFO(fmt, ...)
33#define __ASSERT_MSG_INFO(fmt, ...) __ASSERT_PRINT("\t" fmt "\n", ##__VA_ARGS__)
36#if !defined(CONFIG_ASSERT_NO_COND_INFO) && !defined(CONFIG_ASSERT_NO_FILE_INFO)
37#define __ASSERT_LOC(test) \
38 __ASSERT_PRINT("ASSERTION FAIL [%s] @ %s:%d\n", \
43#if defined(CONFIG_ASSERT_NO_COND_INFO) && !defined(CONFIG_ASSERT_NO_FILE_INFO)
44#define __ASSERT_LOC(test) \
45 __ASSERT_PRINT("ASSERTION FAIL @ %s:%d\n", \
49#if !defined(CONFIG_ASSERT_NO_COND_INFO) && defined(CONFIG_ASSERT_NO_FILE_INFO)
50#define __ASSERT_LOC(test) \
51 __ASSERT_PRINT("ASSERTION FAIL [%s]\n", \
55#if defined(CONFIG_ASSERT_NO_COND_INFO) && defined(CONFIG_ASSERT_NO_FILE_INFO)
56#define __ASSERT_LOC(test) \
57 __ASSERT_PRINT("ASSERTION FAIL\n")
60#if defined(CONFIG_ASSERT) && !defined(CONFIG_FORCE_NO_ASSERT) && \
61 defined(CONFIG_ASSERT_LEVEL) && (CONFIG_ASSERT_LEVEL > 0)
63BUILD_ASSERT(CONFIG_ASSERT_LEVEL >= 0 && CONFIG_ASSERT_LEVEL <= 2,
64 "Invalid CONFIG_ASSERT_LEVEL: must be between 0 and 2");
66#if CONFIG_ASSERT_LEVEL == 1
67#warning "__ASSERT() statements are ENABLED"
73#ifdef CONFIG_ASSERT_NO_FILE_INFO
74void assert_post_action(
void);
75#define __ASSERT_POST_ACTION() assert_post_action()
77void assert_post_action(
const char *file,
unsigned int line);
78#define __ASSERT_POST_ACTION() assert_post_action(__FILE__, __LINE__)
86#ifdef CONFIG_ASSERT_TEST
87#define __ASSERT_UNREACHABLE
89#define __ASSERT_UNREACHABLE CODE_UNREACHABLE
96#define __ASSERT_NO_MSG(test) \
98 if (unlikely(!(test))) { \
100 __ASSERT_POST_ACTION(); \
101 __ASSERT_UNREACHABLE; \
105#define __ASSERT(test, fmt, ...) \
107 if (unlikely(!(test))) { \
108 __ASSERT_LOC(test); \
109 __ASSERT_MSG_INFO(fmt, ##__VA_ARGS__); \
110 __ASSERT_POST_ACTION(); \
111 __ASSERT_UNREACHABLE; \
115#define __ASSERT_EVAL(expr1, expr2, test, fmt, ...) \
118 __ASSERT(test, fmt, ##__VA_ARGS__); \
124#define __ASSERT(test, fmt, ...) { }
125#define __ASSERT_EVAL(expr1, expr2, test, fmt, ...) expr1
126#define __ASSERT_NO_MSG(test) { }
127#define __ASSERT_POST_ACTION() { }
131#ifdef CONFIG_ASSERT_CUSTOM_HEADER
133#include <zephyr_custom_assert.h>
void assert_print(const char *fmt,...)