summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/schedulerimpl.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-03-22 07:22:08 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-03-22 07:22:08 +0100
commitbaa1362643f20781db1d50a5a4d23e7069d0972a (patch)
tree151893296e573d3e822d56970b0177950ccd804d /cpukit/score/include/rtems/score/schedulerimpl.h
parentrtems: Rework rate-monotonic scheduler (diff)
downloadrtems-baa1362643f20781db1d50a5a4d23e7069d0972a.tar.bz2
score: Fix for RTEMS_DEBUG
Update #2627.
Diffstat (limited to 'cpukit/score/include/rtems/score/schedulerimpl.h')
-rw-r--r--cpukit/score/include/rtems/score/schedulerimpl.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/cpukit/score/include/rtems/score/schedulerimpl.h b/cpukit/score/include/rtems/score/schedulerimpl.h
index a41b7ea62f..5cf3503045 100644
--- a/cpukit/score/include/rtems/score/schedulerimpl.h
+++ b/cpukit/score/include/rtems/score/schedulerimpl.h
@@ -1352,9 +1352,14 @@ RTEMS_INLINE_ROUTINE void _Scheduler_Update_heir(
if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {
#if defined(RTEMS_SMP)
- /* We need this state only for _Thread_Get_CPU_time_used() */
- _Scheduler_Thread_change_state( heir, THREAD_SCHEDULER_BLOCKED );
- _Scheduler_Thread_change_state( new_heir, THREAD_SCHEDULER_SCHEDULED );
+ /*
+ * We need this state only for _Thread_Get_CPU_time_used(). Cannot use
+ * _Scheduler_Thread_change_state() since THREAD_SCHEDULER_BLOCKED to
+ * THREAD_SCHEDULER_BLOCKED state changes are illegal for the real SMP
+ * schedulers.
+ */
+ heir->Scheduler.state = THREAD_SCHEDULER_BLOCKED;
+ new_heir->Scheduler.state = THREAD_SCHEDULER_SCHEDULED;
#endif
_Thread_Update_CPU_time_used( heir, _Thread_Get_CPU( heir ) );
_Thread_Heir = new_heir;