summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-02-07 07:46:38 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-02-07 08:48:18 +0100
commitfbd08066af13beda4abdb25717f66d0a943fc5c8 (patch)
tree9a340717ad21c96a5272902e23017d12605836ac /cpukit
parentbsps/arm: Fix generic timer frequency (diff)
downloadrtems-fbd08066af13beda4abdb25717f66d0a943fc5c8.tar.bz2
score: Fix plain priority thread queues (SMP)
We must add/remove the priority queue to the FIFO of priority queues.
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/score/src/threadqops.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/cpukit/score/src/threadqops.c b/cpukit/score/src/threadqops.c
index 445fc4c835..dbabf9c8ac 100644
--- a/cpukit/score/src/threadqops.c
+++ b/cpukit/score/src/threadqops.c
@@ -360,6 +360,10 @@ static void _Thread_queue_Priority_priority_actions(
switch ( priority_action_type ) {
#if defined(RTEMS_SMP)
case PRIORITY_ACTION_ADD:
+ if ( _Priority_Is_empty( &priority_queue->Queue ) ) {
+ _Chain_Append_unprotected( &heads->Heads.Fifo, &priority_queue->Node );
+ }
+
_Priority_Plain_insert(
&priority_queue->Queue,
&scheduler_node->Wait.Priority.Node,
@@ -371,6 +375,10 @@ static void _Thread_queue_Priority_priority_actions(
&priority_queue->Queue,
&scheduler_node->Wait.Priority.Node
);
+
+ if ( _Priority_Is_empty( &priority_queue->Queue ) ) {
+ _Chain_Extract_unprotected( &priority_queue->Node );
+ }
break;
#endif
default: