[rtems commit] score: Add optional _CPU_Context_Destroy()
Sebastian Huber
sebh at rtems.org
Tue Jul 25 09:44:24 UTC 2017
Module: rtems
Branch: master
Commit: b2e1bded07232290f0edcb19e03b18dc4e8bce67
Changeset: http://git.rtems.org/rtems/commit/?id=b2e1bded07232290f0edcb19e03b18dc4e8bce67
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Tue Jul 18 14:53:16 2017 +0200
score: Add optional _CPU_Context_Destroy()
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 62e1a91..c16adc7 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 46cb460..990a602 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_Destroy( _the_thread, _the_context ) \
+ _CPU_Context_Destroy( _the_thread, _the_context )
+#else
+ #define _Context_Destroy( _the_thread, _the_context )
+#endif
+
#ifdef __cplusplus
}
#endif
diff --git a/cpukit/score/src/threadrestart.c b/cpukit/score/src/threadrestart.c
index 5938dcf..7ee1f88 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_Destroy( the_thread, &the_thread->Registers );
_Objects_Free( &information->Objects, &the_thread->Object );
}
More information about the vc
mailing list