KSession: Difference between revisions
No edit summary |
No edit summary |
||
(14 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Kernel objects]] | [[Category:Kernel auto objects]] | ||
class [[KSession]] extends [[KAutoObject]]; | class [[KSession]] extends [[KAutoObject]]; | ||
Line 19: | Line 19: | ||
|- | |- | ||
| 0x20 | | 0x20 | ||
| KThread* | | [[KThread]]* | ||
| X ? | | X ? | ||
|- | |- | ||
| 0x24 | | 0x24 | ||
| KThread* | | [[KThread]]* | ||
| Y ? | | Y ? | ||
|- | |- | ||
| 0x2C | | 0x2C | ||
| KThread* | | [[KThread]]* | ||
| Z ? | | 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? |