[Krafton Jungle] PintOS
2.0.0
크래프톤 정글 PintOS
Loading...
Searching...
No Matches
debug.h
Go to the documentation of this file.
1
#ifndef __LIB_DEBUG_H
2
#define __LIB_DEBUG_H
3
4
/* GCC lets us add "attributes" to functions, function
5
* parameters, etc. to indicate their properties.
6
* See the GCC manual for details. */
7
#define UNUSED __attribute__ ((unused))
8
#define NO_RETURN __attribute__ ((noreturn))
9
#define NO_INLINE __attribute__ ((noinline))
10
#define PRINTF_FORMAT(FMT, FIRST) __attribute__ ((format (printf, FMT, FIRST)))
11
12
/* Halts the OS, printing the source file name, line number, and
13
* function name, plus a user-specific message. */
14
#define PANIC(...) debug_panic (__FILE__, __LINE__, __func__, __VA_ARGS__)
15
16
void
debug_panic
(
const
char
*
file
,
int
line,
const
char
*function,
17
const
char
*message, ...)
PRINTF_FORMAT
(4, 5)
NO_RETURN
;
18
void
debug_backtrace
(
void
);
19
20
#endif
21
22
23
24
/* This is outside the header guard so that debug.h may be
25
* included multiple times with different settings of NDEBUG. */
26
#undef ASSERT
27
#undef NOT_REACHED
28
29
#ifndef NDEBUG
30
#define ASSERT(CONDITION) \
31
if ((CONDITION)) { } else { \
32
PANIC ("assertion `%s' failed."
, #CONDITION); \
33
}
34
#define NOT_REACHED() PANIC ("executed an unreachable statement"
);
35
#else
36
#define ASSERT(CONDITION) ((void) 0)
37
#define NOT_REACHED() for (;;)
38
#endif
/* lib/debug.h */
PRINTF_FORMAT
#define PRINTF_FORMAT(FMT, FIRST)
Definition:
debug.h:10
debug_backtrace
void debug_backtrace(void)
Definition:
debug.c:13
debug_panic
void debug_panic(const char *file, int line, const char *function, const char *message,...) PRINTF_FORMAT(4
NO_RETURN
#define NO_RETURN
Definition:
debug.h:8
file
Definition:
file.c:7
include
lib
debug.h
Generated by
1.9.5