diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-12-07 16:28:21 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-02-12 09:08:36 +0100 |
commit | 0bde56b1b4ef7468188712c86e6bd2793532ddc9 (patch) | |
tree | aaca04985241fb16cb1ad6c856e5c87f6fd8a36e /cpukit/score/src/threadinitialize.c | |
parent | score: Simplify thread stack allocation (diff) | |
download | rtems-0bde56b1b4ef7468188712c86e6bd2793532ddc9.tar.bz2 |
score: Simplify thread stack free
Update #3835.
Diffstat (limited to 'cpukit/score/src/threadinitialize.c')
-rw-r--r-- | cpukit/score/src/threadinitialize.c | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/cpukit/score/src/threadinitialize.c b/cpukit/score/src/threadinitialize.c index 3b04ed26ab..c6e8abf979 100644 --- a/cpukit/score/src/threadinitialize.c +++ b/cpukit/score/src/threadinitialize.c @@ -86,30 +86,21 @@ bool _Thread_Initialize( (char *) the_thread + add_on->source_offset; } - /* - * Allocate and Initialize the stack for this thread. - */ - #if !defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API) + /* Allocate the stack for this thread */ +#if defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API) + if ( stack_area == NULL ) { +#endif stack_size = _Stack_Ensure_minimum( stack_size ); stack_area = _Stack_Allocate( stack_size ); if ( stack_area == NULL ) { return false; } - #else - if ( stack_area == NULL ) { - stack_size = _Stack_Ensure_minimum( stack_size ); - stack_area = _Stack_Allocate( stack_size ); - - if ( stack_area == NULL ) { - return false; - } - the_thread->Start.core_allocated_stack = true; - } else { - the_thread->Start.core_allocated_stack = false; - } - #endif + the_thread->Start.allocated_stack = stack_area; +#if defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API) + } +#endif _Stack_Initialize( &the_thread->Start.Initial_stack, @@ -320,6 +311,6 @@ failed: _Workspace_Free( fp_area ); #endif - _Thread_Stack_Free( the_thread ); + _Stack_Free( the_thread->Start.allocated_stack ); return false; } |