ARM9 OS: Difference between revisions
Hallowizer (talk | contribs) →Threads: added queueJoin |
Hallowizer (talk | contribs) added a section on time |
||
| Line 89: | Line 89: | ||
== Memory allocation == | == Memory allocation == | ||
3 types of heaps exist: EXPH (exponential heap), FRMH (frame heap), and UNTH (unit heap). | 3 types of heaps exist: EXPH (exponential heap), FRMH (frame heap), and UNTH (unit heap). | ||
== Time == | |||
Time is kept with timers 2 and 3, while alarm interrupts are handled by timer 1; timer 0 is presumably reserved for the DMA sound channels. The OS orders the alarms by alert time, so that it only needs to keep track of the frontmost alarm. | |||
<pre> | |||
struct OSAlarm { | |||
void (*handler)(void *userData); | |||
void *userData; | |||
u32 unknown; | |||
u64 alertTime; | |||
struct OSAlarm *prev; | |||
struct OSAlarm *next; | |||
u64 repeatInterval; // 0 for non-repeating alarms | |||
u64 repeatStart; // undefined value for non-repeating alarms | |||
} | |||
struct OSAlarmQueue { | |||
u32 unknown; | |||
struct OSAlarm *head; | |||
struct OSAlarm *tail; | |||
} | |||
</pre> | |||