diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-10-20 08:24:24 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-10-27 10:25:25 +0200 |
commit | 303439bd65b05efd6297f3d99bf86d5bd2c31e25 (patch) | |
tree | b72afca928d9bde97f161fce3e0f3b193140b3e0 | |
parent | 151f446a122c75cc4d08aed77327e2bf28cd31fa (diff) |
score: Add SMP scheduler idle exchange callback
Update #4531.
-rw-r--r-- | cpukit/include/rtems/score/schedulersmpimpl.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/cpukit/include/rtems/score/schedulersmpimpl.h b/cpukit/include/rtems/score/schedulersmpimpl.h index 499cff5c6c..54ed976e85 100644 --- a/cpukit/include/rtems/score/schedulersmpimpl.h +++ b/cpukit/include/rtems/score/schedulersmpimpl.h @@ -847,6 +847,7 @@ static inline void _Scheduler_SMP_Enqueue_to_scheduled( ( *insert_scheduled )( context, node, priority ); _Scheduler_Exchange_idle_thread( node, lowest_scheduled ); + ( *allocate_processor )( context, node, lowest_scheduled, _Thread_Get_CPU( _Scheduler_Node_get_user( node ) ) ); } else { _Assert( action == SCHEDULER_TRY_TO_SCHEDULE_DO_BLOCK ); _Scheduler_SMP_Node_change_state( node, SCHEDULER_SMP_NODE_BLOCKED ); @@ -1021,6 +1022,7 @@ static inline void _Scheduler_SMP_Enqueue_scheduled( ( *insert_ready )( context, node, insert_priority ); _Scheduler_Exchange_idle_thread( highest_ready, node ); + ( *allocate_processor )( context, highest_ready, node, _Thread_Get_CPU( _Scheduler_Node_get_user( highest_ready ) ) ); return; } else { _Assert( action == SCHEDULER_TRY_TO_SCHEDULE_DO_BLOCK ); @@ -1111,6 +1113,7 @@ static inline void _Scheduler_SMP_Schedule_highest_ready( ( *move_from_ready_to_scheduled )( context, highest_ready ); _Scheduler_Exchange_idle_thread( highest_ready, victim ); + ( *allocate_processor )( context, highest_ready, victim, _Thread_Get_CPU( _Scheduler_Node_get_user( highest_ready ) ) ); } else { _Assert( action == SCHEDULER_TRY_TO_SCHEDULE_DO_BLOCK ); @@ -1184,6 +1187,7 @@ static inline void _Scheduler_SMP_Preempt_and_schedule_highest_ready( ( *move_from_ready_to_scheduled )( context, highest_ready ); _Scheduler_Exchange_idle_thread( highest_ready, victim ); + ( *allocate_processor )( context, highest_ready, victim, _Thread_Get_CPU( _Scheduler_Node_get_user( highest_ready ) ) ); } else { _Assert( action == SCHEDULER_TRY_TO_SCHEDULE_DO_BLOCK ); |