From 9532e694b39e1a7f6c718c6d60aa0183a2eedde2 Mon Sep 17 00:00:00 2001 From: wheremyfoodat Date: Sun, 23 Apr 2023 01:07:21 +0300 Subject: [PATCH] [Kernel] Acquiring threads --- src/core/kernel/threads.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/core/kernel/threads.cpp b/src/core/kernel/threads.cpp index 27f87b05..56bc60ca 100644 --- a/src/core/kernel/threads.cpp +++ b/src/core/kernel/threads.cpp @@ -205,6 +205,14 @@ void Kernel::sleepThreadOnArbiter(u32 waitingAddress) { // Acquires an object that is **ready to be acquired** without waiting on it void Kernel::acquireSyncObject(KernelObject* object, const Thread& thread) { switch (object->type) { + case KernelObjectType::Event: { + Event* e = object->getData(); + if (e->resetType == ResetType::OneShot) { // One-shot events automatically get cleared after waking up a thread + e->fired = false; + } + break; + } + case KernelObjectType::Mutex: { Mutex* moo = object->getData(); moo->locked = true; // Set locked to true, whether it's false or not because who cares @@ -215,13 +223,8 @@ void Kernel::acquireSyncObject(KernelObject* object, const Thread& thread) { break; } - case KernelObjectType::Event: { - Event* e = object->getData(); - if (e->resetType == ResetType::OneShot) { // One-shot events automatically get cleared after waking up a thread - e->fired = false; - } + case KernelObjectType::Thread: break; - } default: Helpers::panic("Acquiring unimplemented sync object %s", object->getTypeName()); }