Difference between revisions of "Kernel"

From Nintendo Switch Brew
Jump to navigation Jump to search
Line 460: Line 460:
 
| 0x20 || u64 || HeapRegionEndAddr
 
| 0x20 || u64 || HeapRegionEndAddr
 
|-
 
|-
| 0x28 || u64 || HeapRegionCurAddr
+
| 0x28 || u64 || HeapCurAddr
 
|-
 
|-
 
| 0x30 || u64 ||  
 
| 0x30 || u64 ||  

Revision as of 10:05, 30 September 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

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

[1.0.0] Size: 0x5B0

[2.0.0] Size: 0x2480

Inherits from: #KSynchronizationObject

1.0.0 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 u32 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
2.0.0 Offset Type Description
0 #KSynchronizationObject Inheritance
0x28
0x38 #KMemoryManager MemoryManager
0x100 u64 TotalMemUsage
0x108 u64 TlsPagesListCount
0x110 #KLinkedListNode TlsPagesList
0x120 s32 DefaultCpuCore
0x128 KDebug* Debug
0x130 #KResourceLimit* ResourceLimit
0x138 u32 State
0x140 #KRecursiveLock ProcessMutex
0x148 #KRecursiveLock ThreadingMutex
0x150 #KLinkedListNode<#KThread> ThreadArbiterList
0x160 KLinkedListNode
0x170 u64[4] RandomEntropy
0x190 u8 HasStateChanged
0x191 u8 HasInitialized
0x192 u8 IsSystem
0x193 u8[12] From_CreateProcessInfo_0
0x19F u8 InitiallyZero
0x1A0 u16 NumberOfCreatedThreads
0x1A2 u16 ThreadingRelatedInitiallyZero
0x1A4 u32 ProcessFlags
0x1A8 #KProcessCapabilities Capabilities
0x258 u64 TitleId
0x260 u64 ProcessId
0x268 u64 CreatedTickstamp
0x270 u64 Entrypoint
0x278 u64 CodeMemUsage
0x280 u64 DynamicMemUsage
0x288 u64 MaxTotalMemUsage
0x290 u32 From_CreateProcessInfo_0xC
0x2C0 #KProcessHandleTable HandleTable
0x2380 void* UsermodeExceptionTlsArea
0x2388 #KLinkedListNode<#KThread> ExceptionThreadList
0x2398 #KThread* ExceptionThread
0x23A0 #KLinkedListNode<#KThread> ThreadList

KProcessCapabilities

Size: 0xB0

Offset Type Description
0 u8[16] SvcAccessMask
0x10 u8[128] IrqAccessMask
0x90 u64 AllowedCpuIdBitmask
0x98 u64 AllowedThreadPrioBitmask
0xA0 u32 DebuggingFlags
0xA4 u32 HandleTableSize
0xA8 u32 KernelReleaseVersion
0xAC u32 ApplicationType

KProcessHandleTable

[1.0.0] Size: 0x2A0

[2.0.0] Size: 0x20C0

1.0.0 Offset Type Description
0 #KHandleEntry* TablePtr
8 #KHandleEntry* NextFreeEntry
0x10 #KHandleEntry[40] InternalTable
0x290 u16 Size
0x292 u16 MaxUsageAtOnce
0x294 u16 IdCounter
0x296 u16 NumActiveSlots
0x298 #KSpinLock Lock
2.0.0 Offset Type Description
0 #KHandleEntry* TablePtr
8 #KHandleEntry* NextFreeEntry
0x10 #KHandleEntry[1024] InternalTable
0x2010 u16 Size
0x2012 u16 MaxUsageAtOnce
0x2014 u16 IdCounter
0x2016 u16 NumActiveSlots
0x2040 #KSpinLock Lock

KHandleEntry

[1.0.0] Size: 0x10

[2.0.0] Size: 8

1.0.0 Offset Type Description
0 u16 HandleId
2 u8 ObjectType
8 #KAutoObject* Object
2.0.0 Offset Type Description
0 u16 HandleId
2 u8 ObjectType
4 u32 ObjectCompressedPtr

KSpinLock

[1.0.0] Size: 0x1

[2.0.0] Size: 0x40

1.0.0 Offset Type Description
0 u8 IsBusy
2.0.0 Offset Type Description
0 u16
0x20 u16

KMemoryManager

[1.0.0] Size: 0xB8

[2.0.0] Size: 0xC8

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
Offset Type Description
0 * Vtable
8 u64 AddrSpaceMinAddr
0x10 u64 AddrSpaceMaxAddr
0x18 u64 HeapRegionBaseAddr
0x20 u64 HeapRegionEndAddr
0x28 u64 HeapCurAddr
0x30 u64
0x38 u64
0x40 u64
0x48 u64
0x50 u64
0x58 u64
0x60 u64
0x68 #KRecursiveLock Mutex
0x70 #KPageTable PageTable
0x80 #KMemoryBlockManager MemoryBlockManager
0x98 u32 AddressSpaceWidth (32/36/39)
0x9C bool IsKernel
0x9D bool IsSystem
0x9E bool HasAslr
0xA0 u32
0xA4 u32 Is_0x5A_If_Cfg12_Bit0_ElseZero
0xA8 u32 Is_0x59_If_Cfg12_Bit0_ElseZero
0xAC u32 Is_0x58_If_Cfg12_Bit0_ElseZero
0xB0 u64 TranslationTableBaseRegister0
0xB8 u64 TranslationTableBaseRegister0
0xC0 u32 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)

KDeviceAddressSpace

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

[1.0.0] It was called KAddressSpace.

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

KResourceLimit

Size: 0x68

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject Inheritance
0x10 u64[5] CurrentValue
0x38 u64[5] LimitValue
0x60 #KRecursiveLock Mutex

KPoolManager

Size: 0x380

Offset Type Description
0 #KPoolAllocator[3] Allocator
0x348 #KPoolRefManager RefManager
0x368 u64 AllocationCounter
0x370 u64
0x378 #KRecursiveLock Mutex

KPoolAllocator

Size: 0x118

Offset Type Description
0 void* MemoryBase
8 u64 MemorySize
0x10 s32 NumPools
0x18 #KPool[8] Pools

KPool

Size: 0x20

Offset Type Description
0 KPoolHeader* FirstFreeChunk
8 u64
0x10 u64
0x18 void* SingletonTableEntryPtr

KPoolRefManager

Size: 0x20

Offset Type Description
0 #KPoolManager* Parent
8 void* PoolBase
0x10 u64 MaxPage
0x18 u16* RefCountTable