21 lines
607 B
C
21 lines
607 B
C
/* See COPYRIGHT for copyright information. */
|
|
|
|
#ifndef JOS_INC_ASSERT_H
|
|
#define JOS_INC_ASSERT_H
|
|
|
|
#include <inc/stdio.h>
|
|
|
|
void _warn(const char*, int, const char*, ...);
|
|
void _panic(const char*, int, const char*, ...) __attribute__((noreturn));
|
|
|
|
#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 /* !JOS_INC_ASSERT_H */
|