diff options
Diffstat (limited to 'cpukit/score/src/schedulerprioritysmp.c')
-rw-r--r-- | cpukit/score/src/schedulerprioritysmp.c | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/cpukit/score/src/schedulerprioritysmp.c b/cpukit/score/src/schedulerprioritysmp.c index 7262f48e8e..a33b44587f 100644 --- a/cpukit/score/src/schedulerprioritysmp.c +++ b/cpukit/score/src/schedulerprioritysmp.c @@ -50,6 +50,7 @@ void _Scheduler_priority_SMP_Initialize( const Scheduler_Control *scheduler ) _Scheduler_priority_SMP_Get_context( scheduler ); _Scheduler_SMP_Initialize( &self->Base ); + self->idle_ready_queue = &self->Ready[ scheduler->maximum_priority ]; _Priority_bit_map_Initialize( &self->Bit_map ); _Scheduler_priority_Ready_queue_initialize( &self->Ready[ 0 ], @@ -118,7 +119,9 @@ void _Scheduler_priority_SMP_Block( _Scheduler_priority_SMP_Extract_from_ready, _Scheduler_priority_SMP_Get_highest_ready, _Scheduler_priority_SMP_Move_from_ready_to_scheduled, - _Scheduler_SMP_Allocate_processor_lazy + _Scheduler_SMP_Allocate_processor_lazy, + _Scheduler_priority_SMP_Get_idle, + _Scheduler_priority_SMP_Release_idle ); } @@ -136,8 +139,11 @@ static bool _Scheduler_priority_SMP_Enqueue( _Scheduler_priority_SMP_Insert_ready, _Scheduler_SMP_Insert_scheduled, _Scheduler_priority_SMP_Move_from_scheduled_to_ready, + _Scheduler_priority_SMP_Move_from_ready_to_scheduled, _Scheduler_SMP_Get_lowest_scheduled, - _Scheduler_SMP_Allocate_processor_lazy + _Scheduler_SMP_Allocate_processor_lazy, + _Scheduler_priority_SMP_Get_idle, + _Scheduler_priority_SMP_Release_idle ); } @@ -157,7 +163,9 @@ static void _Scheduler_priority_SMP_Enqueue_scheduled( _Scheduler_priority_SMP_Insert_ready, _Scheduler_SMP_Insert_scheduled, _Scheduler_priority_SMP_Move_from_ready_to_scheduled, - _Scheduler_SMP_Allocate_processor_lazy + _Scheduler_SMP_Allocate_processor_lazy, + _Scheduler_priority_SMP_Get_idle, + _Scheduler_priority_SMP_Release_idle ); } @@ -174,7 +182,8 @@ void _Scheduler_priority_SMP_Unblock( thread, node, _Scheduler_priority_SMP_Do_update, - _Scheduler_priority_SMP_Enqueue + _Scheduler_priority_SMP_Enqueue, + _Scheduler_priority_SMP_Release_idle ); } @@ -193,7 +202,8 @@ static bool _Scheduler_priority_SMP_Do_ask_for_help( _Scheduler_SMP_Insert_scheduled, _Scheduler_priority_SMP_Move_from_scheduled_to_ready, _Scheduler_SMP_Get_lowest_scheduled, - _Scheduler_SMP_Allocate_processor_lazy + _Scheduler_SMP_Allocate_processor_lazy, + _Scheduler_priority_SMP_Release_idle ); } @@ -263,7 +273,9 @@ void _Scheduler_priority_SMP_Withdraw_node( _Scheduler_priority_SMP_Extract_from_ready, _Scheduler_priority_SMP_Get_highest_ready, _Scheduler_priority_SMP_Move_from_ready_to_scheduled, - _Scheduler_SMP_Allocate_processor_lazy + _Scheduler_SMP_Allocate_processor_lazy, + _Scheduler_priority_SMP_Get_idle, + _Scheduler_priority_SMP_Release_idle ); } @@ -296,7 +308,9 @@ void _Scheduler_priority_SMP_Clean_sticky( _Scheduler_priority_SMP_Extract_from_ready, _Scheduler_priority_SMP_Get_highest_ready, _Scheduler_priority_SMP_Move_from_ready_to_scheduled, - _Scheduler_SMP_Allocate_processor_lazy + _Scheduler_SMP_Allocate_processor_lazy, + _Scheduler_priority_SMP_Get_idle, + _Scheduler_priority_SMP_Release_idle ); } @@ -328,7 +342,9 @@ Thread_Control *_Scheduler_priority_SMP_Remove_processor( cpu, _Scheduler_SMP_Extract_from_scheduled, _Scheduler_priority_SMP_Extract_from_ready, - _Scheduler_priority_SMP_Enqueue + _Scheduler_priority_SMP_Enqueue, + _Scheduler_priority_SMP_Get_idle, + _Scheduler_priority_SMP_Release_idle ); } |