Starting on sync object rewrite #3

This commit is contained in:
wheremyfoodat 2023-04-18 03:14:25 +03:00
parent 517d1abee8
commit c6c45408fe
4 changed files with 43 additions and 4 deletions

View file

@ -147,6 +147,7 @@ Handle Kernel::makeThread(u32 entrypoint, u32 initialSP, u32 priority, s32 id, u
t.status = status;
t.handle = ret;
t.waitingAddress = 0;
t.threadsWaitingForTermination = 0; // Thread just spawned, no other threads waiting for it to terminate
t.cpsr = CPSR::UserMode | (isThumb ? CPSR::Thumb : 0);
t.fpscr = FPSCR::ThreadDefault;
@ -310,6 +311,10 @@ void Kernel::exitThread() {
t.status = ThreadStatus::Dead;
aliveThreadCount--;
// Check if any threads are sleeping, waiting for this thread to terminate, and wake them up
if (t.threadsWaitingForTermination != 0)
Helpers::panic("TODO: Implement threads sleeping until another thread terminates");
switchToNextThread();
}