Changes

no edit summary
Line 1: Line 1:  +
PM has a separate thread that is waiting for synchronization on process handles.
 +
 +
When the kernel signals a process handle, it uses svcResetSignal on the process handle and then it uses svcGetProcessInfo to read out the ProcessState.
 +
 +
If the process moved state non-3 -> 3 it clears bit4 in process flags.
 +
 +
If process flags has mask 8 set:
 +
* If new state is 2, it clears 0x20 and sets 0x10 in process flags, and signals the ProcessEventWaiter handle.
 +
* If new state is 4, it clears 0x20 and sets 0x10 in process flags, and signals the ProcessEventWaiter handle.
 +
* If new state is 7, it sets 0x30 in process flags, and signals the ProcessEventWaiter handle.
 +
 +
If process flags has mask 1 set:
 +
* If new state is 6, it signals the ProcessEventWaiter handle.
 +
 +
If mask 1 is not set, it immediately does what is otherwise done by the [[#FinalizeDeadProcess]] command.
 +
 
= pm:bm =
 
= pm:bm =
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"