Difference between revisions of "KThreadLocalPage"

From 3dbrew
Jump to navigation Jump to search
(Created page with "Category:Kernel objects Size : 0x18 bytes {| class="wikitable" border="1" |- ! Offset ! Type ! Description |- | 0x0 | | |- |}")
 
(add information)
 
(3 intermediate revisions by the same user not shown)
Line 11: Line 11:
 
|-
 
|-
 
| 0x0
 
| 0x0
|  
+
| u32
|  
+
| Pointer to memory page used for thread local regions for threads owned by a given process
 
|-
 
|-
 +
| 0x4
 +
| KProcess*
 +
| Owner process
 +
|-
 +
| 0x8
 +
| u32
 +
| Number of threads owned by the process
 +
|-
 +
| 0xC
 +
| char[8]
 +
| Used to track the usage of thread local regions in the local page.
 +
|-
 +
| 0x14
 +
| u32
 +
| Zero
 
|}
 
|}
 +
 +
 +
The 8-byte array used to track the regions in use in the page works like so:
 +
 +
Each char is either 1 or 0, and there's one char per thread local region.  0x200 bytes per region * 8 regions is 0x1000 bytes or 1 full page.  The chars are set to 1 to indicate the region is unused and 0 to indicate the region is in use.
 +
 +
Processes with more than 8 threads have multiple associated KThreadLocalPages which are linked together with KLinkedListNodes.

Latest revision as of 10:11, 31 January 2015


Size : 0x18 bytes

Offset Type Description
0x0 u32 Pointer to memory page used for thread local regions for threads owned by a given process
0x4 KProcess* Owner process
0x8 u32 Number of threads owned by the process
0xC char[8] Used to track the usage of thread local regions in the local page.
0x14 u32 Zero


The 8-byte array used to track the regions in use in the page works like so:

Each char is either 1 or 0, and there's one char per thread local region. 0x200 bytes per region * 8 regions is 0x1000 bytes or 1 full page. The chars are set to 1 to indicate the region is unused and 0 to indicate the region is in use.

Processes with more than 8 threads have multiple associated KThreadLocalPages which are linked together with KLinkedListNodes.