diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-11-26 10:00:13 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-11-27 10:33:31 +0100 |
commit | 79569ae6558c2c7ad601df429142ca73cbf5a691 (patch) | |
tree | ad6c5115de4c8159fff83eaa34be276220fe35fc /cpukit/score/include | |
parent | bsps/arm: Add .nocache section (diff) | |
download | rtems-79569ae6558c2c7ad601df429142ca73cbf5a691.tar.bz2 |
smp: Fix scheduler helping protocol assertions
Diffstat (limited to 'cpukit/score/include')
-rw-r--r-- | cpukit/score/include/rtems/score/schedulersmpimpl.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/cpukit/score/include/rtems/score/schedulersmpimpl.h b/cpukit/score/include/rtems/score/schedulersmpimpl.h index 0ddfce09fe..e41c7372c0 100644 --- a/cpukit/score/include/rtems/score/schedulersmpimpl.h +++ b/cpukit/score/include/rtems/score/schedulersmpimpl.h @@ -842,19 +842,21 @@ static inline Thread_Control *_Scheduler_SMP_Unblock( Thread_Control *needs_help; if ( unblock ) { - if ( node->state != SCHEDULER_SMP_NODE_READY ) { + if ( node->state == SCHEDULER_SMP_NODE_BLOCKED ) { _Scheduler_SMP_Node_change_state( node, SCHEDULER_SMP_NODE_READY ); needs_help = ( *enqueue_fifo )( context, &node->Base, thread ); } else { _Assert( node->state == SCHEDULER_SMP_NODE_READY ); + _Assert( + node->Base.help_state == SCHEDULER_HELP_ACTIVE_OWNER + || node->Base.help_state == SCHEDULER_HELP_ACTIVE_RIVAL + ); _Assert( node->Base.idle == NULL ); if ( node->Base.accepts_help == thread ) { - _Assert( node->Base.help_state == SCHEDULER_HELP_ACTIVE_OWNER ); needs_help = thread; } else { - _Assert( node->Base.help_state == SCHEDULER_HELP_ACTIVE_RIVAL ); needs_help = NULL; } } |