Lines Matching refs:alarm
42 static void OSi_InsertVAlarm(OSVAlarm *alarm);
43 static void OSi_SetNextVAlarm(OSVAlarm *alarm);
44 static void OSi_AppendVAlarm(OSVAlarm *alarm);
46 static int OSi_CompareVCount(OSVAlarm *alarm, s32 currentVCount, s32 currentVFrame);
158 static void OSi_InsertVAlarm(OSVAlarm *alarm) in OSi_InsertVAlarm() argument
167 if ((next->frame < alarm->frame) || in OSi_InsertVAlarm()
168 (next->frame == alarm->frame) && (next->fire <= alarm->fire)) in OSi_InsertVAlarm()
177 alarm->prev = prev; in OSi_InsertVAlarm()
178 alarm->next = next; in OSi_InsertVAlarm()
181 next->prev = alarm; in OSi_InsertVAlarm()
186 prev->next = alarm; in OSi_InsertVAlarm()
190 OSi_VAlarmQueue.head = alarm; in OSi_InsertVAlarm()
191 OSi_SetNextVAlarm(alarm); in OSi_InsertVAlarm()
198 OSi_AppendVAlarm(alarm); in OSi_InsertVAlarm()
211 static void OSi_AppendVAlarm(OSVAlarm *alarm) in OSi_AppendVAlarm() argument
216 alarm->prev = prev; in OSi_AppendVAlarm()
217 alarm->next = NULL; in OSi_AppendVAlarm()
220 OSi_VAlarmQueue.tail = alarm; in OSi_AppendVAlarm()
225 prev->next = alarm; in OSi_AppendVAlarm()
229 OSi_VAlarmQueue.head = alarm; in OSi_AppendVAlarm()
230 OSi_SetNextVAlarm(alarm); in OSi_AppendVAlarm()
243 static void OSi_DetachVAlarm(OSVAlarm *alarm) in OSi_DetachVAlarm() argument
248 if (!alarm) in OSi_DetachVAlarm()
253 prev = alarm->prev; in OSi_DetachVAlarm()
254 next = alarm->next; in OSi_DetachVAlarm()
289 void OS_CreateVAlarm(OSVAlarm *alarm) in OS_CreateVAlarm() argument
292 SDK_ASSERT(alarm); in OS_CreateVAlarm()
294 alarm->handler = 0; in OS_CreateVAlarm()
295 alarm->tag = 0; in OS_CreateVAlarm()
297 alarm->finish = FALSE; in OS_CreateVAlarm()
313 void OS_SetVAlarm(OSVAlarm *alarm, s16 count, s16 delay, OSVAlarmHandler handler, void *arg) in OS_SetVAlarm() argument
322 if (!alarm || alarm->handler) in OS_SetVAlarm()
336 alarm->period = FALSE; in OS_SetVAlarm()
339 alarm->fire = count; in OS_SetVAlarm()
340 alarm->frame = (u32)((count > currentVCount) ? currentVFrame : (currentVFrame + 1)); in OS_SetVAlarm()
343 alarm->delay = delay; in OS_SetVAlarm()
346 alarm->handler = handler; in OS_SetVAlarm()
347 alarm->arg = arg; in OS_SetVAlarm()
350 alarm->canceled = FALSE; in OS_SetVAlarm()
353 OSi_InsertVAlarm(alarm); in OS_SetVAlarm()
371 void OS_SetPeriodicVAlarm(OSVAlarm *alarm, s16 count, s16 delay, OSVAlarmHandler handler, void *arg) in OS_SetPeriodicVAlarm() argument
382 if (!alarm || alarm->handler) in OS_SetPeriodicVAlarm()
396 alarm->period = TRUE; in OS_SetPeriodicVAlarm()
399 alarm->fire = count; in OS_SetPeriodicVAlarm()
400 alarm->frame = (u32)((count > currentVCount) ? currentVFrame : (currentVFrame + 1)); in OS_SetPeriodicVAlarm()
403 alarm->delay = delay; in OS_SetPeriodicVAlarm()
406 alarm->handler = handler; in OS_SetPeriodicVAlarm()
407 alarm->arg = arg; in OS_SetPeriodicVAlarm()
410 alarm->canceled = FALSE; in OS_SetPeriodicVAlarm()
413 OSi_InsertVAlarm(alarm); in OS_SetPeriodicVAlarm()
427 static void OSi_SetNextVAlarm(OSVAlarm *alarm) in OSi_SetNextVAlarm() argument
433 GX_SetVCountEqVal(alarm->fire); in OSi_SetNextVAlarm()
453 void OS_SetVAlarmTag(OSVAlarm *alarm, u32 tag) in OS_SetVAlarmTag() argument
457 SDK_ASSERT(alarm); in OS_SetVAlarmTag()
466 if (alarm) in OS_SetVAlarmTag()
468 alarm->tag = tag; in OS_SetVAlarmTag()
484 void OS_CancelVAlarm(OSVAlarm *alarm) in OS_CancelVAlarm() argument
489 SDK_ASSERT(alarm); in OS_CancelVAlarm()
491 alarm->canceled = TRUE; in OS_CancelVAlarm()
492 if (alarm->handler == NULL) in OS_CancelVAlarm()
499 OSi_DetachVAlarm(alarm); in OS_CancelVAlarm()
502 alarm->handler = NULL; in OS_CancelVAlarm()
519 OSVAlarm *alarm; in OS_CancelAllVAlarms() local
525 for (alarm = OSi_VAlarmQueue.head, next = alarm ? alarm->next : NULL; in OS_CancelAllVAlarms()
526 alarm; alarm = next, next = alarm ? alarm->next : NULL) in OS_CancelAllVAlarms()
529 OS_CancelVAlarm(alarm); in OS_CancelAllVAlarms()
547 OSVAlarm *alarm; in OS_CancelVAlarms() local
560 for (alarm = OSi_VAlarmQueue.head, next = alarm ? alarm->next : NULL; in OS_CancelVAlarms()
561 alarm; alarm = next, next = alarm ? alarm->next : NULL) in OS_CancelVAlarms()
563 if (alarm->tag == tag) in OS_CancelVAlarms()
566 OS_CancelVAlarm(alarm); in OS_CancelVAlarms()
587 OSVAlarm *alarm; in OSi_VAlarmHandler() local
606 while (NULL != (alarm = OSi_VAlarmQueue.head)) in OSi_VAlarmHandler()
613 check = OSi_CompareVCount(alarm, currentVFrame, currentVCount); in OSi_VAlarmHandler()
617 alarm->arg, alarm->frame, alarm->fire, currentVFrame, currentVCount, check); in OSi_VAlarmHandler()
624 OSi_SetNextVAlarm(alarm); in OSi_VAlarmHandler()
629 if (alarm->fire != GX_GetVCount() || alarm->frame != currentVFrame) in OSi_VAlarmHandler()
643 handler = alarm->handler; in OSi_VAlarmHandler()
644 OSi_DetachVAlarm(alarm); in OSi_VAlarmHandler()
645 alarm->handler = NULL; in OSi_VAlarmHandler()
650 (handler) (alarm->arg); in OSi_VAlarmHandler()
654 if (alarm->period && !alarm->canceled) in OSi_VAlarmHandler()
656 alarm->handler = handler; in OSi_VAlarmHandler()
657 alarm->frame = (u32)OSi_VFrameCount + 1; in OSi_VAlarmHandler()
658 OSi_InsertVAlarm(alarm); in OSi_VAlarmHandler()
664 OSi_DetachVAlarm(alarm); in OSi_VAlarmHandler()
665 alarm->frame = (u32)OSi_VFrameCount + 1; in OSi_VAlarmHandler()
666 OSi_InsertVAlarm(alarm); in OSi_VAlarmHandler()
688 static int OSi_CompareVCount(OSVAlarm *alarm, s32 currentVFrame, s32 currentVCount) in OSi_CompareVCount() argument
693 delayVFrame = currentVFrame - (s32)alarm->frame; // get diff for safety against overflow in OSi_CompareVCount()
694 delayVCount = currentVCount - (s32)alarm->fire; in OSi_CompareVCount()
713 return (delayVCount <= alarm->delay) ? OSi_VALARM_NOW : OSi_VALARM_TIMEOUT; in OSi_CompareVCount()
759 OSVAlarm *alarm; in OS_DumpVAlarm() local
763 for (alarm = OSi_VAlarmQueue.head; alarm; alarm = next) in OS_DumpVAlarm()
765 next = alarm->next; in OS_DumpVAlarm()
767 OS_Printf("%08x fire=%d:%d delay=%d arg=%2d prev=%08x next=%08x\n", alarm, in OS_DumpVAlarm()
768 alarm->frame, alarm->fire, alarm->delay, alarm->arg, alarm->prev, alarm->next); in OS_DumpVAlarm()