BXE: minor changes
[akaros.git] / kern / include / assert.h
1 /* See COPYRIGHT for copyright information. */
2
3 #ifndef ROS_INC_ASSERT_H
4 #define ROS_INC_ASSERT_H
5
6 void ( _warn)(const char* NTS, int, const char* NTS, ...);
7 void ( _panic)(const char* NTS, int, const char* NTS, ...)
8     __attribute__((noreturn));
9
10 #define warn(...) _warn(__FILE__, __LINE__, __VA_ARGS__)
11 #define warn_once(...) run_once_racy(warn(__VA_ARGS__))
12 #define panic(...) _panic(__FILE__, __LINE__, __VA_ARGS__)
13 #define exhausted(...) _panic(__FILE__, __LINE__, __VA_ARGS__)
14
15
16 #define check(x)                \
17         do { if (!(x)) warn("warning failed: %s", #x); } while (0)
18
19 #define assert(x)               \
20         do { if (!(x)) panic("assertion failed: %s", #x); } while (0)
21
22 // static_assert(x) will generate a compile-time error if 'x' is false.
23 #define static_assert(x)        switch (x) case 0: case (x):
24
25 #ifdef CONFIG_DEVELOPMENT_ASSERTIONS
26 #define dassert(x) assert(x)
27 #else
28 #define dassert(x)
29 #endif /* DEVELOPMENT_ASSERTIONS */
30
31 #endif /* !ROS_INC_ASSERT_H */