[rtems commit] score: Fix for RTEMS_DEBUG

Sebastian Huber sebh at rtems.org
Tue Mar 22 06:28:33 UTC 2016


Module:    rtems
Branch:    master
Commit:    baa1362643f20781db1d50a5a4d23e7069d0972a
Changeset: http://git.rtems.org/rtems/commit/?id=baa1362643f20781db1d50a5a4d23e7069d0972a

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Mar 22 07:22:08 2016 +0100

score: Fix for RTEMS_DEBUG

Update #2627.

---

 cpukit/score/include/rtems/score/schedulerimpl.h | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/cpukit/score/include/rtems/score/schedulerimpl.h b/cpukit/score/include/rtems/score/schedulerimpl.h
index a41b7ea..5cf3503 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;



More information about the vc mailing list