17#ifndef ZEPHYR_INCLUDE_SYS_ZASSERT_H_
18#define ZEPHYR_INCLUDE_SYS_ZASSERT_H_
46#define ZASSERT_LEVEL_OFF 0
48#define ZASSERT_LEVEL_TERSE 1
50#define ZASSERT_LEVEL_NORMAL 2
52#define ZASSERT_LEVEL_VERBOSE 3
72#ifndef CONFIG_ASSERT_TEST
76void
zassert_fail(const
char *cond, const
char *file,
unsigned int line, const
char *fmt, ...);
82#ifndef CONFIG_ASSERT_TEST
122#define ZASSERT_IMPL_MODULE_LEVEL(module) UTIL_CAT(UTIL_CAT(CONFIG_ASSERT_MODULE_, module), _LEVEL)
128#define ZASSERT_IMPL_LEVEL_RESOLVE(...) \
129 GET_ARG_N(2, __VA_ARGS__, ZASSERT_IMPL_MODULE_LEVEL(GET_ARG_N(1, __VA_ARGS__)), _)
132#define ZASSERT_IMPL(_level, _test, ...)
133#define ZASSERT_IMPL_MODULE(...)
135#define ZASSERT_IMPL(_level, _test, ...) \
137 if ((_level) != ZASSERT_LEVEL_OFF && unlikely(!(_test))) { \
138 switch ((_level)) { \
139 case ZASSERT_LEVEL_VERBOSE: \
140 zassert_fail(Z_STRINGIFY(_test), __FILE__, __LINE__, \
141 COND_CODE_1(IS_EMPTY(__VA_ARGS__), \
142 (NULL), (__VA_ARGS__))); \
144 case ZASSERT_LEVEL_NORMAL: \
145 zassert_fail(NULL, __FILE__, __LINE__, NULL); \
147 case ZASSERT_LEVEL_TERSE: \
148 zassert_fail(NULL, NULL, 0, NULL); \
156#define ZASSERT_IMPL_MODULE(...) \
157 BUILD_ASSERT((ZASSERT_IMPL_LEVEL_RESOLVE(__VA_ARGS__)) >= ZASSERT_LEVEL_OFF && \
158 (ZASSERT_IMPL_LEVEL_RESOLVE(__VA_ARGS__)) <= ZASSERT_LEVEL_VERBOSE,\
159 "Invalid assert level"); \
160 static const int zassert_impl_level __unused = \
161 IS_ENABLED(CONFIG_ASSERT) ? (ZASSERT_IMPL_LEVEL_RESOLVE(__VA_ARGS__)) \
165#define ZASSERT_IMPL_LEVEL(_level, _test, ...) \
167 BUILD_ASSERT((_level) >= ZASSERT_LEVEL_OFF && (_level) <= ZASSERT_LEVEL_VERBOSE,\
168 "Invalid assert level"); \
169 ZASSERT_IMPL(_level, _test, ##__VA_ARGS__); \
179#define ZASSERT_TERSE(_test, ...) ZASSERT_IMPL_LEVEL(ZASSERT_LEVEL_TERSE, (_test), ##__VA_ARGS__)
187#define ZASSERT_NORMAL(_test, ...) ZASSERT_IMPL_LEVEL(ZASSERT_LEVEL_NORMAL, (_test), ##__VA_ARGS__)
195#define ZASSERT_VERBOSE(_test, ...) \
196 ZASSERT_IMPL_LEVEL(ZASSERT_LEVEL_VERBOSE, (_test), ##__VA_ARGS__)
216#define ZASSERT_MODULE(...) ZASSERT_IMPL_MODULE(__VA_ARGS__)
229#define ZASSERT(_test, ...) ZASSERT_IMPL(zassert_impl_level, _test, ##__VA_ARGS__)
FUNC_NORETURN void zassert_fail(const char *cond, const char *file, unsigned int line, const char *fmt,...)
Report a failed assertion and take terminal action.
FUNC_NORETURN void zassert_post_action(const char *file, unsigned int line)
Terminal action taken on assertion failure.
void zassert_vprint(const char *fmt, va_list ap)
Emit assertion text (va_list form).
static void zassert_print(const char *fmt,...)
Emit assertion text (printf like), routed through zassert_vprint().
Definition zassert.h:107