summaryrefslogtreecommitdiffhomepage
path: root/Kernel
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel')
-rw-r--r--Kernel/Modules/ACPI/ACPIFactoryInterface.hxx9
-rw-r--r--Kernel/NewKit/KernelCheck.hpp8
-rw-r--r--Kernel/Sources/KernelCheck.cxx13
3 files changed, 19 insertions, 11 deletions
diff --git a/Kernel/Modules/ACPI/ACPIFactoryInterface.hxx b/Kernel/Modules/ACPI/ACPIFactoryInterface.hxx
index 2977ff2e..8372e1d7 100644
--- a/Kernel/Modules/ACPI/ACPIFactoryInterface.hxx
+++ b/Kernel/Modules/ACPI/ACPIFactoryInterface.hxx
@@ -4,11 +4,12 @@
------------------------------------------- */
-#ifndef __ACPI_MANAGER__
-#define __ACPI_MANAGER__
+#ifndef __MOD_ACPI_HXX__
+#define __MOD_ACPI_HXX__
-#include <Modules/ACPI/ACPI.hxx>
#include <KernelKit/DebugOutput.hpp>
+#include <Modules/ACPI/ACPI.hxx>
+#include <NewKit/ErrorOr.hpp>
#include <NewKit/Defines.hpp>
#include <NewKit/Ref.hxx>
@@ -56,4 +57,4 @@ namespace Kernel
};
} // namespace Kernel
-#endif // !__ACPI_MANAGER__
+#endif // !__MOD_ACPI_HXX__
diff --git a/Kernel/NewKit/KernelCheck.hpp b/Kernel/NewKit/KernelCheck.hpp
index f069b63b..ed74e38f 100644
--- a/Kernel/NewKit/KernelCheck.hpp
+++ b/Kernel/NewKit/KernelCheck.hpp
@@ -40,13 +40,11 @@ enum RUNTIME_CHECK
namespace Kernel
{
- class DumpManager final
+ /// @brief Dumping factory class.
+ class RecoveryFactory final
{
public:
- static void Dump(void)
- {
- // TODO:
- }
+ STATIC Void Recover() noexcept;
};
void ke_stop(const Int& id);
diff --git a/Kernel/Sources/KernelCheck.cxx b/Kernel/Sources/KernelCheck.cxx
index cb7643f4..be2150ae 100644
--- a/Kernel/Sources/KernelCheck.cxx
+++ b/Kernel/Sources/KernelCheck.cxx
@@ -8,10 +8,12 @@
#include <KernelKit/DebugOutput.hpp>
#include <NewKit/KernelCheck.hpp>
#include <NewKit/String.hpp>
+#include <FirmwareKit/Handover.hxx>
+#include <Modules/ACPI/ACPIFactoryInterface.hxx>
EXTERN_C [[noreturn]] void ke_wait_for_debugger()
{
- while (true)
+ while (Yes)
{
#ifdef __NEWOS_AMD64__
Kernel::HAL::rt_cli();
@@ -88,12 +90,19 @@ namespace Kernel
}
};
- DumpManager::Dump();
+ RecoveryFactory::Recover();
#ifdef __DEBUG__
ke_wait_for_debugger();
#endif // ifdef __DEBUG__
}
+
+ Void RecoveryFactory::Recover() noexcept
+ {
+ PowerFactoryInterface powerInterface(kHandoverHeader->f_HardwareTables.f_VendorPtr);
+ powerInterface.Shutdown();
+ }
+
void ke_runtime_check(bool expr, const char* file, const char* line)
{