class KSession extends KAutoObject;

SizeĀ : 0x4C bytes

Offset Type Description
0x0 u32 Pointer to vtable
0x4 u32 Reference count
0x20 KThread* XĀ ?
0x24 KThread* YĀ ?
0x2C KThread* ZĀ ?

It seems X=Y=Z. X, Y and Z can be NULL.


Structure for 7.0.0-13 NATIVE_FIRM upward:

SizeĀ : 0x4C bytes (KAutoObject, KServerSession, KClientSession, sequentially):


Offset Type Description
0x0 KAutoObject u32 Pointer to vtable
0x4 u32 Reference count
0x8 KServerSession u32 Pointer to vtable
0xC u32 Reference count
0x10 u32 Node count for threads
0x14 KLinkedListNode* Pointer to first KLinkedListNode in the list of threads that sync with this object
0x18 KLinkedListNode* Pointer to last KLinkedListNode in the list of threads that sync with this object
0x1C KSession* Pointer to parent session
0x20 KThread* Last stolen KThread during sync request- current thread when KServerSession code is running during svc - noted in KThread+0xA8 as well
0x24 KThread* First stolen KThread during sync request
0x28 KThread* KThread that originated the session
0x2C KClientSession u32 Pointer to vtable
0x30 u32 Reference count
0x34 u32 KLinkedListNode count for object
0x38 KLinkedListNode* Pointer to first KLinkedListNode in list of KThreads using this client session
0x3C KLinkedListNode* Pointer to last KLinkedListNode in list of KThreads using this client session
0x40 KSession* Pointer to parent session
0x44 u32 Session status
0x48 KClientPort* Pointer to associated client port inside parent KPort


Session status:

1: open
2: closed by client
3: closed by server?