# HG changeset patch # User nickg # Date 1057858867 0 # Node ID 9ab0a182923a16d326e3b18c8dd4118907a27eb2 # Parent 21a4bd716ae0d7401fce62493e7e7de2d996962f * src/common/clock.cxx (Cyg_Counter::tick): In unsorted list case: moved saving of next node details to before re-insertion of alarms with intervals. The call to add_alarm() can make enough of a difference to the list to need to force a rescan. diff --git a/packages/kernel/current/ChangeLog b/packages/kernel/current/ChangeLog --- a/packages/kernel/current/ChangeLog +++ b/packages/kernel/current/ChangeLog @@ -1,3 +1,10 @@ +2003-07-10 Nick Garnett + + * src/common/clock.cxx (Cyg_Counter::tick): In unsorted list case: + moved saving of next node details to before re-insertion of alarms + with intervals. The call to add_alarm() can make enough of a + difference to the list to need to force a rescan. + 2003-07-06 Bart Veer * include/test/stackmon.h (cyg_test_size_a_stack): diff --git a/packages/kernel/current/src/common/clock.cxx b/packages/kernel/current/src/common/clock.cxx --- a/packages/kernel/current/src/common/clock.cxx +++ b/packages/kernel/current/src/common/clock.cxx @@ -235,6 +235,12 @@ void Cyg_Counter::tick( cyg_uint32 ticks alarm_list_ptr->remove(alarm); + // Save some details of the list state so we can + // detect if it has changed. + next_next = next->get_next(); + next_prev = next->get_prev(); + head = alarm_list_ptr->get_head(); + if( alarm->interval != 0 ) { // The alarm has a retrigger interval. @@ -245,12 +251,6 @@ void Cyg_Counter::tick( cyg_uint32 ticks } else alarm->enabled = false; - // Save some details of the list state so we can - // detect if it has changed. - next_next = next->get_next(); - next_prev = next->get_prev(); - head = alarm_list_ptr->get_head(); - CYG_INSTRUMENT_ALARM( CALL, this, alarm ); // Call alarm function