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__)
87#ifdef CONFIG_ASSERT_TEST
88#define __ASSERT_AFTER_TRIGGER_UNREACHABILITY_MARKER
90#define __ASSERT_AFTER_TRIGGER_UNREACHABILITY_MARKER CODE_UNREACHABLE
97#define __ASSERT_NO_MSG(test) \
99 if (unlikely(!(test))) { \
100 __ASSERT_LOC(test); \
101 __ASSERT_POST_ACTION(); \
102 __ASSERT_AFTER_TRIGGER_UNREACHABILITY_MARKER; \
106#define __ASSERT(test, fmt, ...) \
108 if (unlikely(!(test))) { \
109 __ASSERT_LOC(test); \
110 __ASSERT_MSG_INFO(fmt, ##__VA_ARGS__); \
111 __ASSERT_POST_ACTION(); \
112 __ASSERT_AFTER_TRIGGER_UNREACHABILITY_MARKER; \
116#define __ASSERT_EVAL(expr1, expr2, test, fmt, ...) \
119 __ASSERT(test, fmt, ##__VA_ARGS__); \
125#define __ASSERT(test, fmt, ...) { }
126#define __ASSERT_EVAL(expr1, expr2, test, fmt, ...) expr1
127#define __ASSERT_NO_MSG(test) { }
128#define __ASSERT_POST_ACTION() { }
132#ifdef CONFIG_ASSERT_CUSTOM_HEADER
134#include <zephyr_custom_assert.h>
void assert_print(const char *fmt,...)