diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-09-26 09:31:29 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-10-14 07:29:41 +0200 |
commit | 2846b17d7e34f1bdcac579ea1e0fbcb251aff1cb (patch) | |
tree | 417358a08e61a123e196a378a29bed07ae9806f8 /cpukit/score | |
parent | score: Require power of two CPU_STACK_MINIMUM_SIZE (diff) | |
download | rtems-2846b17d7e34f1bdcac579ea1e0fbcb251aff1cb.tar.bz2 |
config: Changeable size for IDLE stack allocator
Allow the IDLE stack allocator to change the stack size. This can be
used by applications with a very dynamic thread-local storage size to
adjust the thread storage area of the IDLE tasks dynamically.
Update #4524.
Diffstat (limited to 'cpukit/score')
-rw-r--r-- | cpukit/score/src/stackallocatorforidle.c | 19 | ||||
-rw-r--r-- | cpukit/score/src/threadcreateidle.c | 4 |
2 files changed, 11 insertions, 12 deletions
diff --git a/cpukit/score/src/stackallocatorforidle.c b/cpukit/score/src/stackallocatorforidle.c index 76b6ace1f4..c97dde030f 100644 --- a/cpukit/score/src/stackallocatorforidle.c +++ b/cpukit/score/src/stackallocatorforidle.c @@ -34,27 +34,26 @@ #include <rtems/score/assert.h> /** - * @brief Default stack allocator allocate for idle handler. - * - * The allocate for idle handler is optional even when the user thread stack - * allocator and deallocator are configured. + * @brief Default stack allocator allocate for IDLE threads. * * The default allocator for IDLE thread stacks gets the memory from a * statically allocated area provided via confdefs.h. * - * @param cpu_index Index of the CPU for the IDLE thread using this stack - * @param stack_size The size of the stack area to allocate in bytes. + * @param cpu is the index of the CPU for the IDLE thread using this stack. + * + * @param stack_size[in] is pointer to a size_t object. On function + * entry, the object contains the size of the stack area to allocate in + * bytes. * - * @retval NULL Not enough memory (never returned). - * @retval other Pointer to begin of stack area. + * @return Returns the pointer to begin of the allocated stack area. */ static void *_Stack_Allocator_allocate_for_idle_default( uint32_t cpu_index, - size_t stack_size + size_t *stack_size ) { #if defined(RTEMS_SMP) - return &_Thread_Idle_stacks[ cpu_index * stack_size ]; + return &_Thread_Idle_stacks[ cpu_index * ( *stack_size ) ]; #else _Assert( cpu_index == 0 ); return &_Thread_Idle_stacks[ 0 ]; diff --git a/cpukit/score/src/threadcreateidle.c b/cpukit/score/src/threadcreateidle.c index b5e0cfdc9b..3e3c7cfc83 100644 --- a/cpukit/score/src/threadcreateidle.c +++ b/cpukit/score/src/threadcreateidle.c @@ -73,9 +73,9 @@ static void _Thread_Create_idle_for_CPU( Per_CPU_Control *cpu ) * The IDLE thread stacks may be statically allocated or there may be a * custom allocator provided just as with user threads. */ - config.stack_area = (*_Stack_Allocator_allocate_for_idle)( + config.stack_area = ( *_Stack_Allocator_allocate_for_idle )( _Per_CPU_Get_index( cpu ), - config.stack_size + &config.stack_size ); /* |