From cd0a470e1d8d6b978bd01e694bd95d56850c89d7 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 23 Apr 2023 07:50:09 +0300 Subject: [PATCH] Fix a bug where GetCurrentProcess returned null inside DSDT --- .../amd64/DifferentiatedSystemDescriptionTable.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Architecture/amd64/DifferentiatedSystemDescriptionTable.cpp b/Architecture/amd64/DifferentiatedSystemDescriptionTable.cpp index 3515ba5..545fbae 100644 --- a/Architecture/amd64/DifferentiatedSystemDescriptionTable.cpp +++ b/Architecture/amd64/DifferentiatedSystemDescriptionTable.cpp @@ -79,7 +79,12 @@ namespace ACPI else if (Event & ACPI_POWER_BUTTON) { if (TaskManager) - TaskManager->CreateThread(TaskManager->GetCurrentProcess(), (Tasking::IP)KST_Shutdown); + { + Tasking::PCB *ParentProcess = TaskManager->GetCurrentProcess(); + if (!ParentProcess) + ParentProcess = GetCPU(0)->CurrentProcess.load(); + TaskManager->CreateThread(ParentProcess, (Tasking::IP)KST_Shutdown); + } else KernelShutdownThread(false); }