summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-10-19 12:43:47 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-10-25 18:04:28 +0200
commit90495cab3c5cd0907ed627648d04bbf71193b707 (patch)
treeba39192a370bb8649fe335b633c85149bf51b6b1
parent5d56961ff7236c40c6f87a20b76bad10ea9f2b7e (diff)
score: Scheduler insert after move
Insert nodes after moving the second node to reduce the items in the data structure for the insert operation. This also avoids having two nodes for the same processor inserted into the scheduled chain. Update #4531.
-rw-r--r--cpukit/include/rtems/score/schedulersmpimpl.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/cpukit/include/rtems/score/schedulersmpimpl.h b/cpukit/include/rtems/score/schedulersmpimpl.h
index a074b53a16..a93bb508f9 100644
--- a/cpukit/include/rtems/score/schedulersmpimpl.h
+++ b/cpukit/include/rtems/score/schedulersmpimpl.h
@@ -822,8 +822,8 @@ static inline void _Scheduler_SMP_Enqueue_to_scheduled(
allocate_processor
);
- ( *insert_scheduled )( context, node, priority );
( *move_from_scheduled_to_ready )( context, lowest_scheduled );
+ ( *insert_scheduled )( context, node, priority );
_Scheduler_Release_idle_thread(
context,
@@ -837,8 +837,8 @@ static inline void _Scheduler_SMP_Enqueue_to_scheduled(
);
_Scheduler_SMP_Node_change_state( node, SCHEDULER_SMP_NODE_SCHEDULED );
- ( *insert_scheduled )( context, node, priority );
( *move_from_scheduled_to_ready )( context, lowest_scheduled );
+ ( *insert_scheduled )( context, node, priority );
_Scheduler_Exchange_idle_thread( node, lowest_scheduled );
} else {
@@ -997,8 +997,8 @@ static inline bool _Scheduler_SMP_Enqueue_scheduled(
allocate_processor
);
- ( *insert_ready )( context, node, insert_priority );
( *move_from_ready_to_scheduled )( context, highest_ready );
+ ( *insert_ready )( context, node, insert_priority );
idle = _Scheduler_Release_idle_thread(
context,
@@ -1013,8 +1013,8 @@ static inline bool _Scheduler_SMP_Enqueue_scheduled(
SCHEDULER_SMP_NODE_SCHEDULED
);
- ( *insert_ready )( context, node, insert_priority );
( *move_from_ready_to_scheduled )( context, highest_ready );
+ ( *insert_ready )( context, node, insert_priority );
_Scheduler_Exchange_idle_thread( highest_ready, node );
return false;
@@ -1522,8 +1522,8 @@ static inline bool _Scheduler_SMP_Ask_for_help(
allocate_processor
);
- ( *insert_scheduled )( context, node, insert_priority );
( *move_from_scheduled_to_ready )( context, lowest_scheduled );
+ ( *insert_scheduled )( context, node, insert_priority );
_Scheduler_Release_idle_thread(
context,