[rtems commit] score: Rework _Thread_Exit()

Sebastian Huber sebh at rtems.org
Fri May 20 05:57:41 UTC 2016


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

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu May 12 17:39:22 2016 +0200

score: Rework _Thread_Exit()

Rework _Thread_Exit() to use _Thread_Change_life_locked().

Update #2555.
Update #2626.

---

 cpukit/score/src/threadrestart.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/cpukit/score/src/threadrestart.c b/cpukit/score/src/threadrestart.c
index fe9bca1..e2f82a3 100644
--- a/cpukit/score/src/threadrestart.c
+++ b/cpukit/score/src/threadrestart.c
@@ -401,12 +401,24 @@ void _Thread_Close( Thread_Control *the_thread, Thread_Control *executing )
 
 void _Thread_Exit( Thread_Control *executing )
 {
-  _Thread_Request_life_change(
-    executing,
+  ISR_lock_Context lock_context;
+
+  _Assert(
+    _Watchdog_Get_state( &executing->Timer.Watchdog ) == WATCHDOG_INACTIVE
+  );
+  _Assert(
+    executing->current_state == STATES_READY
+      || executing->current_state == STATES_SUSPENDED
+  );
+
+  _Thread_State_acquire( executing, &lock_context );
+  _Thread_Change_life_locked(
     executing,
-    executing->current_priority,
-    THREAD_LIFE_TERMINATING
+    0,
+    THREAD_LIFE_TERMINATING,
+    THREAD_LIFE_PROTECTED
   );
+  _Thread_State_release( executing, &lock_context );
 }
 
 bool _Thread_Restart(



More information about the vc mailing list