void _Scheduler_priority_SMP_Block( Thread_Control *thread ) { Scheduler_SMP_Control *self = _Scheduler_SMP_Instance(); _Scheduler_SMP_Block( self, thread, _Scheduler_priority_SMP_Do_extract, _Scheduler_priority_SMP_Get_highest_ready, _Scheduler_priority_SMP_Move_from_ready_to_scheduled ); }
void _Scheduler_simple_SMP_Block( const Scheduler_Control *scheduler, Thread_Control *thread ) { Scheduler_Context *context = _Scheduler_Get_context( scheduler ); _Scheduler_SMP_Block( context, thread, _Scheduler_simple_SMP_Extract_from_ready, _Scheduler_simple_SMP_Get_highest_ready, _Scheduler_simple_SMP_Move_from_ready_to_scheduled ); }
void _Scheduler_priority_SMP_Block( const Scheduler_Control *scheduler, Thread_Control *thread ) { Scheduler_Context *context = _Scheduler_Get_context( scheduler ); _Scheduler_SMP_Block( context, thread, _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 ); }
/* * This method is very similar to _Scheduler_priority_affinity_SMP_Block * but has the difference that is invokes this scheduler's * get_highest_ready() support method. */ void _Scheduler_priority_affinity_SMP_Block( const Scheduler_Control *scheduler, Thread_Control *thread ) { Scheduler_Context *context = _Scheduler_Get_context( scheduler ); _Scheduler_SMP_Block( context, thread, _Scheduler_priority_SMP_Extract_from_ready, _Scheduler_priority_affinity_SMP_Get_highest_ready, _Scheduler_priority_SMP_Move_from_ready_to_scheduled, _Scheduler_SMP_Allocate_processor_exact ); /* * Since this removed a single thread from the scheduled set * and selected the most appropriate thread from the ready * set to replace it, there should be no need for thread * migrations. */ }