From f5f363d2a2b973380b5b95aacb2f4b7f550c3ef1 Mon Sep 17 00:00:00 2001 From: Amlal EL Mahrouss Date: Fri, 26 Jul 2024 19:40:07 +0200 Subject: [WIP] Recover method before shutting down. Signed-off-by: Amlal EL Mahrouss --- Kernel/Modules/ACPI/ACPIFactoryInterface.hxx | 9 +++++---- Kernel/NewKit/KernelCheck.hpp | 8 +++----- Kernel/Sources/KernelCheck.cxx | 13 +++++++++++-- 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 #include +#include +#include #include #include @@ -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 #include #include +#include +#include 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) { -- cgit v1.2.3