Merge branch 'master' into net-dev (with code changes listed below besides normal...
[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, ...) __attribute__((noreturn));
8
9 #define warn(...) _warn(__FILE__, __LINE__, __VA_ARGS__)
10 #define panic(...) _panic(__FILE__, __LINE__, __VA_ARGS__)
11
12 #define assert(x)               \
13         do { if (!(x)) panic("assertion failed: %s", #x); } while (0)
14
15 // static_assert(x) will generate a compile-time error if 'x' is false.
16 #define static_assert(x)        switch (x) case 0: case (x):
17
18 #endif /* !ROS_INC_ASSERT_H */