Fixes race with SC_DONE and event overflow (XCC)
[akaros.git] / user / parlib / include / rassert.h
1 /* See COPYRIGHT for copyright information. */
2
3 #ifndef ROS_INC_ASSERT_H
4 #define ROS_INC_ASSERT_H
5
6 #include <assert.h>
7 #include <vcore.h>
8 #undef assert
9
10 void _warn(const char*, int, const char*, ...);
11 void _panic(const char*, int, const char*, ...) __attribute__((noreturn));
12
13 #define warn(...) _warn(__FILE__, __LINE__, __VA_ARGS__)
14 #define panic(...) _panic(__FILE__, __LINE__, __VA_ARGS__)
15
16 #define assert(x)               \
17         do { if (!(x)) panic("assertion failed - vcore %d: %s", vcore_id(), #x); } while (0)
18
19 // static_assert(x) will generate a compile-time error if 'x' is false.
20 #define static_assert(x)        switch (x) case 0: case (x):
21
22 #endif /* !ROS_INC_ASSERT_H */