From 24934e36e2513f972510d7c746103be1f766dc6a Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 3 Apr 2014 15:03:35 +0200 Subject: score: Add scheduler control to scheduler ops Scheduler operations must be free of a global scheduler context to enable partitioned/clustered scheduling. --- cpukit/score/src/schedulerpriorityyield.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'cpukit/score/src/schedulerpriorityyield.c') diff --git a/cpukit/score/src/schedulerpriorityyield.c b/cpukit/score/src/schedulerpriorityyield.c index 1e83c557cf..2bcefa5eb7 100644 --- a/cpukit/score/src/schedulerpriorityyield.c +++ b/cpukit/score/src/schedulerpriorityyield.c @@ -22,25 +22,30 @@ #include #include -void _Scheduler_priority_Yield( Thread_Control *thread ) +void _Scheduler_priority_Yield( + Scheduler_Control *base, + Thread_Control *the_thread +) { Scheduler_priority_Per_thread *sched_info_of_thread = - _Scheduler_priority_Get_scheduler_info( thread ); + _Scheduler_priority_Get_scheduler_info( the_thread ); Chain_Control *ready_chain = sched_info_of_thread->ready_chain; ISR_Level level; + (void) base; + _ISR_Disable( level ); if ( !_Chain_Has_only_one_node( ready_chain ) ) { - _Chain_Extract_unprotected( &thread->Object.Node ); - _Chain_Append_unprotected( ready_chain, &thread->Object.Node ); + _Chain_Extract_unprotected( &the_thread->Object.Node ); + _Chain_Append_unprotected( ready_chain, &the_thread->Object.Node ); _ISR_Flash( level ); - if ( _Thread_Is_heir( thread ) ) + if ( _Thread_Is_heir( the_thread ) ) _Thread_Heir = (Thread_Control *) _Chain_First( ready_chain ); _Thread_Dispatch_necessary = true; } - else if ( !_Thread_Is_heir( thread ) ) + else if ( !_Thread_Is_heir( the_thread ) ) _Thread_Dispatch_necessary = true; _ISR_Enable( level ); -- cgit v1.2.3