diff options
Diffstat (limited to 'cpukit/score')
-rw-r--r-- | cpukit/score/cpu/no_cpu/rtems/score/cpu.h | 19 | ||||
-rw-r--r-- | cpukit/score/include/rtems/score/context.h | 7 | ||||
-rw-r--r-- | cpukit/score/src/threadrestart.c | 2 |
3 files changed, 27 insertions, 1 deletions
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..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 ); } |