Kernel

From Nintendo Switch Brew
Revision as of 20:25, 30 September 2017 by Qlutoo (talk | contribs) (→‎KPoolManager)
Jump to navigation Jump to search

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 KProcessScheduler Scheduler
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 KProcessScheduler Scheduler
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
0x23B0 #KLinkedListNode<#KSharedMemoryReference> MappedSharedMemoriesList

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

KSharedMemoryReference

[2.0.0] Size: 0x40

Offset Type Description
0 #KLinkedListNode<#KSharedMemoryReference> Node__MappedSharedMemoriesList
0x10 #KSharedMemory* SharedMem
0x18 u64 InitiallyZero

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 MapRegionEndAddr
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 NewUnknownRegionBaseAddr
0x38 u64 NewUnknownRegionEndAddr
0x40 u64 MapRegionBaseAddr
0x48 u64 MapRegionEndAddr
0x50 u64
0x58 u64
0x60 u64 HeapMaxAllocation
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 PoolPartition
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 TranslationControlRegister
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

[1.0.0] Size: 0x40

[2.0.0] Size: 0x48

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject Inheritance
0x10 KMemoryBlockList Blocks
0x28 #KProcess* OwnerProcess
0x30 int LocalPermission
0x34 int RemotePermission
0x38 bool HasInited
Offset Type Description
0 #KAutoObject Inheritance
0x10 KMemoryBlockList Blocks
0x28 #KResourceLimit* OwnerResourceLimit
0x30 u64 OwnerProcessPid
0x38 int LocalPermission
0x3C int RemotePermission
0x40 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

[1.0.0] Size: 0x380

[2.0.0] Size: 0x228

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