9#define MOS_UNIMPLEMENTED(content) mos_panic("\nUNIMPLEMENTED: %s", content)
10#define MOS_UNREACHABLE() mos_panic("\nUNREACHABLE line %d reached in file: %s", __LINE__, __FILE__)
11#define MOS_UNREACHABLE_X(msg, ...) mos_panic("\nUNREACHABLE line %d reached in file: %s\n" msg, __LINE__, __FILE__, ##__VA_ARGS__)
12#define MOS_ASSERT_X(cond, msg, ...) \
15 if (unlikely(!(cond))) \
16 mos_panic_inline("Assertion failed: %s\n" msg, #cond, ##__VA_ARGS__); \
18#define MOS_ASSERT_ONCE(...) MOS_ASSERT_X(once(), __VA_ARGS__)
19#define MOS_ASSERT(cond) MOS_ASSERT_X(cond, "")
22#define mos_warn(fmt, ...) mos_kwarn(__func__, __LINE__, "WARN: " fmt "\r\n", ##__VA_ARGS__)
24#define mos_warn_once(...) \
28 mos_warn(__VA_ARGS__); \
31#define spinlock_assert_locked(lock) MOS_ASSERT(spinlock_is_locked(lock))
void mos_kwarn(const char *func, u32 line, const char *fmt,...)
MOSAPI void(1, 2) fatal_abort(const char *fmt