Memory Management
How The Kernel Allocates And Tracks Memory
MemoryBlockHeader
Size : 0xC bytes
| Offset | Type | Description |
|---|---|---|
| 0x0 | u32 | Size in pages |
| 0x4 | MemoryBlockHeader* | Next |
| 0x8 | MemoryBlockHeader* | Prev |
RegionDescriptor
Size : 0x10 bytes
| Offset | Type | Description |
|---|---|---|
| 0x0 | MemoryBlockHeader* | |
| 0x4 | MemoryBlockHeader* | |
| 0x8 | u32 | Region start |
| 0xC | u32 | Region size |
FCRAM Region Descriptor
Size : 0x50 bytes
| Offset | Type | Description |
|---|---|---|
| 0x0 | RegionDescriptor | RegionDescriptor for app memory |
| 0x10 | RegionDescriptor | RegionDescriptor for sys memory |
| 0x20 | RegionDescriptor | RegionDescriptor for base memory |
| 0x30 | u32 | Ptr to start of FCRAM region descriptor |
| 0x34 | u32 | FCRAM start |
| 0x38 | u32 | FCRAM size in pages |
| 0x3C | u32 | Base memory start in FCRAM |
| 0x40 | u32 | Count of physical FCRAM used by the kernel, in bytes. (used by svcGetSystemInfo) |
| 0x44 | u32 | ? |
| 0x48 | KThread* | Thread operating on region data |
| 0x4C | s16 | Error info for thread listed above |
| 0x4E | u16 | Alignment |