diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-02-07 07:46:38 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-02-07 08:48:18 +0100 |
commit | fbd08066af13beda4abdb25717f66d0a943fc5c8 (patch) | |
tree | 9a340717ad21c96a5272902e23017d12605836ac /cpukit/score/src/threadqops.c | |
parent | bsps/arm: Fix generic timer frequency (diff) | |
download | rtems-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/score/src/threadqops.c')
-rw-r--r-- | cpukit/score/src/threadqops.c | 8 |
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: |