don't walk all the timers as they're sorted. Modified: trunk/reactos/ntoskrnl/ke/timer.c _____
Modified: trunk/reactos/ntoskrnl/ke/timer.c --- trunk/reactos/ntoskrnl/ke/timer.c 2005-02-14 16:49:36 UTC (rev 13567) +++ trunk/reactos/ntoskrnl/ke/timer.c 2005-02-14 17:03:16 UTC (rev 13568) @@ -245,15 +245,14 @@
Timer = CONTAINING_RECORD(CurrentEntry, KTIMER, TimerListEntry); DPRINT("Looping for Timer: %x. Duetime: %I64d. InterruptTime %I64d \n", Timer, Timer->DueTime.QuadPart, InterruptTime);
- CurrentEntry = CurrentEntry->Flink; - /* Check if we have to Expire it */ - if (InterruptTime >= Timer->DueTime.QuadPart) { + if (InterruptTime < Timer->DueTime.QuadPart) break; + + CurrentEntry = CurrentEntry->Flink;
- /* Remove it from the Timer List, add it to the Expired List */ - RemoveEntryList(&Timer->TimerListEntry); - InsertTailList(&ExpiredTimerList, &Timer->TimerListEntry); - } + /* Remove it from the Timer List, add it to the Expired List */ + RemoveEntryList(&Timer->TimerListEntry); + InsertTailList(&ExpiredTimerList, &Timer->TimerListEntry); }
/* Expire the Timers */