From eec08efc9048111f47f42142c30a92683bf6756c Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 15 Jun 2016 06:59:57 +0200 Subject: posix: Rework sporadic server scheduling policy Instead of lowering the priority in case the initial budget is consumed raise the priority for each new period. Restore the normal priority once the initial budget is consumed. This makes it later easier to combine the high priority phase with temporary priority boosts (e.g. via priority ceiling and inheritance). Use the thread lock to protect the POSIX thread attributes instead of the thread state lock. This makes it easier to change the thread priority and keep the POSIX attributes consistent. Fixes a false positive use of uninitialized variable warning. --- cpukit/posix/include/rtems/posix/pthreadimpl.h | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) (limited to 'cpukit/posix/include/rtems/posix/pthreadimpl.h') diff --git a/cpukit/posix/include/rtems/posix/pthreadimpl.h b/cpukit/posix/include/rtems/posix/pthreadimpl.h index ba99392574..988246ed53 100644 --- a/cpukit/posix/include/rtems/posix/pthreadimpl.h +++ b/cpukit/posix/include/rtems/posix/pthreadimpl.h @@ -62,7 +62,7 @@ RTEMS_INLINE_ROUTINE void _POSIX_Threads_Sporadic_timer_insert( _Timespec_To_ticks( &api->Attributes.schedparam.sched_ss_init_budget ); _Watchdog_Per_CPU_insert_relative( - &api->Sporadic_timer, + &api->Sporadic.Timer, _Per_CPU_Get(), _Timespec_To_ticks( &api->Attributes.schedparam.sched_ss_repl_period ) ); @@ -80,21 +80,6 @@ void _POSIX_Threads_Sporadic_budget_callout( Thread_Control *the_thread ); -/** - * This routine supports the sporadic scheduling algorithm. It - * is scheduled to be executed at the end of each replenishment - * period. In sporadic scheduling a thread will execute at a - * high priority for a user specified amount of CPU time. When - * it exceeds that amount of CPU time, its priority is automatically - * lowered. This TSR is executed when it is time to replenish - * the thread's processor budget and raise its priority. - * - * @param[in] id is ignored - * @param[in] argument is a pointer to the Thread_Control structure - * for the thread being replenished. - */ -void _POSIX_Threads_Sporadic_budget_TSR( Watchdog_Control *watchdog ); - /** * @brief Translate sched_param into SuperCore terms. * -- cgit v1.2.3