Changes

Jump to navigation Jump to search
729 bytes added ,  15:13, 20 March 2016
Couldn't find this info anywhere. If it was already somewhere else, at least it's discoverable now :p
Line 1: Line 1: −
Each thread is given a 0x200-byte thread-local-storage block by the kernel. It is used during [[IPC_Command_Structure|IPC communications]].
+
Each thread is given a 0x200-byte thread-local-storage block by the kernel. It is used during [[IPC_Command_Structure|IPC communications]]. Each [[KProcess]] has a linked list of [[KThreadLocalPage]] objects and each object has a pointer to a page(0x1000 bytes) of FCRAM, which is used for up to 8 thread-local-storage blocks. The [[KThreadLocalPage]] is used to track which thread-local-storage blocks are used so it can allocate new ones as new threads are created.  
    +
A pointer to the thread-local-storage can be read using the ARM instruction:
 +
mrc        15, 0, rX, cr13, cr0, 3
 +
 +
Every application has RW access to its thread-local-storage.
 +
 +
The kernel requires the application to put IPC parameters and IPC static buffers inside the thread-local-storage:
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 17: Line 23:  
| 0x180
 
| 0x180
 
| 0x80
 
| 0x80
| IPC static buffers
+
| IPC static buffers: 16 pairs of a [[IPC|static buffer translation descriptor]] (specifying the buffer size) and a buffer pointer
 
|}
 
|}
549

edits

Navigation menu