NeKernel dev
Loading...
Searching...
No Matches
KernelPanic.h
Go to the documentation of this file.
1
2/* ========================================
3
4 Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
5
6======================================== */
7
8#pragma once
9
10#include <NeKit/Config.h>
11
13#define STATIC_PASS(EXPR, MSG) static_assert(EXPR, MSG)
14
15#ifdef TRY
16#undef TRY
17#endif
18
19#define TRY(X) \
20 { \
21 auto FN__ = X; \
22 if ((FN__()) == NO) { \
23 MUST_PASS(NO); \
24 } \
25 }
26
27#ifdef __MUST_PASS
28#undef __MUST_PASS
29#endif
30
31#define __MUST_PASS(EXPR, FILE, LINE) Kernel::ke_runtime_check(EXPR, FILE, STRINGIFY(LINE))
32
33#ifdef __DEBUG__
34#define MUST_PASS(EXPR) __MUST_PASS((EXPR), __FILE__, __LINE__)
35#define assert(EXPR) MUST_PASS(EXPR)
36#else
37#define MUST_PASS(EXPR) (Kernel::Void)(EXPR)
38#define assert(EXPR) (Kernel::Void)(EXPR)
39#endif
40
61
63
64namespace Kernel {
65void ke_runtime_check(bool expr, const Char* file, const Char* line);
66void ke_panic(const Int32& id, const Char* message = nullptr);
67} // namespace Kernel
enum RUNTIME_CHECK RTL_RUNTIME_CHECK
Definition KernelPanic.h:62
RUNTIME_CHECK
Definition KernelPanic.h:41
@ RUNTIME_CHECK_BAD_BEHAVIOR
Definition KernelPanic.h:52
@ RUNTIME_CHECK_BOOTSTRAP
Definition KernelPanic.h:53
@ RUNTIME_CHECK_EXPRESSION
Definition KernelPanic.h:44
@ RUNTIME_CHECK_HANDSHAKE
Definition KernelPanic.h:48
@ RUNTIME_CHECK_FAILED
Definition KernelPanic.h:42
@ RUNTIME_CHECK_FILE
Definition KernelPanic.h:45
@ RUNTIME_CHECK_POINTER
Definition KernelPanic.h:43
@ RUNTIME_CHECK_PROCESS
Definition KernelPanic.h:51
@ RUNTIME_CHECK_VIRTUAL_OUT_OF_MEM
Definition KernelPanic.h:56
@ RUNTIME_CHECK_ACPI
Definition KernelPanic.h:49
@ RUNTIME_CHECK_COUNT
Definition KernelPanic.h:59
@ RUNTIME_CHECK_FILESYSTEM
Definition KernelPanic.h:55
@ RUNTIME_CHECK_UNEXCPECTED
Definition KernelPanic.h:54
@ RUNTIME_CHECK_INVALID
Definition KernelPanic.h:58
@ RUNTIME_CHECK_TLS
Definition KernelPanic.h:47
@ RUNTIME_CHECK_PAGE
Definition KernelPanic.h:57
@ RUNTIME_CHECK_IPC
Definition KernelPanic.h:46
@ RUNTIME_CHECK_INVALID_PRIVILEGE
Definition KernelPanic.h:50
UPS inline definitions.
Definition Device.h:12
Void ke_panic(const Kernel::Int32 &id, const Char *message)
Stops execution of the kernel.
Definition HalKernelPanic.cc:32
char Char
Definition Config.h:51
__INT32_TYPE__ Int32
Definition Config.h:38
void ke_runtime_check(bool expr, const Char *file, const Char *line)
Definition HalKernelPanic.cc:48