[rtems commit] score: Prevent assignment to _Thread_Executing

Sebastian Huber sebh at rtems.org
Mon Nov 7 06:45:30 UTC 2016


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

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri Nov  4 13:19:11 2016 +0100

score: Prevent assignment to _Thread_Executing

---

 cpukit/score/include/rtems/score/percpu.h |  2 +-
 testsuites/tmtests/tm26/task1.c           | 12 +-----------
 testsuites/tmtests/tm27/task1.c           | 15 +++++++++++----
 3 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/cpukit/score/include/rtems/score/percpu.h b/cpukit/score/include/rtems/score/percpu.h
index 3e0c348..236cf6a 100644
--- a/cpukit/score/include/rtems/score/percpu.h
+++ b/cpukit/score/include/rtems/score/percpu.h
@@ -682,7 +682,7 @@ bool _Per_CPU_State_wait_for_non_initial_state(
 #define _Thread_Heir \
   _Per_CPU_Get()->heir
 #define _Thread_Executing \
-  _Per_CPU_Get()->executing
+  _Per_CPU_Get_executing( _Per_CPU_Get() )
 #define _ISR_Nest_level \
   _Per_CPU_Get()->isr_nest_level
 #define _CPU_Interrupt_stack_low \
diff --git a/testsuites/tmtests/tm26/task1.c b/testsuites/tmtests/tm26/task1.c
index 173cf7f..9d157e9 100644
--- a/testsuites/tmtests/tm26/task1.c
+++ b/testsuites/tmtests/tm26/task1.c
@@ -123,17 +123,7 @@ static void set_thread_heir( Thread_Control *thread )
 
 static void set_thread_executing( Thread_Control *thread )
 {
-#if defined( PREVENT_SMP_ASSERT_FAILURES )
-  ISR_Level level;
-
-  _ISR_Local_disable( level );
-#endif
-
-  _Thread_Executing = thread;
-
-#if defined( PREVENT_SMP_ASSERT_FAILURES )
-  _ISR_Local_enable( level );
-#endif
+  _Per_CPU_Get_snapshot()->executing = thread;
 }
 
 static void thread_resume( Thread_Control *thread )
diff --git a/testsuites/tmtests/tm27/task1.c b/testsuites/tmtests/tm27/task1.c
index 9126391..c89c095 100644
--- a/testsuites/tmtests/tm27/task1.c
+++ b/testsuites/tmtests/tm27/task1.c
@@ -46,6 +46,11 @@ rtems_isr Isr_handler(
   rtems_vector_number vector
 );
 
+static void set_thread_executing( Thread_Control *thread )
+{
+  _Per_CPU_Get_snapshot()->executing = thread;
+}
+
 rtems_task Init(
   rtems_task_argument argument
 )
@@ -191,8 +196,9 @@ rtems_task Task_1(
   _ISR_Local_disable(level);
 #endif
 
-  _Thread_Executing =
-        (Thread_Control *) _Chain_First(&scheduler_context->Ready[LOW_PRIORITY]);
+  set_thread_executing(
+    (Thread_Control *) _Chain_First(&scheduler_context->Ready[LOW_PRIORITY])
+  );
 
   _Thread_Dispatch_necessary = 1;
 
@@ -265,8 +271,9 @@ rtems_task Task_2(
   _Thread_State_acquire( executing, &state_lock_context );
   _Scheduler_Acquire_critical( scheduler, &scheduler_lock_context );
 
-  _Thread_Executing =
-        (Thread_Control *) _Chain_First(&scheduler_context->Ready[LOW_PRIORITY]);
+  set_thread_executing(
+    (Thread_Control *) _Chain_First(&scheduler_context->Ready[LOW_PRIORITY])
+  );
 
   _Thread_Dispatch_necessary = 1;
 




More information about the vc mailing list