1 2 #ifndef __KASSERT_H__ 3 #define __KASSERT_H__ 4 5 #include <sys/cdefs.h> 6 #include <sys/sysctl.h> 7 8 #define ASSERT(_x) \ 9 if (!(_x)) { \ 10 Debug_Assert("ASSERT("#_x"): %s %s:%d\n", \ 11 __FUNCTION__, __FILE__, __LINE__); \ 12 } 13 #define NOT_IMPLEMENTED() \ 14 if (1) { \ 15 Debug_Assert("NOT_IMPLEMENTED(): %s %s:%d\n", \ 16 __FUNCTION__, __FILE__, __LINE__); \ 17 } 18 #define PANIC Panic 19 20 NO_RETURN void Panic(const char *str); 21 22 int kprintf(const char *fmt, ...); 23 NO_RETURN void Debug_Assert(const char *fmt, ...); 24 25 #define static_assert _Static_assert 26 27 // Alert 28 #define Alert(_module, _format, ...) kprintf(#_module ": " _format, ##__VA_ARGS__) 29 // Warning 30 #define Warning(_module, _format, ...) kprintf(#_module ": " _format, ##__VA_ARGS__) 31 // Normal Logging 32 #define Log(_module, _format, ...) \ 33 if (SYSCTL_GETINT(log_##_module) >= 1) { \ 34 kprintf(#_module ": " _format, ##__VA_ARGS__); \ 35 } 36 // Debug Logging 37 #define DLOG(_module, _format, ...) \ 38 if (SYSCTL_GETINT(log_##_module) >= 5) { \ 39 kprintf(#_module ": " _format, ##__VA_ARGS__); \ 40 } 41 // Verbose Logging 42 #define VLOG(_module, _format, ...) \ 43 if (SYSCTL_GETINT(log_##_module) >= 10) { \ 44 kprintf(#_module ": " _format, ##__VA_ARGS__); \ 45 } 46 47 #endif /* __KASSERT_H__ */ 48 49