diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-12-07 16:00:58 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-02-12 09:08:35 +0100 |
commit | a0211fc9f9883d0a1182548de11ab0e0505a81c6 (patch) | |
tree | f7f5ffa7f53492d54100185e5343d9d55dba72fd /cpukit/score/src/threadinitialize.c | |
parent | score: Remove superfluous FP types/defines (diff) | |
download | rtems-a0211fc9f9883d0a1182548de11ab0e0505a81c6.tar.bz2 |
score: Simplify thread stack allocation
Remove superfluous Thread_Control::Start::stack member.
Update #3835.
Diffstat (limited to '')
-rw-r--r-- | cpukit/score/src/threadinitialize.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/cpukit/score/src/threadinitialize.c b/cpukit/score/src/threadinitialize.c index 83c689eee4..3b04ed26ab 100644 --- a/cpukit/score/src/threadinitialize.c +++ b/cpukit/score/src/threadinitialize.c @@ -43,8 +43,6 @@ bool _Thread_Initialize( ) { uintptr_t tls_size = _TLS_Get_size(); - size_t actual_stack_size = 0; - void *stack = NULL; #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) void *fp_area = NULL; #endif @@ -92,30 +90,31 @@ bool _Thread_Initialize( * Allocate and Initialize the stack for this thread. */ #if !defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API) - actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size ); - if ( !actual_stack_size || actual_stack_size < stack_size ) - return false; /* stack allocation failed */ + stack_size = _Stack_Ensure_minimum( stack_size ); + stack_area = _Stack_Allocate( stack_size ); - stack = the_thread->Start.stack; + if ( stack_area == NULL ) { + return false; + } #else - if ( !stack_area ) { - actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size ); - if ( !actual_stack_size || actual_stack_size < stack_size ) - return false; /* stack allocation failed */ + if ( stack_area == NULL ) { + stack_size = _Stack_Ensure_minimum( stack_size ); + stack_area = _Stack_Allocate( stack_size ); + + if ( stack_area == NULL ) { + return false; + } - stack = the_thread->Start.stack; the_thread->Start.core_allocated_stack = true; } else { - stack = stack_area; - actual_stack_size = stack_size; the_thread->Start.core_allocated_stack = false; } #endif _Stack_Initialize( &the_thread->Start.Initial_stack, - stack, - actual_stack_size + stack_area, + stack_size ); scheduler_index = 0; |