From 84b9f6bdf09e1049e5703c20101c5dd0f740e27a Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 22 Oct 2022 19:05:39 +0300 Subject: [PATCH] KernelShutdownThread stub --- KThread.cpp | 13 +++++++++++++ Tasking/Task.cpp | 2 ++ kernel.h | 2 ++ 3 files changed, 17 insertions(+) diff --git a/KThread.cpp b/KThread.cpp index 0c8b8d1..333b8fb 100644 --- a/KThread.cpp +++ b/KThread.cpp @@ -1,8 +1,21 @@ #include "kernel.h" +#include + void KernelMainThread() { KPrint("Kernel main thread started!"); // asm("int $0x1"); CPU::Stop(); } + +void KernelShutdownThread(bool Reboot) +{ + KPrint("Kernel shutdown thread started!"); + if (Reboot) + PowerManager->Reboot(); + else + PowerManager->Shutdown(); + + CPU::Stop(); +} diff --git a/Tasking/Task.cpp b/Tasking/Task.cpp index e6183b1..5e81a5c 100644 --- a/Tasking/Task.cpp +++ b/Tasking/Task.cpp @@ -27,6 +27,8 @@ namespace Tasking { extern "C" void OneShot(int TimeSlice) { + if (TimeSlice == 0) + TimeSlice = 10; #if defined(__amd64__) ((APIC::Timer *)Interrupts::apicTimer[GetCurrentCPU()->ID])->OneShot(CPU::x64::IRQ16, TimeSlice); #elif defined(__i386__) diff --git a/kernel.h b/kernel.h index 4a8cde4..8a987d4 100644 --- a/kernel.h +++ b/kernel.h @@ -25,6 +25,8 @@ extern Tasking::Task *TaskManager; EXTERNC void KPrint(const char *format, ...); EXTERNC void Entry(struct BootInfo *Info); + EXTERNC void KernelMainThread(); +EXTERNC void KernelShutdownThread(bool Reboot); #endif // !__FENNIX_KERNEL_KERNEL_H__