Kernel: Difference between revisions

From Nintendo Switch Brew
Jump to navigation Jump to search
Line 141: Line 141:
| KRecursiveLock
| KRecursiveLock
| Mutex
| Mutex
|-
| 0x50
|
|
|-
| 0x60
| [[#KMemoryBlock]]*
| MemoryBlockList
|-
|-
| ..
| ..
Line 146: Line 154:
| ..
| ..
|}
|}
== KMemoryBlock ==
{| class="wikitable" border="1"
|-
! Offset
! Type
! Description
|-
| 0
| [[#KMemoryBlock]]*
| Next
|-
| 8
| [[#KMemoryBlock]]*
| Prev
|-
| 0x10
|
|
|-
| 0x18
|
|
|-
| 0x20
| u64
| BaseAddress
|-
| 0x28
| u64
| NumOfPages
|-
| 0x30
| u32
| MemoryState
|-
| 0x34
| u16
| IpcRefCount [?]
|-
| 0x36
| u16
| DeviceMapRefCount
|-
| 0x38
| u8
| Permission
|-
| 0x39
| u8
|
|-
| 0x3A
| u8
| MemoryAttribute
|}
= KMemoryBlockInfo =


= KTransferMemory =
= KTransferMemory =

Revision as of 23:49, 25 July 2017

KAutoObject

Size: 0x10

Offset Type Description
0 * Vtable
8 u64 ReferenceCount

KSynchronizationObject

Size: 0x28

Inherits from: #KAutoObject

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

KLinkedListNode

Size: 0x10

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

KProcess

Size: 0x5B0

Inherits from: #KSynchronizationObject

Offset Type Description
0 #KSynchronizationObject
0x28
0x38 #KProcessMm MemoryManager
0xF0 u64 TotalMemUsage
0xF8 u64
.. .. ..
0x100 #KLinkedListNode* TlsPagesList
.. .. ..
0x130 KRecursiveLock ProcessMutex
.. .. ..
0x288 KProcessHandleTable HandleTable

KProcessMm

Offset Type Description
0 * Vtable
8 u64 AddrSpaceMinAddr
0x10 u64 AddrSpaceMaxAddr
0x18 u64 HeapBaseAddr
0x20 u64 HeapEndAddr
0x28 u64 HeapCurAddr
0x30 u64 MapRegionBaseAddr
0x38 u64 MapRegionEnd
0x40 u64 HeapMaxAllocation
0x48 KRecursiveLock Mutex
0x50
0x60 #KMemoryBlock* MemoryBlockList
.. .. ..

KMemoryBlock

Offset Type Description
0 #KMemoryBlock* Next
8 #KMemoryBlock* Prev
0x10
0x18
0x20 u64 BaseAddress
0x28 u64 NumOfPages
0x30 u32 MemoryState
0x34 u16 IpcRefCount [?]
0x36 u16 DeviceMapRefCount
0x38 u8 Permission
0x39 u8
0x3A u8 MemoryAttribute

KMemoryBlockInfo

KTransferMemory

Size: 0x48

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject
0x10 KMemoryBlockList Blocks
0x28 #KProcess* OwnerProcess
0x30 u64 BaseAddress
0x40 int Permission
0x44 bool HasInited

KSharedMemory

Size: 0x40

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject
0x10 KMemoryBlockList Blocks
0x28 #KProcess* OwnerProcess
0x30 int LocalPerm
0x34 int RemotePerm
0x38 bool HasInited

KPort

Size: 0xA8

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject
0x10 #KServerPort ServerPort
0x60 #KClientPort ClientPort
0x98 u64
0xA0 bool HasInited
0xA1 bool IsLight [?]

KServerPort

Size: 0x50

Inherits from: #KSynchronizationObject

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

KClientPort

Size: 0x38

Inherits from: #KSynchronizationObject

Offset Type Description
0 #KSynchronizationObject
0x28 ?
0x2C u32 MaxSessions [?]
0x30 #KPort* Parent

KEvent

Size: 0x70

Inherits from: #KAutoObject

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

KReadableEvent

Size: 0x38

Inherits from: #KSynchronizationEvent

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

KWritableEvent

Size: 0x18

Inherits from: #KAutoObject

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

KInterruptEvent

Size: 0x50

Inherits from: #KReadableEvent

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

KAddressSpace

Size: 0x70

Inherits from: #KAutoObject

Offset Type Description
0 #KAutoObject
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