From b2e1bded07232290f0edcb19e03b18dc4e8bce67 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 18 Jul 2017 14:53:16 +0200 Subject: 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(-) (limited to 'cpukit') 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 @@ -815,6 +815,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 * diff --git a/cpukit/score/include/rtems/score/context.h b/cpukit/score/include/rtems/score/context.h index 46cb4606b1..990a602396 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 5938dcfecf..7ee1f880c4 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 ); } -- cgit v1.2.3