Files
Custom-Operating-System/kernel/include/libkern/kassert.h

36 lines
1.2 KiB
C

#ifndef _KERNEL_LIBKERN_KASSERT_H
#define _KERNEL_LIBKERN_KASSERT_H
#include <libkern/c_attrs.h>
#include <libkern/log.h>
#include <libkern/types.h>
#include <platform/generic/system.h>
#include <platform/generic/tasking/trapframe.h>
void assert_handler(const char* cond, const char* func, const char* file, int line) NORETURN;
#define ASSERT(x) \
if (unlikely(!(x))) { \
assert_handler(#x, __func__, __FILE__, __LINE__); \
}
#ifdef DEBUG_KERNEL
#define DEBUG_ASSERT(x) \
if (unlikely(!(x))) { \
assert_handler(#x, __func__, __FILE__, __LINE__); \
}
#else
#undef DEBUG_ASSERT
#define DEBUG_ASSERT(x)
#endif
#define __IMPL_SASSERT_PASTE(a, b) a##b
#define __IMPL_SASSERT_LINE(predicate, line, file) \
typedef char __IMPL_SASSERT_PASTE(assertion_failed_##file##_, line)[2 * !!(predicate)-1]
#define STATIC_ASSERT(predicate, file) __IMPL_SASSERT_LINE(predicate, __LINE__, file)
void kpanic(const char* msg) NORETURN;
void kpanic_tf(const char* err_msg, trapframe_t* tf) NORETURN;
#endif // _KERNEL_LIBKERN_KASSERT_H