[PATCH 2/2] score: Optimize default idle task stack allocator

Sebastian Huber sebastian.huber at embedded-brains.de
Tue Oct 19 14:44:39 UTC 2021


Update #4524.
---
 cpukit/score/src/stackallocatorforidle.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/cpukit/score/src/stackallocatorforidle.c b/cpukit/score/src/stackallocatorforidle.c
index 7c4fd10c7d..8a3b1e5d25 100644
--- a/cpukit/score/src/stackallocatorforidle.c
+++ b/cpukit/score/src/stackallocatorforidle.c
@@ -31,6 +31,7 @@
 
 #include <rtems/score/stack.h>
 #include <rtems/score/thread.h>
+#include <rtems/score/assert.h>
 
 /**
  * @brief Default stack allocator allocate for idle handler.
@@ -41,18 +42,23 @@
  * The default allocator for IDLE thread stacks gets the memory from a
  * statically allocated area provided via confdefs.h.
  *
- * @param cpu Index of the CPU for the IDLE thread using this stack
+ * @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.
  *
  * @retval NULL Not enough memory (never returned).
  * @retval other Pointer to begin of stack area.
  */
 static void *_Stack_Allocator_allocate_for_idle_default(
-  uint32_t  cpu,
+  uint32_t  cpu_index,
   size_t    stack_size
 )
 {
-  return &_Thread_Idle_stacks[ cpu * stack_size ];
+#if defined(RTMS_SMP)
+  return &_Thread_Idle_stacks[ cpu_index * stack_size ];
+#else
+  _Assert( cpu_index == 0 );
+  return &_Thread_Idle_stacks[ 0 ];
+#endif
 }
 
 const Stack_Allocator_allocate_for_idle _Stack_Allocator_allocate_for_idle =
-- 
2.31.1



More information about the devel mailing list