#ifndef __KERN_DEBUG_ASSERT_H__ #define __KERN_DEBUG_ASSERT_H__ #include <defs.h> void __warn(const char *file, int line, const char *fmt, ...); void __noreturn __panic(const char *file, int line, const char *fmt, ...); #define warn(...) \ __warn(__FILE__, __LINE__, __VA_ARGS__) #define panic(...) \ __panic(__FILE__, __LINE__, __VA_ARGS__) #define assert(x) \ do { \ if (!(x)) { \ panic("assertion failed: %s", #x); \ } \ } while (0) // static_assert(x) will generate a compile-time error if 'x' is false. #define static_assert(x) \ switch (x) { case 0: case (x): ; } #endif /* !__KERN_DEBUG_ASSERT_H__ */