Process Manager services: Difference between revisions
No edit summary |
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" |