On Mon, Dec 16, 2019 at 7:28 AM Sebastian Huber <sebastian.hu...@embedded-brains.de> wrote: > > Remove superfluous Thread_Control::Start::stack member. > > Update #3835. > --- > cpukit/include/rtems/score/stackimpl.h | 10 ++++++++++ > cpukit/include/rtems/score/thread.h | 2 -- > cpukit/include/rtems/score/threadimpl.h | 17 ----------------- > cpukit/score/src/threadinitialize.c | 29 ++++++++++++++--------------- > cpukit/score/src/threadstackallocate.c | 28 +++++----------------------- > 5 files changed, 29 insertions(+), 57 deletions(-) > > diff --git a/cpukit/include/rtems/score/stackimpl.h > b/cpukit/include/rtems/score/stackimpl.h > index 98eda3148a..6b14560c9b 100644 > --- a/cpukit/include/rtems/score/stackimpl.h > +++ b/cpukit/include/rtems/score/stackimpl.h > @@ -105,6 +105,16 @@ RTEMS_INLINE_ROUTINE size_t _Stack_Ensure_minimum ( > return _Stack_Minimum(); > } > > +/** > + * @brief Allocate the requested stack space. > + * > + * @param stack_size The stack space that is requested. > + * > + * @retval stack_area The allocated stack area. > + * @retval NULL The allocation failed. > + */ > +void *_Stack_Allocate( size_t stack_size ); > + > /** @} */ > > #ifdef __cplusplus > diff --git a/cpukit/include/rtems/score/thread.h > b/cpukit/include/rtems/score/thread.h > index bd8de4ef81..5c62efc1f7 100644 > --- a/cpukit/include/rtems/score/thread.h > +++ b/cpukit/include/rtems/score/thread.h > @@ -209,8 +209,6 @@ typedef struct { > /** This field is the initial FP context area address. */ > Context_Control_fp *fp_context; > #endif > - /** This field is the initial stack area address. */ > - void *stack; > /** The thread-local storage (TLS) area */ > void *tls_area; > } Thread_Start_information; > diff --git a/cpukit/include/rtems/score/threadimpl.h > b/cpukit/include/rtems/score/threadimpl.h > index 2e41b80bd4..937175f713 100644 > --- a/cpukit/include/rtems/score/threadimpl.h > +++ b/cpukit/include/rtems/score/threadimpl.h > @@ -130,23 +130,6 @@ void _Thread_Create_idle(void); > */ > void _Thread_Start_multitasking( void ) RTEMS_NO_RETURN; > > -/** > - * @brief Allocates the requested stack space for the thread. > - * > - * Allocate the requested stack space for the thread. > - * Set the Start.stack field to the address of the stack. > - * > - * @param[out] the_thread The thread where the stack space is requested. > - * @param stack_size The stack space that is requested. > - * > - * @retval actual Size allocated after any adjustment. > - * @retval zero The allocation failed. > - */ > -size_t _Thread_Stack_Allocate( > - Thread_Control *the_thread, > - size_t stack_size > -); > - > /** > * @brief Deallocates thread stack. > * > 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; > diff --git a/cpukit/score/src/threadstackallocate.c > b/cpukit/score/src/threadstackallocate.c > index fd89d7f07f..722de7bfd6 100644 > --- a/cpukit/score/src/threadstackallocate.c > +++ b/cpukit/score/src/threadstackallocate.c > @@ -1,11 +1,11 @@ > /** > * @file > - * > + * > + * @ingroup RTEMSScoreStack > + * > * @brief Stack Allocate Helper > - * @ingroup RTEMSScoreThread > */ > > - > /* > * COPYRIGHT (c) 1989-2010. > * On-Line Applications Research Corporation (OAR). > @@ -19,28 +19,10 @@ > #include "config.h" > #endif > > -#include <rtems/score/threadimpl.h> > #include <rtems/score/stackimpl.h> > #include <rtems/config.h> > > -size_t _Thread_Stack_Allocate( > - Thread_Control *the_thread, > - size_t stack_size > -) > +void *_Stack_Allocate( size_t stack_size )
The function is in a new namespace. Should the change reflect in filename too? > { > - void *stack_addr = 0; > - size_t the_stack_size; > - rtems_stack_allocate_hook stack_allocate_hook = > - rtems_configuration_get_stack_allocate_hook(); > - > - the_stack_size = _Stack_Ensure_minimum( stack_size ); > - > - stack_addr = (*stack_allocate_hook)( the_stack_size ); > - > - if ( !stack_addr ) > - the_stack_size = 0; > - > - the_thread->Start.stack = stack_addr; > - > - return the_stack_size; > + return ( *rtems_configuration_get_stack_allocate_hook() )( stack_size ); > } > -- > 2.16.4 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel