summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/KPC.cc
blob: 9e0e134ef6023bfc1406b02a1af6c909e14d3f87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/* -------------------------------------------

	Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved.

------------------------------------------- */

#include <KernelKit/KPC.h>
#include <NewKit/KernelPanic.h>
#include <KernelKit/MemoryMgr.h>

namespace Kernel
{
	STATIC Bool kRaiseOnBugCheck = false;

	/// @brief Does a system wide bug check.
	/// @param void no params are needed.
	/// @return if error-free: false, otherwise true.
	Boolean err_bug_check_raise(Void) noexcept
	{
		Char* ptr = new Char[512];

		if (ptr == nullptr)
			goto bug_check_fail;

		if (!mm_is_valid_heap(ptr))
			goto bug_check_fail;

		delete[] ptr;

		return Yes;

	bug_check_fail:
		if (ptr)
			delete[] ptr;

		ptr = nullptr;

		if (kRaiseOnBugCheck)
		{
			ke_panic(RUNTIME_CHECK_BAD_BEHAVIOR);
		}

		return No;
	}
} // namespace Kernel