MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / InsertAlarm

Function InsertAlarm

src/dolphin/src/os/OSAlarm.c:48–102  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

46}
47
48static void InsertAlarm(OSAlarm* alarm, OSTime fire, OSAlarmHandler handler)
49{
50 OSAlarm* next;
51 OSAlarm* prev;
52
53 if (0 < alarm->period)
54 {
55 OSTime time = __OSGetSystemTime();
56
57 fire = alarm->start;
58 if (alarm->start < time)
59 {
60 fire += alarm->period * ((time - alarm->start) / alarm->period + 1);
61 }
62 }
63
64 alarm->handler = handler;
65 alarm->fire = fire;
66
67 for (next = AlarmQueue.head; next; next = next->next)
68 {
69 if (next->fire <= fire)
70 {
71 continue;
72 }
73
74 alarm->prev = next->prev;
75 next->prev = alarm;
76 alarm->next = next;
77 prev = alarm->prev;
78 if (prev)
79 {
80 prev->next = alarm;
81 }
82 else
83 {
84 AlarmQueue.head = alarm;
85 SetTimer(alarm);
86 }
87 return;
88 }
89 alarm->next = 0;
90 prev = AlarmQueue.tail;
91 AlarmQueue.tail = alarm;
92 alarm->prev = prev;
93 if (prev)
94 {
95 prev->next = alarm;
96 }
97 else
98 {
99 AlarmQueue.head = AlarmQueue.tail = alarm;
100 SetTimer(alarm);
101 }
102}
103
104void OSSetAlarm(OSAlarm* alarm, OSTime tick, OSAlarmHandler handler)
105{

Callers 3

OSSetAlarmFunction · 0.85
OSSetPeriodicAlarmFunction · 0.85

Calls 1

SetTimerFunction · 0.85

Tested by

no test coverage detected