[rtems commit] score: Optimize default idle task stack allocator

Sebastian Huber sebh at rtems.org
Mon Oct 25 06:00:20 UTC 2021


Module:    rtems
Branch:    master
Commit:    9be97a34db3b712a8a962b3e0d0c134f5055e6d4
Changeset: http://git.rtems.org/rtems/commit/?id=9be97a34db3b712a8a962b3e0d0c134f5055e6d4

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Oct 19 16:37:03 2021 +0200

score: Optimize default idle task stack allocator

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 7c4fd10..7a8a05f 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(RTEMS_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 =



More information about the vc mailing list