summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/schedulersmpimpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/include/rtems/score/schedulersmpimpl.h')
-rw-r--r--cpukit/score/include/rtems/score/schedulersmpimpl.h18
1 files changed, 10 insertions, 8 deletions
diff --git a/cpukit/score/include/rtems/score/schedulersmpimpl.h b/cpukit/score/include/rtems/score/schedulersmpimpl.h
index 92a22d2ff8..7a281277fa 100644
--- a/cpukit/score/include/rtems/score/schedulersmpimpl.h
+++ b/cpukit/score/include/rtems/score/schedulersmpimpl.h
@@ -962,7 +962,7 @@ static inline void _Scheduler_SMP_Block(
}
}
-static inline bool _Scheduler_SMP_Unblock(
+static inline void _Scheduler_SMP_Unblock(
Scheduler_Context *context,
Thread_Control *thread,
Scheduler_Node *node,
@@ -972,7 +972,6 @@ static inline bool _Scheduler_SMP_Unblock(
{
Scheduler_SMP_Node_state node_state;
bool unblock;
- bool needs_help;
node_state = _Scheduler_SMP_Node_state( node );
unblock = _Scheduler_Unblock_node(
@@ -986,6 +985,7 @@ static inline bool _Scheduler_SMP_Unblock(
if ( unblock ) {
Priority_Control new_priority;
bool prepend_it;
+ bool needs_help;
new_priority = _Scheduler_Node_get_priority( node, &prepend_it );
(void) prepend_it;
@@ -1004,11 +1004,11 @@ static inline bool _Scheduler_SMP_Unblock(
_Assert( node->idle == NULL );
needs_help = true;
}
- } else {
- needs_help = false;
- }
- return needs_help;
+ if ( needs_help ) {
+ _Scheduler_Ask_for_help( thread );
+ }
+ }
}
static inline void _Scheduler_SMP_Update_priority(
@@ -1069,7 +1069,7 @@ static inline void _Scheduler_SMP_Update_priority(
}
}
-static inline bool _Scheduler_SMP_Yield(
+static inline void _Scheduler_SMP_Yield(
Scheduler_Context *context,
Thread_Control *thread,
Scheduler_Node *node,
@@ -1095,7 +1095,9 @@ static inline bool _Scheduler_SMP_Yield(
needs_help = true;
}
- return needs_help;
+ if ( needs_help ) {
+ _Scheduler_Ask_for_help( thread );
+ }
}
static inline void _Scheduler_SMP_Insert_scheduled_lifo(