From 3d5f1ea517b4af9b86e2ad63ea472828556e9bf4 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Wed, 2 Aug 2023 19:18:15 +0300 Subject: [PATCH] [Kernel] Add evalReschedule function --- include/kernel/kernel.hpp | 7 +++++++ src/core/kernel/kernel.cpp | 5 +---- src/emulator.cpp | 2 ++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/kernel/kernel.hpp b/include/kernel/kernel.hpp index 23764dc0..99687ee1 100644 --- a/include/kernel/kernel.hpp +++ b/include/kernel/kernel.hpp @@ -172,6 +172,13 @@ public: void requireReschedule() { needReschedule = true; } + void evalReschedule() { + if (needReschedule) { + needReschedule = false; + rescheduleThreads(); + } + } + Handle makeObject(KernelObjectType type) { if (handleCounter > KernelHandles::Max) [[unlikely]] { Helpers::panic("Hlep we somehow created enough kernel objects to overflow this thing"); diff --git a/src/core/kernel/kernel.cpp b/src/core/kernel/kernel.cpp index a8cf40a1..c48c8f18 100644 --- a/src/core/kernel/kernel.cpp +++ b/src/core/kernel/kernel.cpp @@ -62,10 +62,7 @@ void Kernel::serviceSVC(u32 svc) { default: Helpers::panic("Unimplemented svc: %X @ %08X", svc, regs[15]); break; } - if (needReschedule) { - needReschedule = false; - rescheduleThreads(); - } + evalReschedule(); } void Kernel::setVersion(u8 major, u8 minor) { diff --git a/src/emulator.cpp b/src/emulator.cpp index fd5efe6b..2e7cd521 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -357,6 +357,8 @@ void Emulator::run() { hid.updateInputs(cpu.getTicks()); } + // TODO: Should this be uncommented? + // kernel.evalReschedule(); // Update inputs in the HID module SDL_GL_SwapWindow(window);