summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-11-26 10:00:13 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-11-27 10:33:31 +0100
commit79569ae6558c2c7ad601df429142ca73cbf5a691 (patch)
treead6c5115de4c8159fff83eaa34be276220fe35fc /cpukit/score/include
parentbsps/arm: Add .nocache section (diff)
downloadrtems-79569ae6558c2c7ad601df429142ca73cbf5a691.tar.bz2
smp: Fix scheduler helping protocol assertions
Diffstat (limited to 'cpukit/score/include')
-rw-r--r--cpukit/score/include/rtems/score/schedulersmpimpl.h8
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;
}
}