|
|
Line 1,275: |
Line 1,275: |
|
| |
|
| Lastly, the kernel disables the specified (B/W)RP, then writes the value parameter / loaded contextID to the (B/W)VR, then writes the input control value to the (B/W)CR. | | Lastly, the kernel disables the specified (B/W)RP, then writes the value parameter / loaded contextID to the (B/W)VR, then writes the input control value to the (B/W)CR. |
|
| |
| = Threads =
| |
| For svcCreateThread the input address used for Entrypoint_Param and StackTop are normally the same, however these can be arbitrary. For the main thread the Entrypoint_Param is value 0.
| |
|
| |
| Using CloseHandle() with a KThread handle will terminate the specified thread, only if the reference count reaches 0.
| |
|
| |
| Lower priority values give the thread higher priority. For userland apps, priorities between 0x18 and 0x3F are allowed. The priority of the app's main thread seems to be 0x30.
| |
|
| |
| The thread scheduler is cooperative, therefore if a thread takes up all the CPU time (for example if it enters an endless loop), all the other threads that run on the same CPU core won't get a chance to run. The main way of yielding another thread is using an address arbiter.
| |
|
| |
|
| = Memory Mapping = | | = Memory Mapping = |