Starting on sync object rewrite #3
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user