Difference between revisions of "KTimer"

From 3dbrew
Jump to navigation Jump to search
(size + start of KTimer object)
(11.3.0-36)
 
(18 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:Kernel objects]]
+
[[Category:Kernel synchronization objects]]
class [[KTimer]] extends [[KSynchronizationObject]];
+
[[Category:Kernel interrupt events]]
 +
class [[KTimer]] extends [[KSynchronizationObject]] and [[KTimeableInterruptEvent]];
  
 
Size : 0x3C bytes
 
Size : 0x3C bytes
Line 19: Line 20:
 
|-
 
|-
 
| 0x8
 
| 0x8
| u32  
+
| u32
| Unknown
+
| Count of KThreads that sync with this object - number of nodes in the linked list below
 
|-
 
|-
 
| 0xC
 
| 0xC
| u32
+
| KLinkedListNode*
| Pointer to timer data node
+
| Pointer to first KLinkedListNode in node list of KThreads that sync with this object
 
|-
 
|-
 
| 0x10
 
| 0x10
| u32
+
| KLinkedListNode*
| Pointer identical to the one above
+
| Pointer to last KLinkedListNode in node list of KThreads that sync with this object
 
|-
 
|-
 
| 0x14
 
| 0x14
| u32
+
| [[KTimeableInterruptEvent]]
| Pointer to smaller vtable
+
| Interrupt event (*this) to be used with [[KTimerAndWDTManager]] holding its desired time point (relative to the CPU power-on) in CPU ticks (when handling its list of [[KTimableInterruptEvent]] instances).
 +
Gets incremented at each interval
 
|-
 
|-
| 0x18
+
| 0x24
| u32
+
| u8
| Pointer to unknown object type
+
| Timer is signaled
|-
 
| 0x1C
 
| u32
 
| Unknown
 
 
|-
 
|-
| 0x20
+
| 0x25
| u32
+
| u8
| Unknown
+
| Timer reset type (one shot, sticky, pulse)
 
|-
 
|-
| 0x24
+
| 0x26
| u32
+
| u16
| Unknown
+
| Starting from [[11.3.0-36]]: set to 0 prior to removing the timer from the [[KTimerAndWDTManager]] queue, set to 1 just after that.
 
|-
 
|-
 
| 0x28
 
| 0x28
| u32
+
| s64
| Unknown
+
| Interval in nanoseconds
|-
 
| 0x2C
 
| u32
 
| Unknown
 
 
|-
 
|-
 
| 0x30
 
| 0x30
| u32
+
| s64
| Unknown
+
| Current value in nanoseconds: current system uptime + user-specified time offset, updated at each interval
|-
 
| 0x34
 
| u32
 
| Unknown
 
 
|-
 
|-
| 0x20
+
| 0x38
 
| KProcess*
 
| KProcess*
 
| Owner
 
| Owner
 
|-
 
|-
 +
|}
 +
 +
Negative intervals and time offsets are considered null.

Latest revision as of 02:42, 7 February 2017

class KTimer extends KSynchronizationObject and KTimeableInterruptEvent;

Size : 0x3C bytes

Offset Type Description
0x0 u32 Pointer to vtable
0x4 u32 Reference count
0x8 u32 Count of KThreads that sync with this object - number of nodes in the linked list below
0xC KLinkedListNode* Pointer to first KLinkedListNode in node list of KThreads that sync with this object
0x10 KLinkedListNode* Pointer to last KLinkedListNode in node list of KThreads that sync with this object
0x14 KTimeableInterruptEvent Interrupt event (*this) to be used with KTimerAndWDTManager holding its desired time point (relative to the CPU power-on) in CPU ticks (when handling its list of KTimableInterruptEvent instances).

Gets incremented at each interval

0x24 u8 Timer is signaled
0x25 u8 Timer reset type (one shot, sticky, pulse)
0x26 u16 Starting from 11.3.0-36: set to 0 prior to removing the timer from the KTimerAndWDTManager queue, set to 1 just after that.
0x28 s64 Interval in nanoseconds
0x30 s64 Current value in nanoseconds: current system uptime + user-specified time offset, updated at each interval
0x38 KProcess* Owner

Negative intervals and time offsets are considered null.