summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/threadinitialize.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-12-07 16:00:58 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-02-12 09:08:35 +0100
commita0211fc9f9883d0a1182548de11ab0e0505a81c6 (patch)
treef7f5ffa7f53492d54100185e5343d9d55dba72fd /cpukit/score/src/threadinitialize.c
parentscore: Remove superfluous FP types/defines (diff)
downloadrtems-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.c29
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;