Difference between revisions of "KSession"
Jump to navigation
Jump to search
(Created page with "Category:Kernel objects class KSession extends KAutoObject;") |
|||
(15 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
− | [[Category:Kernel objects]] | + | [[Category:Kernel auto objects]] |
class [[KSession]] extends [[KAutoObject]]; | class [[KSession]] extends [[KAutoObject]]; | ||
+ | |||
+ | Size : 0x4C bytes | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! 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 at least [[5.0.0-11]] NATIVE_FIRM upward: | ||
+ | |||
+ | Size : 0x4C bytes ([[KAutoObject]], [[KServerSession]], [[KClientSession]], sequentially): | ||
+ | |||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | !colspan="2"|Type | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x0 | ||
+ | |rowspan="2"|[[KAutoObject]] | ||
+ | | u32 | ||
+ | | Pointer to vtable | ||
+ | |- | ||
+ | | 0x4 | ||
+ | | u32 | ||
+ | | Reference count | ||
+ | |- | ||
+ | | 0x8 | ||
+ | |rowspan="9"|[[KServerSession]] | ||
+ | | u32 | ||
+ | | Pointer to vtable | ||
+ | |- | ||
+ | | 0xC | ||
+ | | u32 | ||
+ | | Reference count | ||
+ | |- | ||
+ | | 0x10 | ||
+ | | u32 | ||
+ | | KLinkedListNode count for sync 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 | ||
+ | |rowspan="8"|[[KClientSession]] | ||
+ | | u32 | ||
+ | | Pointer to vtable | ||
+ | |- | ||
+ | | 0x30 | ||
+ | | u32 | ||
+ | | Reference count | ||
+ | |- | ||
+ | | 0x34 | ||
+ | | u32 | ||
+ | | KLinkedListNode count for sync threads | ||
+ | |- | ||
+ | | 0x38 | ||
+ | | [[KLinkedListNode]]* | ||
+ | | Pointer to first KLinkedListNode in the list of threads that sync with this object | ||
+ | |- | ||
+ | | 0x3C | ||
+ | | [[KLinkedListNode]]* | ||
+ | | Pointer to last KLinkedListNode in the list of threads that sync with this object | ||
+ | |- | ||
+ | | 0x40 | ||
+ | | KSession* | ||
+ | | Pointer to parent session | ||
+ | |- | ||
+ | | 0x44 | ||
+ | | u32 | ||
+ | | Session status | ||
+ | |- | ||
+ | | 0x48 | ||
+ | | [[KClientPort]]* | ||
+ | | Pointer to associated client port inside parent KPort | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | |||
+ | Session status: | ||
+ | |||
+ | 1: open<br> | ||
+ | 2: closed by client<br> | ||
+ | 3: closed by server? |
Latest revision as of 23:18, 17 April 2017
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 at least 5.0.0-11 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 | KLinkedListNode count for sync 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 sync threads | |
0x38 | KLinkedListNode* | Pointer to first KLinkedListNode in the list of threads that sync with this object | |
0x3C | KLinkedListNode* | Pointer to last KLinkedListNode in the list of threads that sync with this object | |
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?