summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/threadinitialize.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-12-07 16:28:21 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-02-12 09:08:36 +0100
commit0bde56b1b4ef7468188712c86e6bd2793532ddc9 (patch)
treeaaca04985241fb16cb1ad6c856e5c87f6fd8a36e /cpukit/score/src/threadinitialize.c
parentscore: Simplify thread stack allocation (diff)
downloadrtems-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.c27
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;
}