[PATCH 1/4] score: Add optional _CPU_Context_Destroy()

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Jul 19 08:21:15 UTC 2017


Update #3077.
---
 cpukit/score/cpu/no_cpu/rtems/score/cpu.h  | 19 +++++++++++++++++++
 cpukit/score/include/rtems/score/context.h |  7 +++++++
 cpukit/score/src/threadrestart.c           |  2 +-
 3 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/cpukit/score/cpu/no_cpu/rtems/score/cpu.h b/cpukit/score/cpu/no_cpu/rtems/score/cpu.h
index 62e1a91cb9..c16adc7327 100644
--- a/cpukit/score/cpu/no_cpu/rtems/score/cpu.h
+++ b/cpukit/score/cpu/no_cpu/rtems/score/cpu.h
@@ -816,6 +816,25 @@ uint32_t   _CPU_ISR_Get_level( void );
 /* Context handler macros */
 
 /**
+ * @ingroup CPUContext
+ *
+ * @brief Destroys the context of the thread.
+ *
+ * It must be implemented as a macro and an implementation is optional.  The
+ * default implementation does nothing.
+ *
+ * @param[in] _the_thread The corresponding thread.
+ * @param[in] _the_context The context to destroy.
+ *
+ * Port Specific Information:
+ *
+ * XXX document implementation including references if appropriate
+ */
+#define _CPU_Context_Destroy( _the_thread, _the_context ) \
+  { \
+  }
+
+/**
  *  @ingroup CPUContext
  * 
  * Initialize the context to a state suitable for starting a
diff --git a/cpukit/score/include/rtems/score/context.h b/cpukit/score/include/rtems/score/context.h
index 46cb4606b1..4795d2ea67 100644
--- a/cpukit/score/include/rtems/score/context.h
+++ b/cpukit/score/include/rtems/score/context.h
@@ -146,6 +146,13 @@ extern "C" {
 #define _Context_Save_fp( _fp ) \
    _CPU_Context_save_fp( _fp )
 
+#if defined(_CPU_Context_Destroy)
+  #define _Context_Destory( _the_thread, _the_context ) \
+    _CPU_Context_Destroy( _the_thread, _the_context )
+#else
+  #define _Context_Destory( _the_thread, _the_context )
+#endif
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/cpukit/score/src/threadrestart.c b/cpukit/score/src/threadrestart.c
index 5938dcfecf..adb6be71bf 100644
--- a/cpukit/score/src/threadrestart.c
+++ b/cpukit/score/src/threadrestart.c
@@ -205,7 +205,7 @@ static void _Thread_Free( Thread_Control *the_thread )
 #endif
 
   _Thread_queue_Destroy( &the_thread->Join_queue );
-
+  _Context_Destory( the_thread, &the_thread->Registers );
   _Objects_Free( &information->Objects, &the_thread->Object );
 }
 
-- 
2.12.3



More information about the devel mailing list