Kernel: Difference between revisions

From Nintendo Switch Brew
Jump to navigation Jump to search
No edit summary
Line 20: Line 20:
! Offset || Type || Description
! Offset || Type || Description
|-
|-
| 0 || [[#KAutoObject]] ||
| 0 || [[#KAutoObject]] || Inheritance
|-
|-
| 0x10 || u64 || ThreadSyncNum
| 0x10 || u64 || ThreadSyncNum
|-
|-
| 0x18 || [[#KLinkedListNode]] || ThreadSyncList
| 0x18 || [[#KLinkedListNode]] || ThreadSyncList
|}
= KRecursiveLock =
Size: 0x8
{| class="wikitable" border="1"
|-
! Offset || Type || Description
|-
| 0 || u64 || OwnerTag
|}
= KSpinLock =
Size: 0x1
{| class="wikitable" border="1"
|-
! Offset || Type || Description
|-
| 0 || u8 || IsBusy
|}
= KLockedList =
Size: 0x28
{| class="wikitable" border="1"
|-
! Offset || Type || Description
|-
| 0 || u64 || Count
|-
| 8 || [[#KLinkedListNode]] || List
|-
| 0x18 || [[#KRecursiveLock]] || Mutex
|-
| 0x20 || u64 || MaxCount
|}
|}


Line 50: Line 86:
! Description
! Description
|-
|-
| 0
| 0 || [[#KSynchronizationObject]] || Inheritance
| [[#KSynchronizationObject]]
|
|-
|-
| 0x28
| 0x28 || ||
|  
|  
|-
|-
| 0x38
| 0x38 || [[#KMemoryManager]] || MemoryManager
| [[#KProcessMm]]
| MemoryManager
|-
|-
| 0xF0
| 0xF0 || u64 || TotalMemUsage
| u64
| TotalMemUsage
|-
|-
| 0xF8
| 0xF8 || u64 || TlsPagesListCount
| u64
| TlsPagesListCount
|-
|-
| 0x100
| 0x100 || [[#KLinkedListNode]] || TlsPagesList
| [[#KLinkedListNode]]
| TlsPagesList
|-
|-
| 0x110
| 0x110 || s32 || DefaultCpuCore
| s32
| DefaultCpuCore
|-
|-
| 0x118
| 0x118 || KDebug* || Debug
| KDebug*
| Debug
|-
|-
| 0x120
| 0x120 || [[#KResourceLimit]]* || ResourceLimit
| [[#KResourceLimit]]*
| ResourceLimit
|-
|-
| 0x128
| 0x128 || u32 || State
| u32
| State
|-
|-
| 0x130
| 0x130 || [[#KRecursiveLock]] || ProcessMutex
| KRecursiveLock
| ProcessMutex
|-
|-
| 0x138
| 0x138 || [[#KRecursiveLock]] || ThreadingMutex
| KRecursiveLock
| ThreadingMutex
|-
|-
| 0x140
| 0x140 || [[#KLinkedListNode]]<[[#KThread]]> || ThreadArbiterList
| KLinkedListNode<KThread>
| ThreadArbiterList
|-
|-
| 0x150
| 0x150 || KLinkedListNode ||
| KLinkedListNode
|  
|-
|-
| 0x160
| 0x160 || u64[4] || RandomEntropy
| u64[4]
| RandomEntropy
|-
|-
| 0x180
| 0x180 || u8 || HasStateChanged
| u8
| HasStateChanged
|-
|-
| 0x181
| 0x181 || u8 || HasInitialized
| u8
| HasInitialized
|-
|-
| 0x182
| 0x182 || u8 || IsSystem
| u8
| From_CreateProcessInfo_0x24_Bit6
|-
|-
| 0x183
| 0x183 || u8[12] || From_CreateProcessInfo_0
| u8[12]
| From_CreateProcessInfo_0
|-
|-
| 0x18F
| 0x18F || u8 || InitiallyZero
| u8
| InitiallyZero
|-
|-
| 0x190
| 0x190 || u16 || NumberOfCreatedThreads
| u16
| NumberOfCreatedThreads
|-
|-
| 0x192
| 0x192 || u16 || ThreadingRelatedInitiallyZero
| u16
| ThreadingRelatedInitiallyZero
|-
|-
| 0x194
| 0x194 || u32 || ProcessFlags
| u32
| ProcessFlags
|-
|-
| 0x198
| 0x198 || [[#KProcessCapabilities]] || Capabilities
| [[#KProcessCapabilities]]
| Capabilities
|-
|-
| 0x248
| 0x248 || u64 || TitleId
| u64
| TitleId
|-
|-
| 0x250
| 0x250 || u64 || ProcessId
| u64
| ProcessId
|-
|-
| 0x258
| 0x258 || u64 || CreatedTickstamp
| u64
| CreatedTickstamp
|-
|-
| 0x260
| 0x260 || u64 || Entrypoint
| u64
| From_CreateProcessInfo_0x18
|-
|-
| 0x268
| 0x268 || u64 || CodeMemUsage
| u64
| CodeMemUsage
|-
|-
| 0x270
| 0x270 || u64 || DynamicMemUsage
| u64
| DynamicMemUsage
|-
|-
| 0x278
| 0x278 || u64 || MaxTotalMemUsage
| u64
| MaxTotalMemUsage
|-
|-
| 0x280
| 0x280 || u64 || From_CreateProcessInfo_0xC
| u64
| From_CreateProcessInfo_0xC
|-
|-
| 0x288
| 0x288 || [[#KProcessHandleTable]] || HandleTable
| [[#KProcessHandleTable]]
| HandleTable
|-
|-
| 0x528
| 0x528 || void* || UsermodeExceptionTlsArea
| void*
| UsermodeExceptionTlsArea
|-
|-
| 0x530
| 0x530 || [[#KLinkedListNode]]<[[#KThread]]> || ExceptionThreadList
| KLinkedListNode<KThread>
| ExceptionThreadList
|-
|-
| 0x540
| 0x540 || [[#KThread]]* || ExceptionThread
| KThread*
| ExceptionThread
|-
|-
| 0x548
| 0x548 || [[#KLinkedListNode]]<[[#KThread]]> || ThreadList
| KLinkedListNode<KThread>
| ThreadList
|-
|-
| 0x558
| 0x558 || u32 ||
| u32
|
|-
|-
| 0x55C
| 0x55C || u32 || HasStarted
| u32
| HasStarted
|-
|-
| 0x560
| 0x560 || u64[8] ||
| u64[8]
|
|-
|-
| 0x5A0
| 0x5A0 || u64 ||
| u64
|
|-
|-
| 0x5A8
| 0x5A8 || u64 ||
| u64
|
|}
|}


== KProcessMm ==
== KProcessCapabilities ==
Size: 0xB0
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 226: Line 180:
! Description
! Description
|-
|-
| 0
| 0 || u8[16] || SvcAccessMask
| *
| Vtable
|-
|-
| 8
| 0x10 || u8[128] || IrqAccessMask
| u64
| AddrSpaceMinAddr
|-
|-
| 0x10
| 0x90 || u64 || AllowedCpuIdBitmask
| u64
| AddrSpaceMaxAddr
|-
|-
| 0x18
| 0x98 || u64 || AllowedThreadPrioBitmask
| u64
| HeapRegionBaseAddr
|-
|-
| 0x20
| 0xA0 || u32 || DebuggingFlags (bit0: can be debugged, bit1: can debug others)
| u64
| HeapRegionEndAddr
|-
|-
| 0x28
| 0xA4 || u32 || HandleTableSize
| u64
| HeapCurAddr
|-
|-
| 0x30
| 0xA8 || u32 ||
| u64
| MapRegionBaseAddr
|-
|-
| 0x38
| 0xAC || u32 ||
| u64
|}
| MapRegionEnd
 
== KProcessHandleTable ==
Size: 0x2A0
 
{| class="wikitable" border="1"
|-
! Offset
! Type
! Description
|-
| 0 || [[#KHandleEntry]]* || TablePtr
|-
|-
| 0x40
| 8 || [[#KHandleEntry]]* || NextFreeEntry
| u64
| HeapMaxAllocation
|-
|-
| 0x48
| 0x10 || [[#KHandleEntry]][40] || InternalTable
| KRecursiveLock
| Mutex
|-
|-
| 0x50
| 0x290 || u16 || Size
|
|
|-
|-
| 0x60
| 0x292 || u16 ||
| [[#KMemoryBlock]]*
| MemoryBlockList
|-
|-
| ..
| 0x294 || u16 || IdCounter
| ..
|-
| ..
| 0x296 || u16 || NumActiveSlots
|-
| 0x298 || [[#KSpinLock]] || Lock
|}
|}


== KProcessCapabilities ==
=== KHandleEntry ===
Size: 0xB0
{| class="wikitable" border="1"
|-
! Offset
! Type
! Description
|-
| 0 || u16 || HandleId
|-
| 2 || u8 || ObjectType
|-
| 8 || [[#KAutoObject]]* || Object
|}
 
= KMemoryManager =
Size: 0xB8


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 288: Line 246:
! Description
! Description
|-
|-
| 0
| 0 || * || Vtable
| u8[16]
| SvcAccessMask
|-
|-
| 0x10
| 8 || u64 || AddrSpaceMinAddr
| u8[128]
| IrqAccessMask
|-
|-
| 0x90
| 0x10 || u64 || AddrSpaceMaxAddr
| u64
| AllowedCpuIdBitmask
|-
|-
| 0x98
| 0x18 || u64 || HeapRegionBaseAddr
| u64
| AllowedThreadPrioBitmask
|-
|-
| 0xA0
| 0x20 || u64 || HeapRegionEndAddr
| u32
| DebuggingFlags (bit0: can be debugged, bit1: can debug others)
|-
|-
| 0xA4
| 0x28 || u64 || HeapCurAddr
| u32
| HandleTableSize
|-
|-
| 0xA8
| 0x30 || u64 || MapRegionBaseAddr
| u32
|
|-
|-
| 0xAC
| 0x38 || u64 || MapRegionEnd
| u32
|-
|
| 0x40 || u64 || HeapMaxAllocation
|-
| 0x48 || [[#KRecursiveLock]] || Mutex
|-
| 0x50 || [[#KPageTable]] || PageTable
|-
| 0x60 || [[#KMemoryBlockManager]] || MemoryBlockManager
|-
| 0x78 || bool || IsKernel
|-
| 0x79 || bool || IsSystem
|-
| 0x7A || bool || IsAddrSpace36Bit
|-
| 0x7B || bool || HasAslr
|-
| 0x7C || u32 || Is_0x59_If_Cfg12_Bit0_ElseZero
|-
| 0x80 || u32 || Is_0x5A_If_Cfg12_Bit0_ElseZero
|-
| 0x84 || u32 || Is_0x58_If_Cfg12_Bit0_ElseZero
|-
| 0x88 || ||
|-
| 0x90 || ||
|-
| 0x98 || ||
|-
| 0xA0 || u64 || TranslationTableBaseRegister0
|-
| 0xA8 || u64 || TranslationControlRegister
|-
| 0xB0 || u8 || AsidTagValue
|}
|}


== KProcessHandleTable ==
== KPageTable ==
Size: 0x2A0
Size: 0x10


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 330: Line 306:
! Description
! Description
|-
|-
| 0
| 0 || void* || RawPageTablePtr
| [[#KHandleEntry]]*
| TablePtr
|-
| 8
| [[#KHandleEntry]]*
| NextFreeEntry
|-
| 0x10
| [[#KHandleEntry]][40]
| InternalTable
|-
| 0x290
| u16
| Size
|-
| 0x292
| u16
|
|-
| 0x294
| u16
| IdCounter
|-
|-
| 0x296
| 8 || bool ||
| u16
| NumActiveSlots
|-
|-
| 0x298
| 0xC || u32 || AddrSpaceSizeInGb
| KSpinLock
| Lock
|}
|}


=== KHandleEntry ===
== KMemoryBlockManager ==
Size: 0x18
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 370: Line 322:
! Description
! Description
|-
|-
| 0
| 0 || [[#KMemoryBlock]]* || MemoryBlockList
| u16
| HandleId
|-
|-
| 2
| 8 || u64 || MaxAddr
| u8
| ObjectType
|-
|-
| 8
| 0x10 || u64 || MinAddr
| [[#KAutoObject]]*
| Object
|}
|}


Line 392: Line 338:
! Description
! Description
|-
|-
| 0
| 0 || [[#KLinkedListNode]]<[[#KMemoryBlock]]> || NodeFor__MemoryBlockList
| [[#KMemoryBlock]]*
| Next
|-
|-
| 8
| 0x10 || ||
| [[#KMemoryBlock]]*
| Prev
|-
|-
| 0x10
| 0x18 || ||
|  
|  
|-
|-
| 0x18
| 0x20 || u64 || BaseAddress
|  
|  
|-
|-
| 0x20
| 0x28 || u64 || NumOfPages
| u64
| BaseAddress
|-
|-
| 0x28
| 0x30 || u32 || State
| u64
| NumOfPages
|-
|-
| 0x30
| 0x34 || u16 || IpcRefCount [?]
| u32
| State
|-
|-
| 0x34
| 0x36 || u16 || DeviceMapRefCount
| u16
| IpcRefCount [?]
|-
|-
| 0x36
| 0x38 || u8 || Permission
| u16
| DeviceMapRefCount
|-
|-
| 0x38
| 0x39 || u8 || UnkAttribute
| u8
| Permission
|-
|-
| 0x39
| 0x3A || u8 || Attribute
| u8
| UnkAttribute
|-
| 0x3A
| u8
| Attribute
|}
|}


Line 450: Line 370:
! Description
! Description
|-
|-
| 0
| 0 || u64 || BaseAddress
| u64
| BaseAddress
|-
| 8
| u64
| Size
|-
|-
| 0x10
| 8 || u64 || Size
| u32
| State
|-
|-
| 0x14
| 0x10 || u32 || State
| u8
| Permission
|-
|-
| 0x15
| 0x14 || u8 || Permission
| u8
| Attribute
|-
|-
| 0x16
| 0x15 || u8 || Attribute
| u8
| UnkAttribute
|-
|-
|  
| 0x16 || u8 || UnkAttribute
|  
| Pad
|-
|-
| 0x18
| 0x18 || u16 || IpcRefCount [?]
| u16
| IpcRefCount [?]
|-
|-
| 0x1A
| 0x1A || u16 || DeviceMapRefCount
| u16
| DeviceMapRefCount
|}
|}


Line 498: Line 398:
! Description
! Description
|-
|-
| 0
| 0 || [[#KAutoObject]] || Inheritance
| [[#KAutoObject]]
|
|-
|-
| 0x10
| 0x10 || KMemoryBlockList || Blocks
| KMemoryBlockList
| Blocks
|-
|-
| 0x28
| 0x28 || [[#KProcess]]* || OwnerProcess
| [[#KProcess]]*
| OwnerProcess
|-
|-
| 0x30
| 0x30 || u64 || BaseAddress
| u64
| BaseAddress
|-
|-
| 0x38
| 0x38 || KRecursiveLock || Mutex
| KRecursiveLock
| Mutex
|-
|-
| 0x40
| 0x40 || int || Permission
| int
| Permission
|-
|-
| 0x44
| 0x44 || bool || HasInited
| bool
| HasInited
|-
|-
| 0x45
| 0x45 || bool || IsMapped
| bool
| IsMapped
|}
|}


Line 542: Line 426:
! Description
! Description
|-
|-
| 0
| 0 || [[#KAutoObject]] || Inheritance
| [[#KAutoObject]]
|
|-
|-
| 0x10
| 0x10 || KMemoryBlockList || Blocks
| KMemoryBlockList
| Blocks
|-
|-
| 0x28
| 0x28 || [[#KProcess]]* || OwnerProcess
| [[#KProcess]]*
| OwnerProcess
|-
|-
| 0x30
| 0x30 || int || LocalPermission
| int
| LocalPerm
|-
|-
| 0x34
| 0x34 || int || RemotePermission
| int
| RemotePerm
|-
|-
| 0x38
| 0x38 || bool || HasInited
| bool
| HasInited
|}
|}


Line 578: Line 450:
! Description
! Description
|-
|-
| 0
| 0 || [[#KAutoObject]] || Inheritance
| [[#KAutoObject]]
|
|-
|-
| 0x10
| 0x10 || [[#KServerPort]] || ServerSide
| [[#KServerPort]]
| ServerSide
|-
|-
| 0x60
| 0x60 || [[#KClientPort]] || ClientSide
| [[#KClientPort]]
| ClientSide
|-
|-
| 0x98
| 0x98 || u64 ||
| u64
|
|-
|-
| 0xA0
| 0xA0 || bool || HasInited
| bool
| HasInited
|-
|-
| 0xA1
| 0xA1 || bool || IsLight
| bool
| IsLight
|}
|}


Line 614: Line 474:
! Description
! Description
|-
|-
| 0
| 0 || [[#KSynchronizationObject]] || Inheritance
| [[#KSynchronizationObject]]
|
|-
|-
| 0x28
| 0x28 || [[#KLinkedListNode]] || IncomingConnections
| [[#KLinkedListNode]]
| IncomingConnections
|-
|-
| 0x38
| 0x38 || [[#KLinkedListNode]] || IncomingLightConnections
| [[#KLinkedListNode]]
| IncomingLightConnections
|-
|-
| 0x48
| 0x48 || [[#KPort]]* || Parent
| [[#KPort]]*
| Parent
|}
|}


Line 642: Line 494:
! Description
! Description
|-
|-
| 0
| 0 || [[#KSynchronizationObject]] || Inheritance
| [[#KSynchronizationObject]]
|
|-
|-
| 0x28
| 0x28 || u32 || NumSessions
| u32
| NumSessions
|-
|-
| 0x2C
| 0x2C || u32 || MaxSessions
| u32
| MaxSessions
|-
|-
| 0x30
| 0x30 || [[#KPort]]* || Parent
| [[#KPort]]*
| Parent
|}
|}


Line 670: Line 514:
! Description
! Description
|-
|-
| 0
| 0 || [[#KAutoObject]] || Inheritance
| [[#KAutoObject]]
|
|-
|-
| 0x10
| 0x10 || [[#KServerSession]] || ServerSide
| [[#KServerSession]]
| ServerSide
|-
|-
| 0x70
| 0x70 || [[#KClientSession]] || ClientSide
| [[#KClientSession]]
| ClientSide
|-
|-
| 0xA8
| 0xA8 || bool || HasInited
| bool
| HasInited
|}
|}


Line 698: Line 534:
! Description
! Description
|-
|-
| 0
| 0 || [[#KSynchronizationObject]] || Inheritance
| [[#KSynchronizationObject]]
|
|-
|-
| 0x28
| 0x28 || KLinkedListNode ||  NodeFor__IncomingConnections
| KLinkedListNode
|  NodeFor__IncomingConnections
|-
|-
| 0x38
| 0x38 || ||
|
|
|-
|-
| 0x40
| 0x40 || KLinkedListNode ||
| KLinkedListNode
|
|-
|-
| 0x50
| 0x50 || ||
|
|
|-
|-
| 0x58
| 0x58 || ||
|
|
|}
|}


Line 734: Line 558:
! Description
! Description
|-
|-
| 0
| 0 || [[#KAutoObject]] || Inheritance
| [[#KAutoObject]]
|
|-
|-
| 0x10
| 0x10 || [[#KSession]]* || Parent
| [[#KSession]]*
| Parent
|-
|-
| 0x18
| 0x18 || bool || HasInited
| bool
| HasInited
|-
|-
| 0x20
| 0x20 || [[#KClientPort]]* || ParentPort
| [[#KClientPort]]*
| ParentPort
|-
|-
| 0x28
| 0x28 || ||
|  
|  
|-
|-
| 0x30
| 0x30 || [[#KProcess]]* || CreatorProcess
| [[#KProcess]]*
| CreatorProcess
|}
|}


Line 770: Line 582:
! Description
! Description
|-
|-
| 0
| 0 || [[#KAutoObject]] || Inheritance
| [[#KAutoObject]]
|
|-
|-
| 0x10
| 0x10 || [[#KLightSessionServer]] || ServerSide
| [[#KLightSessionServer]]
| ServerSide
|-
|-
| 0x68
| 0x68 || [[#KLightSessionClient]] || ClientSide
| [[#KLightSessionClient]]
| ClientSide
|-
|-
| 0xA0
| 0xA0 || bool || HasInited
| bool
| HasInited
|}
|}


Line 798: Line 602:
! Description
! Description
|-
|-
| 0
| 0 || [[#KAutoObject]] || Inheritance
| [[#KAutoObject]]
|
|-
|-
| 0x10
| 0x10 || KLinkedListNode || NodeFor__IncomingLightConnections
| KLinkedListNode
| NodeFor__IncomingLightConnections
|-
|-
| 0x20
| 0x20 || [[#KLightSession]] || Parent
| [[#KLightSession]]
| Parent
|-
|-
| 0x28
| 0x28 || u64[6] ||
| u64[6]
|  
|}
|}


Line 826: Line 622:
! Description
! Description
|-
|-
| 0
| 0 || [[#KAutoObject]] || Inheritance
| [[#KAutoObject]]
|
|-
|-
| 0x10
| 0x10 || [[#KLightSession]]* || Parent
| [[#KLightSession]]*
| Parent
|-
|-
| 0x18
| 0x18 || bool || HasInited
| bool
| HasInited
|-
|-
| 0x20
| 0x20 || [[#KClientPort]]* || Port
| [[#KClientPort]]*
| Port
|-
|-
| 0x28
| 0x28 || ||
|  
|  
|-
|-
| 0x30
| 0x30 || [[#KProcess]]* || CreatorProcess
| [[#KProcess]]*
| CreatorProcess
|}
|}


Line 862: Line 646:
! Description
! Description
|-
|-
| 0
| 0 || [[#KAutoObject]] || Inheritance
| [[#KAutoObject]]
|
|-
|-
| 0x10
| 0x10 || [[#KReadableEvent]] || ReadableEvent
| [[#KReadableEvent]]
| ReadableEvent
|-
|-
| 0x48
| 0x48 || [[#KWritableEvent]] || WritableEvent
| [[#KWritableEvent]]
| WritableEvent
|-
|-
| 0x60
| 0x60 || [[#KProcess]]* || Creator
| [[#KProcess]]*
| Creator
|-
|-
| 0x68
| 0x68 || bool || HasInited
| bool
| HasInited
|}
|}


Line 894: Line 668:
! Description
! Description
|-
|-
| 0
| 0 || [[#KSynchronizationObject]] || Inheritance
| [[#KSynchronizationObject]]
|
|-
|-
| 0x28
| 0x28 || bool ||
| bool
|
|-
|-
| 0x30
| 0x30 || [[#KEvent]]* || Parent
| [[#KEvent]]*
| Parent
|}
|}


Line 918: Line 686:
! Description
! Description
|-
|-
| 0
| 0 || [[#KAutoObject]] || Inheritance
| [[#KAutoObject]]
|
|-
|-
| 0x10
| 0x10 || [[#KEvent]]* || Parent
| [[#KEvent]]*
| Parent
|}
|}


Line 938: Line 702:
! Description
! Description
|-
|-
| 0
| 0 || [[#KReadableEvent]] || Inheritance
| [[#KReadableEvent]]
|
|-
|-
| 0x38
| 0x38 || ||
|
|
|-
|-
| 0x48
| 0x48 || u32 || IrqId (or -1)
| u32
| IrqId (or -1)
|}
|}


Line 962: Line 720:
! Description
! Description
|-
|-
| 0
| 0 || [[#KAutoObject]] || Inheritance
| [[#KAutoObject]]
|
|-
|-
| 0x10
| 0x10 || [[#KRecursiveLock]] || Mutex
| KRecursiveLock
| Mutex
|-
|-
| 0x18
| 0x18 || [[#KSmmuManager]] || Manager
| [[#KSmmuManager]]
| Manager
|-
|-
| 0x58
| 0x58 || u64 || BaseAddress
| u64
| BaseAddress
|-
|-
| 0x60
| 0x60 || u64 || Size
| u64
| Size
|-
|-
| 0x68
| 0x68 || bool || HasInited
| bool
| HasInited
|}
|}


Line 996: Line 742:
! Description
! Description
|-
|-
| 0
| 0 || u8[4] || PageTableAsids
| u8[4]
| PageTableAsids
|-
|-
| 8
| 8 || void*[4] || PageDirectories
| void*[4]
| PageDirectories
|-
|-
| 0x28
| 0x28 || u64 || AttachedDevicesMask
| u64
| AttachedDevicesMask
|-
|-
| 0x30
| 0x30 || u32 || RegVal32Bit
| u32
| RegVal32Bit
|-
|-
| 0x34
| 0x34 || u32 || RegVal32BitEmpty
| u32
| RegVal32BitEmpty
|-
|-
| 0x38
| 0x38 || u32 || RegVal36Bit
| u32
| RegVal36Bit
|-
|-
| 0x3C
| 0x3C || u32 || RegVal36BitEmpty
| u32
| RegVal36BitEmpty
|}
|}

Revision as of 04:56, 21 August 2017

KAutoObject

Size: 0x10

Offset Type Description
0 * Vtable
8 u64 ReferenceCount

KSynchronizationObject

Size: 0x28

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject Inheritance
0x10 u64 ThreadSyncNum
0x18 #KLinkedListNode ThreadSyncList

KRecursiveLock

Size: 0x8

Offset Type Description
0 u64 OwnerTag

KSpinLock

Size: 0x1

Offset Type Description
0 u8 IsBusy

KLockedList

Size: 0x28

Offset Type Description
0 u64 Count
8 #KLinkedListNode List
0x18 #KRecursiveLock Mutex
0x20 u64 MaxCount

KLinkedListNode

Size: 0x10

Offset Type Description
0 #KLinkedListNode* Prev
8 #KLinkedListNode* Next

KProcess

Size: 0x5B0

Inherits from: #KSynchronizationObject

Offset Type Description
0 #KSynchronizationObject Inheritance
0x28
0x38 #KMemoryManager MemoryManager
0xF0 u64 TotalMemUsage
0xF8 u64 TlsPagesListCount
0x100 #KLinkedListNode TlsPagesList
0x110 s32 DefaultCpuCore
0x118 KDebug* Debug
0x120 #KResourceLimit* ResourceLimit
0x128 u32 State
0x130 #KRecursiveLock ProcessMutex
0x138 #KRecursiveLock ThreadingMutex
0x140 #KLinkedListNode<#KThread> ThreadArbiterList
0x150 KLinkedListNode
0x160 u64[4] RandomEntropy
0x180 u8 HasStateChanged
0x181 u8 HasInitialized
0x182 u8 IsSystem
0x183 u8[12] From_CreateProcessInfo_0
0x18F u8 InitiallyZero
0x190 u16 NumberOfCreatedThreads
0x192 u16 ThreadingRelatedInitiallyZero
0x194 u32 ProcessFlags
0x198 #KProcessCapabilities Capabilities
0x248 u64 TitleId
0x250 u64 ProcessId
0x258 u64 CreatedTickstamp
0x260 u64 Entrypoint
0x268 u64 CodeMemUsage
0x270 u64 DynamicMemUsage
0x278 u64 MaxTotalMemUsage
0x280 u64 From_CreateProcessInfo_0xC
0x288 #KProcessHandleTable HandleTable
0x528 void* UsermodeExceptionTlsArea
0x530 #KLinkedListNode<#KThread> ExceptionThreadList
0x540 #KThread* ExceptionThread
0x548 #KLinkedListNode<#KThread> ThreadList
0x558 u32
0x55C u32 HasStarted
0x560 u64[8]
0x5A0 u64
0x5A8 u64

KProcessCapabilities

Size: 0xB0

Offset Type Description
0 u8[16] SvcAccessMask
0x10 u8[128] IrqAccessMask
0x90 u64 AllowedCpuIdBitmask
0x98 u64 AllowedThreadPrioBitmask
0xA0 u32 DebuggingFlags (bit0: can be debugged, bit1: can debug others)
0xA4 u32 HandleTableSize
0xA8 u32
0xAC u32

KProcessHandleTable

Size: 0x2A0

Offset Type Description
0 #KHandleEntry* TablePtr
8 #KHandleEntry* NextFreeEntry
0x10 #KHandleEntry[40] InternalTable
0x290 u16 Size
0x292 u16
0x294 u16 IdCounter
0x296 u16 NumActiveSlots
0x298 #KSpinLock Lock

KHandleEntry

Offset Type Description
0 u16 HandleId
2 u8 ObjectType
8 #KAutoObject* Object

KMemoryManager

Size: 0xB8

Offset Type Description
0 * Vtable
8 u64 AddrSpaceMinAddr
0x10 u64 AddrSpaceMaxAddr
0x18 u64 HeapRegionBaseAddr
0x20 u64 HeapRegionEndAddr
0x28 u64 HeapCurAddr
0x30 u64 MapRegionBaseAddr
0x38 u64 MapRegionEnd
0x40 u64 HeapMaxAllocation
0x48 #KRecursiveLock Mutex
0x50 #KPageTable PageTable
0x60 #KMemoryBlockManager MemoryBlockManager
0x78 bool IsKernel
0x79 bool IsSystem
0x7A bool IsAddrSpace36Bit
0x7B bool HasAslr
0x7C u32 Is_0x59_If_Cfg12_Bit0_ElseZero
0x80 u32 Is_0x5A_If_Cfg12_Bit0_ElseZero
0x84 u32 Is_0x58_If_Cfg12_Bit0_ElseZero
0x88
0x90
0x98
0xA0 u64 TranslationTableBaseRegister0
0xA8 u64 TranslationControlRegister
0xB0 u8 AsidTagValue

KPageTable

Size: 0x10

Offset Type Description
0 void* RawPageTablePtr
8 bool
0xC u32 AddrSpaceSizeInGb

KMemoryBlockManager

Size: 0x18

Offset Type Description
0 #KMemoryBlock* MemoryBlockList
8 u64 MaxAddr
0x10 u64 MinAddr

KMemoryBlock

Size: 0x40

Offset Type Description
0 #KLinkedListNode<#KMemoryBlock> NodeFor__MemoryBlockList
0x10
0x18
0x20 u64 BaseAddress
0x28 u64 NumOfPages
0x30 u32 State
0x34 u16 IpcRefCount [?]
0x36 u16 DeviceMapRefCount
0x38 u8 Permission
0x39 u8 UnkAttribute
0x3A u8 Attribute

KMemoryBlockInfo

Size: 0x20

Offset Type Description
0 u64 BaseAddress
8 u64 Size
0x10 u32 State
0x14 u8 Permission
0x15 u8 Attribute
0x16 u8 UnkAttribute
0x18 u16 IpcRefCount [?]
0x1A u16 DeviceMapRefCount

KTransferMemory

Size: 0x48

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject Inheritance
0x10 KMemoryBlockList Blocks
0x28 #KProcess* OwnerProcess
0x30 u64 BaseAddress
0x38 KRecursiveLock Mutex
0x40 int Permission
0x44 bool HasInited
0x45 bool IsMapped

KSharedMemory

Size: 0x40

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject Inheritance
0x10 KMemoryBlockList Blocks
0x28 #KProcess* OwnerProcess
0x30 int LocalPermission
0x34 int RemotePermission
0x38 bool HasInited

KPort

Size: 0xA8

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject Inheritance
0x10 #KServerPort ServerSide
0x60 #KClientPort ClientSide
0x98 u64
0xA0 bool HasInited
0xA1 bool IsLight

KServerPort

Size: 0x50

Inherits from: #KSynchronizationObject

Offset Type Description
0 #KSynchronizationObject Inheritance
0x28 #KLinkedListNode IncomingConnections
0x38 #KLinkedListNode IncomingLightConnections
0x48 #KPort* Parent

KClientPort

Size: 0x38

Inherits from: #KSynchronizationObject

Offset Type Description
0 #KSynchronizationObject Inheritance
0x28 u32 NumSessions
0x2C u32 MaxSessions
0x30 #KPort* Parent

KSession

Size: 0xB0

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject Inheritance
0x10 #KServerSession ServerSide
0x70 #KClientSession ClientSide
0xA8 bool HasInited

KServerSession

Size: 0x60

Inherits from: #KSynchronizationObject

Offset Type Description
0 #KSynchronizationObject Inheritance
0x28 KLinkedListNode NodeFor__IncomingConnections
0x38
0x40 KLinkedListNode
0x50
0x58

KClientSession

Size: 0x38

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject Inheritance
0x10 #KSession* Parent
0x18 bool HasInited
0x20 #KClientPort* ParentPort
0x28
0x30 #KProcess* CreatorProcess

KLightSession

Size: 0xA8

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject Inheritance
0x10 #KLightSessionServer ServerSide
0x68 #KLightSessionClient ClientSide
0xA0 bool HasInited

KLightServerSession

Size: 0x58

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject Inheritance
0x10 KLinkedListNode NodeFor__IncomingLightConnections
0x20 #KLightSession Parent
0x28 u64[6]

KLightClientSession

Size: 0x38

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject Inheritance
0x10 #KLightSession* Parent
0x18 bool HasInited
0x20 #KClientPort* Port
0x28
0x30 #KProcess* CreatorProcess

KEvent

Size: 0x70

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject Inheritance
0x10 #KReadableEvent ReadableEvent
0x48 #KWritableEvent WritableEvent
0x60 #KProcess* Creator
0x68 bool HasInited

KReadableEvent

Size: 0x38

Inherits from: #KSynchronizationEvent

Offset Type Description
0 #KSynchronizationObject Inheritance
0x28 bool
0x30 #KEvent* Parent

KWritableEvent

Size: 0x18

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject Inheritance
0x10 #KEvent* Parent

KInterruptEvent

Size: 0x50

Inherits from: #KReadableEvent

Offset Type Description
0 #KReadableEvent Inheritance
0x38
0x48 u32 IrqId (or -1)

KAddressSpace

Size: 0x70

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject Inheritance
0x10 #KRecursiveLock Mutex
0x18 #KSmmuManager Manager
0x58 u64 BaseAddress
0x60 u64 Size
0x68 bool HasInited

KSmmuManager

Size: 0x40

Offset Type Description
0 u8[4] PageTableAsids
8 void*[4] PageDirectories
0x28 u64 AttachedDevicesMask
0x30 u32 RegVal32Bit
0x34 u32 RegVal32BitEmpty
0x38 u32 RegVal36Bit
0x3C u32 RegVal36BitEmpty