diff --git a/cpukit/score/ChangeLog b/cpukit/score/ChangeLog index 9d3c26b838..2aca4ed4cb 100644 --- a/cpukit/score/ChangeLog +++ b/cpukit/score/ChangeLog @@ -1,3 +1,9 @@ +2004-07-25 Thomas Rauscher + + PR 609/rtems + * src/threaddispatch.c: Close race condition between _Thread_Dispatch + and _Thread_Tickle_timeslice. + 2004-07-25 Victor Vengerov PR 654/rtems diff --git a/cpukit/score/src/threaddispatch.c b/cpukit/score/src/threaddispatch.c index 9ba69a96ac..d4f73b49a7 100644 --- a/cpukit/score/src/threaddispatch.c +++ b/cpukit/score/src/threaddispatch.c @@ -70,6 +70,8 @@ void _Thread_Dispatch( void ) _Thread_Executing = heir; executing->rtems_ada_self = rtems_ada_self; rtems_ada_self = heir->rtems_ada_self; + if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE ) + heir->cpu_time_budget = _Thread_Ticks_per_timeslice; _ISR_Enable( level ); heir->ticks_executed++; @@ -84,9 +86,6 @@ void _Thread_Dispatch( void ) _User_extensions_Thread_switch( executing, heir ); - if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE ) - heir->cpu_time_budget = _Thread_Ticks_per_timeslice; - /* * If the CPU has hardware floating point, then we must address saving * and restoring it as part of the context switch.