Line 16: |
Line 16: |
| | [[IPC_Marshalling|IPC]] command buffer. | | | [[IPC_Marshalling|IPC]] command buffer. |
| |- | | |- |
− | | [8.0.0+] 0x100 | + | | 0x100 |
| | 0x2 | | | 0x2 |
− | | DisableCounter | + | | [8.0.0+] DisableCounter |
| | If userland sets this to non-zero, kernel will pin the thread and disallow calls to almost all SVCs. | | | If userland sets this to non-zero, kernel will pin the thread and disallow calls to almost all SVCs. |
| |- | | |- |
− | | [8.0.0+] 0x102 | + | | 0x102 |
| | 0x2 | | | 0x2 |
− | | InterruptFlag | + | | [8.0.0+] InterruptFlag |
| | If a context switch would have occurred when user disable count was non-zero, kernel will set this to 1. This signifies that the user must call [[SVC#SynchronizePreemptionState|SynchronizePreemptionState]] to unpin itself and regain access other SVCs. | | | If a context switch would have occurred when user disable count was non-zero, kernel will set this to 1. This signifies that the user must call [[SVC#SynchronizePreemptionState|SynchronizePreemptionState]] to unpin itself and regain access other SVCs. |
| |- | | |- |
| | 0x104 | | | 0x104 |
− | | 0x4 | + | | 0x1 |
− | | Reserved | + | | [14.0.0+] CacheMaintenanceFlag |
| | | | | |
| |- | | |- |
− | | 0x108 | + | | 0x105 |
− | | 0x78 | + | | 0x7B |
| | Reserved | | | Reserved |
| | | | | |
Line 69: |
Line 69: |
| | 0x8 | | | 0x8 |
| | ThreadType | | | ThreadType |
− | | Pointer to [[Thread_Local_Region#ThreadType|thread type]]. | + | | Pointer to [[#ThreadType|thread type]]. |
| |} | | |} |
| | | |
| = Userland context = | | = Userland context = |
− | == OsBootParamter == | + | == OsResourceManager == |
− | This is "nn::os::detail::g_OsBootParamter". | + | This is "nn::os::detail::OsResourceManager". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 83: |
Line 83: |
| ! Description | | ! Description |
| |- | | |- |
− | | 0x00 | + | | 0x0 |
− | | 0x04 | + | | 0x14 |
− | | | + | | [[#RngManager|RngManager]] |
− | | Main thread handle. | + | | |
| + | |- |
| + | | 0x14 |
| + | | 0x4 |
| + | | Reserved |
| + | | |
| + | |- |
| + | | 0x18 |
| + | | 0x28 |
| + | | [[#AslrSpaceManager|AslrSpaceManager]] |
| + | | |
| + | |- |
| + | | 0x40 |
| + | | 0x28 |
| + | | [[#StackGuardManager|StackGuardManager]] |
| + | | |
| + | |- |
| + | | 0x68 |
| + | | 0x1F0 |
| + | | [[#ThreadManager|ThreadManager]] |
| + | | |
| + | |- |
| + | | 0x258 |
| + | | 0x110 |
| + | | [[#TlsManager|TlsManager]] |
| + | | |
| + | |- |
| + | | 0x368 |
| + | | 0x1 |
| + | | [[#TickManager|TickManager]] |
| + | | |
| |- | | |- |
− | | 0x04 | + | | 0x369 |
− | | 0x04 | + | | 0x7 |
− | | | + | | Reserved |
− | | Always 0. | + | | |
| |- | | |- |
− | | 0x08 | + | | 0x370 |
| | 0x30 | | | 0x30 |
− | | | + | | [[#MemoryHeapManager|MemoryHeapManager]] |
− | | Empty. | + | | |
| + | |- |
| + | | 0x3A0 |
| + | | 0x48 |
| + | | [[#VammManager|VammManager]] |
| + | | |
| |} | | |} |
| | | |
− | == OsResourceManagerStorage == | + | === RngManager === |
− | This is "nn::os::detail::g_OsResourceManagerStorage". | + | This is "nn::os::detail::RngManager". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 109: |
Line 144: |
| ! Description | | ! Description |
| |- | | |- |
− | | 0x00 | + | | 0x0 |
− | | 0x04 | + | | 0x4 |
− | | | + | | CriticalSection |
− | | Always 0. | + | | |
| |- | | |- |
− | | 0x04 | + | | 0x4 |
| | 0x10 | | | 0x10 |
− | | | + | | Random |
− | | Process PRNG. | + | | |
| + | |} |
| + | |
| + | === AslrSpaceManager === |
| + | This is "nn::os::detail::AslrSpaceManager". |
| + | |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | 0x14
| + | ! Offset |
− | | 0x04
| + | ! Size |
− | |
| + | ! Name |
− | | Padding.
| + | ! Description |
| |- | | |- |
− | | 0x18 | + | | 0x0 |
− | | 0x08 | + | | 0x20 |
− | | | + | | [[#AddressSpaceAllocator|Allocator]] |
− | | Always set to 0. | + | | |
| |- | | |- |
| | 0x20 | | | 0x20 |
− | | 0x08 | + | | 0x1 |
− | | | + | | Impl |
− | | [[SVC#GetInfo|AddressSpaceStart]] right shifted by 0x0C. | + | | |
| + | |- |
| + | | 0x21 |
| + | | 0x7 |
| + | | Reserved |
| + | | |
| + | |} |
| + | |
| + | === StackGuardManager === |
| + | This is "nn::os::detail::StackGuardManager". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Name |
| + | ! Description |
| |- | | |- |
− | | 0x28 | + | | 0x0 |
− | | 0x08 | + | | 0x20 |
− | | | + | | [[#AddressSpaceAllocator|Allocator]] |
− | | AddressSpaceEnd ([[SVC#GetInfo|AddressSpaceStart]] + [[SVC#GetInfo|AddressSpaceSize]]) right shifted by 0x0C and aligned to AddressSpaceAlign.
| + | | |
| |- | | |- |
− | | 0x30 | + | | 0x20 |
− | | 0x08 | + | | 0x1 |
− | | | + | | Impl |
− | | AddressSpaceAlign right shifted by 0x0C. | + | | |
| |- | | |- |
− | | 0x38 | + | | 0x21 |
− | | 0x08 | + | | 0x7 |
− | | | + | | Reserved |
− | | Always 0. | + | | |
| + | |} |
| + | |
| + | === ThreadManager === |
| + | This is "nn::os::detail::ThreadManager". |
| + | |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | 0x40
| + | ! Offset |
− | | 0x08
| + | ! Size |
− | |
| + | ! Name |
− | | Always set to 0.
| + | ! Description |
| |- | | |- |
− | | 0x48 | + | | 0x0 |
− | | 0x08 | + | | 0x1 |
− | | | + | | Impl |
− | | [[SVC#GetInfo|MapRegionBased]] right shifted by 0x0C. | + | | |
| |- | | |- |
− | | 0x50 | + | | 0x1 |
− | | 0x08 | + | | 0x7 |
− | | | + | | Reserved |
− | | MapRegionEnd ([[SVC#GetInfo|MapRegionBased]] + [[SVC#GetInfo|MapRegionSize]]) right shifted by 0x0C and aligned to MapRegionAlign. | + | | |
| |- | | |- |
− | | 0x58 | + | | 0x8 |
− | | 0x08 | + | | 0x1C0 |
− | | | + | | [[#ThreadType|MainThread]] |
− | | MapRegionAlign right shifted by 0x0C. | + | | |
| |- | | |- |
− | | 0x60 | + | | 0x1C8 |
− | | 0x08 | + | | 0x4 |
− | | | + | | CriticalSection |
− | | Always 0. | + | | |
| |- | | |- |
− | | 0x68 | + | | 0x1CC |
− | | 0x08 | + | | 0x4 |
− | | | + | | Reserved |
− | | Always 0. | + | | |
| |- | | |- |
− | | 0x70
| |
| | 0x1D0 | | | 0x1D0 |
− | | | + | | 0x10 |
− | | Main [[Thread_Local_Region#ThreadType|thread type]]. | + | | AllThreadsList |
| + | | |
| + | |- |
| + | | 0x1E0 |
| + | | 0x8 |
| + | | TotalThreadStackSize |
| + | | |
| + | |- |
| + | | 0x1E8 |
| + | | 0x4 |
| + | | NumCreatedThreads |
| + | | |
| + | |- |
| + | | 0x1EC |
| + | | 0x4 |
| + | | Reserved |
| + | | |
| + | |} |
| + | |
| + | === TlsManager === |
| + | This is "nn::os::detail::TlsManager". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Name |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x4 |
| + | | NumUsedTlsSlots |
| + | | |
| + | |- |
| + | | 0x4 |
| + | | 0x4 |
| + | | Reserved |
| + | | |
| + | |- |
| + | | 0x8 |
| + | | 0x100 |
| + | | TlsDestructorArray |
| + | | |
| + | |- |
| + | | 0x108 |
| + | | 0x4 |
| + | | TlsCriticalSection |
| + | | |
| + | |- |
| + | | 0x10C |
| + | | 0x4 |
| + | | Reserved |
| + | | |
| + | |} |
| + | |
| + | === TickManager === |
| + | This is "nn::os::detail::TickManager". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Name |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x1 |
| + | | Impl |
| + | | |
| + | |} |
| + | |
| + | === MemoryHeapManager === |
| + | This is "nn::os::detail::MemoryHeapManager". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Name |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | HeapAddress |
| + | | |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | HeapSize |
| + | | |
| + | |- |
| + | | 0x10 |
| + | | 0x8 |
| + | | UsedHeapSize |
| + | | |
| + | |- |
| + | | 0x18 |
| + | | 0x10 |
| + | | FreeMemoryList |
| + | | |
| + | |- |
| + | | 0x28 |
| + | | 0x4 |
| + | | CriticalSection |
| + | | |
| + | |- |
| + | | 0x2C |
| + | | 0x4 |
| + | | Impl |
| + | | |
| + | |} |
| + | |
| + | === VammManager === |
| + | This is "nn::os::detail::VammManager". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Name |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | ReservedRegionAddress |
| + | | |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | ReservedRegionSize |
| + | | |
| |- | | |- |
− | | 0x240 | + | | 0x10 |
− | | 0x08 | + | | 0x30 |
− | | | + | | ReaderWriterLock |
− | | Pointer to main [[Thread_Local_Region#ThreadType|thread type]]. | + | | |
| |- | | |- |
− | | 0x248 | + | | 0x40 |
− | | 0x08 | + | | 0x8 |
− | | | + | | RegionManager |
− | | Unknown. | + | | |
| + | |} |
| + | |
| + | === AddressSpaceAllocator === |
| + | This is "nn::os::detail::AddressSpaceAllocator". |
| + | |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | 0x250
| + | ! Offset |
− | | 0x08
| + | ! Size |
− | |
| + | ! Name |
− | | Unknown.
| + | ! Description |
| |- | | |- |
− | | 0x258 | + | | 0x0 |
− | | 0x130 | + | | 0x4 |
− | | | + | | CriticalSection |
− | | Always empty? | + | | |
| |- | | |- |
− | | 0x388 | + | | 0x4 |
− | | 0x08 | + | | 0x4 |
− | | | + | | Reserved |
− | | Pointer to [[Thread_Local_Region#OsResourceManagerStorage|resource manager storage]] + 0x388. | + | | |
| |- | | |- |
− | | 0x390 | + | | 0x8 |
− | | 0x08 | + | | 0x8 |
− | | | + | | BeginPage |
− | | Pointer to [[Thread_Local_Region#OsResourceManagerStorage|resource manager storage]] + 0x388. | + | | |
| |- | | |- |
− | | 0x398 | + | | 0x10 |
− | | 0x08 | + | | 0x8 |
− | | | + | | EndPage |
− | | Always 0. | + | | |
| |- | | |- |
− | | 0x3A0 | + | | 0x18 |
− | | 0x08 | + | | 0x8 |
− | | | + | | GuardPageCount |
− | | Always 0. | + | | |
| |} | | |} |
| | | |