[rtems-central commit] spec: Add CONFIGURE_IDLE_TASK_STORAGE_SIZE

Sebastian Huber sebh at rtems.org
Fri Oct 14 12:52:41 UTC 2022


Module:    rtems-central
Branch:    master
Commit:    97236fdc2e3392804a825fa95d7732c7b5802e67
Changeset: http://git.rtems.org/rtems-central/commit/?id=97236fdc2e3392804a825fa95d7732c7b5802e67

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu Sep 29 09:25:28 2022 +0200

spec: Add CONFIGURE_IDLE_TASK_STORAGE_SIZE

---

 generate_membench.py                               |  2 +
 spec/acfg/constraint/idle-task-min-stack-size.yml  | 12 ++++
 .../init-task-stack-allocator-for-idle.yml         |  2 +-
 .../task-stack-allocator-for-idle-do-or-die.yml    | 13 ++++
 ...task-stack-allocator-for-idle-increase-size.yml | 12 ++++
 spec/acfg/if/idle-task-storage-size.yml            | 55 +++++++++++++++
 spec/acfg/if/task-stack-allocator-for-idle.yml     | 29 ++++++--
 spec/acfg/req/idle-task-storage-size.yml           | 17 +++++
 spec/acfg/val/default.yml                          |  8 +--
 spec/bsp/val/mem-clock.yml                         |  2 +
 spec/rtems/barrier/val/mem-wait-rel-del.yml        |  2 +
 spec/rtems/barrier/val/mem-wait-rel.yml            |  2 +
 spec/rtems/clock/val/mem-get-uptime.yml            |  2 +
 spec/rtems/clock/val/mem-set-get-tod.yml           |  2 +
 spec/rtems/clock/val/mem-set.yml                   |  2 +
 spec/rtems/event/val/mem-snd-rcv.yml               |  2 +
 spec/rtems/fatal/val/mem-fatal.yml                 |  2 +
 spec/rtems/message/val/mem-bcst-rcv.yml            |  2 +
 spec/rtems/message/val/mem-snd-rcv-del.yml         |  2 +
 spec/rtems/message/val/mem-snd-rcv.yml             |  2 +
 spec/rtems/message/val/mem-ugt-rcv.yml             |  2 +
 spec/rtems/part/val/mem-get-ret-del.yml            |  2 +
 spec/rtems/part/val/mem-get-ret.yml                |  2 +
 spec/rtems/ratemon/val/mem-period-del.yml          |  2 +
 spec/rtems/ratemon/val/mem-period.yml              |  2 +
 spec/rtems/scheduler/val/mem-add-cpu.yml           |  2 +
 spec/rtems/scheduler/val/mem-rm-cpu.yml            |  2 +
 spec/rtems/sem/val/mem-obt-rel-del.yml             |  2 +
 spec/rtems/sem/val/mem-obt-rel.yml                 |  2 +
 spec/rtems/signal/val/mem-catch-snd.yml            |  2 +
 spec/rtems/task/val/mem-delete.yml                 |  2 +
 spec/rtems/task/val/mem-exit.yml                   |  2 +
 spec/rtems/task/val/mem-get-affinity.yml           |  2 +
 spec/rtems/task/val/mem-get-priority.yml           |  2 +
 spec/rtems/task/val/mem-get-scheduler.yml          |  2 +
 spec/rtems/task/val/mem-mode.yml                   |  2 +
 spec/rtems/task/val/mem-restart.yml                |  2 +
 spec/rtems/task/val/mem-set-affinity.yml           |  2 +
 spec/rtems/task/val/mem-set-priority.yml           |  2 +
 spec/rtems/task/val/mem-set-scheduler.yml          |  2 +
 spec/rtems/task/val/mem-sus-res.yml                |  2 +
 spec/rtems/task/val/mem-wake-after.yml             |  2 +
 spec/rtems/task/val/mem-wake-when.yml              |  2 +
 spec/rtems/timer/val/mem-after.yml                 |  2 +
 spec/rtems/timer/val/mem-cancel.yml                |  2 +
 spec/rtems/timer/val/mem-delete.yml                |  2 +
 spec/rtems/timer/val/mem-reset.yml                 |  2 +
 spec/rtems/timer/val/mem-srv-after.yml             |  2 +
 spec/rtems/timer/val/mem-srv-init.yml              |  2 +
 spec/rtems/timer/val/mem-srv-when.yml              |  2 +
 spec/rtems/timer/val/mem-when.yml                  |  2 +
 spec/rtems/userext/val/mem-create.yml              |  2 +
 spec/rtems/userext/val/mem-delete.yml              |  2 +
 spec/rtems/val/mem-basic.yml                       |  2 +
 spec/rtems/val/mem-smp-1.yml                       |  2 +
 spec/rtems/val/mem-smp-global-2.yml                |  2 +
 spec/rtems/val/mem-smp-global-4.yml                |  2 +
 spec/rtems/val/mem-smp-part-2.yml                  |  2 +
 spec/rtems/val/mem-smp-part-4.yml                  |  2 +
 .../interr/if/idle-thread-stack-too-small.yml      | 17 +++++
 .../interr/if/no-memory-for-idle-task-stack.yml    | 17 +++++
 .../req/fatal-idle-thread-stack-too-small.yml      | 19 +++++
 .../val/fatal-idle-thread-stack-too-small.yml      | 81 ++++++++++++++++++++++
 spec/testsuites/fatal-bsp-sparc-leon3-shutdown.yml |  2 +
 .../fatal-idle-thread-stack-too-small.yml          | 43 ++++++++++++
 spec/testsuites/validation-acfg-0.yml              |  2 +
 spec/testsuites/validation-acfg-1.yml              |  2 +
 spec/testsuites/validation-io-kernel.yml           |  2 +
 spec/testsuites/validation-tls-1.yml               |  3 +
 69 files changed, 426 insertions(+), 12 deletions(-)

diff --git a/generate_membench.py b/generate_membench.py
index 62573eaf..877c7d63 100755
--- a/generate_membench.py
+++ b/generate_membench.py
@@ -65,6 +65,8 @@ _CONFIG_DEFAULT = """#define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
 
 #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+#define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
 #define CONFIGURE_MAXIMUM_TASKS 1
 
 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/acfg/constraint/idle-task-min-stack-size.yml b/spec/acfg/constraint/idle-task-min-stack-size.yml
new file mode 100644
index 00000000..bf2ee7d9
--- /dev/null
+++ b/spec/acfg/constraint/idle-task-min-stack-size.yml
@@ -0,0 +1,12 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: requirement-refinement
+  uid: /req/usage-constraints
+rationale: null
+text: |
+  The value of the application configuration option shall be greater than or
+  equal to ${../if/idle-task-stack-size:/name}.
+type: constraint
diff --git a/spec/acfg/constraint/init-task-stack-allocator-for-idle.yml b/spec/acfg/constraint/init-task-stack-allocator-for-idle.yml
index 7f2586e9..2787fd7f 100644
--- a/spec/acfg/constraint/init-task-stack-allocator-for-idle.yml
+++ b/spec/acfg/constraint/init-task-stack-allocator-for-idle.yml
@@ -8,5 +8,5 @@ links:
 rationale: null
 text: |
   The value of the application configuration option shall be defined to a valid
-  function pointer of the type ``void *( *allocate )( uint32_t, size_t )``.
+  function pointer of the type ``void *( *allocate )( uint32_t, size_t * )``.
 type: constraint
diff --git a/spec/acfg/constraint/task-stack-allocator-for-idle-do-or-die.yml b/spec/acfg/constraint/task-stack-allocator-for-idle-do-or-die.yml
new file mode 100644
index 00000000..c20cbdc7
--- /dev/null
+++ b/spec/acfg/constraint/task-stack-allocator-for-idle-do-or-die.yml
@@ -0,0 +1,13 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: requirement-refinement
+  uid: /req/usage-constraints
+rationale: null
+text: |
+  The IDLE task stack allocator shall return a pointer to the allocated memory
+  area or terminate the system with a fatal error if the allocation request
+  cannot be satisfied.
+type: constraint
diff --git a/spec/acfg/constraint/task-stack-allocator-for-idle-increase-size.yml b/spec/acfg/constraint/task-stack-allocator-for-idle-increase-size.yml
new file mode 100644
index 00000000..0face249
--- /dev/null
+++ b/spec/acfg/constraint/task-stack-allocator-for-idle-increase-size.yml
@@ -0,0 +1,12 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: requirement-refinement
+  uid: /req/usage-constraints
+rationale: null
+text: |
+  The IDLE task stack allocator may increase the size of the allocated memory
+  area.
+type: constraint
diff --git a/spec/acfg/if/idle-task-storage-size.yml b/spec/acfg/if/idle-task-storage-size.yml
new file mode 100644
index 00000000..66353a4a
--- /dev/null
+++ b/spec/acfg/if/idle-task-storage-size.yml
@@ -0,0 +1,55 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+appl-config-option-type: integer
+copyrights:
+- Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
+default-value: |
+  This configuration option has no default value.  If it is not specified, then
+  the task storage area for each ${/glossary/idletask:/term} will allocated
+  from the RTEMS Workspace or through a custom IDLE task stack allocator.
+description: |
+  If this configuration option is specified, then the task storage areas for
+  the ${/glossary/idletask:/plural} are statically allocated by
+  <rtems/confdefs.h>.  The value of this configuration option defines the size
+  in bytes of the task storage area of each IDLE task in the system.
+enabled-by: true
+index-entries:
+- IDLE task storage size
+interface-type: appl-config-option
+links:
+- role: interface-placement
+  uid: domain
+- role: interface-ingroup
+  uid: group-idle
+- role: constraint
+  uid: ../constraint/idle-task-min-stack-size
+name: CONFIGURE_IDLE_TASK_STORAGE_SIZE
+notes: |
+  By default, the IDLE task storage areas are allocated from the RTEMS
+  Workspace.  Applications which do not want to use a heap allocator can use
+  this configuration option to use statically allocated memory for the IDLE
+  task storage areas.  The task storage area contains the task stack, the
+  thread-local storage, and the floating-point context on architectures with a
+  separate floating-point context.  The size of the thread-local storage area
+  is defined at link time or by the ${max-thread-local-storage-size:/name}
+  configuration option.  You have to estimate the actual thread-local storage
+  size if you want to use this configuration option.  If the IDLE task stack
+  size would be less than the value defined by the
+  ${idle-task-stack-size:/name} configuration option, for example because the
+  thread-local storage size is larger than expected, then the system terminates
+  with the ${/score/interr/if/internal-error-core:/name} fatal source and the
+  ${/score/interr/if/idle-thread-stack-too-small:/name} fatal code during
+  system initialization.
+
+  The value of this configuration option is passed to
+  ${/rtems/task/if/storage-size:/name} by <rtems/confdefs.h> to determine the
+  actual size of the statically allocated area to take architecture-specific
+  overheads into account.
+
+  The
+
+  * ``CONFIGURE_IDLE_TASK_STORAGE_SIZE``, and
+
+  * ${task-stack-allocator-for-idle:/name}
+
+  configuration options are mutually exclusive.
+type: interface
diff --git a/spec/acfg/if/task-stack-allocator-for-idle.yml b/spec/acfg/if/task-stack-allocator-for-idle.yml
index 26502816..3ecb8bb0 100644
--- a/spec/acfg/if/task-stack-allocator-for-idle.yml
+++ b/spec/acfg/if/task-stack-allocator-for-idle.yml
@@ -1,14 +1,14 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
 appl-config-option-type: initializer
 copyrights:
+- Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
 default-value: |
-  The default value is ``_Stack_Allocator_allocate_for_idle_default``, which
-  indicates that IDLE task stacks will be allocated from an area statically
-  allocated by ``<rtems/confdefs.h>``.
+  By default, the IDLE task storage area will be allocated from the RTEMS
+  Workspace.
 description: |
   The value of this configuration option is the address for the stack allocator
-  allocate handler used to allocate the task stack of each
+  allocate handler used to allocate the task storage area of each
   ${/glossary/idletask:/term}.
 enabled-by: true
 index-entries:
@@ -21,10 +21,25 @@ links:
   uid: group-stackalloc
 - role: constraint
   uid: ../constraint/init-task-stack-allocator-for-idle
+- role: constraint
+  uid: ../constraint/task-stack-allocator-for-idle-do-or-die
+- role: constraint
+  uid: ../constraint/task-stack-allocator-for-idle-increase-size
 name: CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE
 notes: |
   This configuration option is independent of the other thread stack allocator
-  configuration options.  It is assumed that any memory allocated for the stack
-  of an ${/glossary/idletask:/term} will not be from the RTEMS Workspace or the
-  memory statically allocated by default.
+  configuration options.  It is assumed that any memory allocated for the task
+  storage area of an ${/glossary/idletask:/term} will not be from the RTEMS
+  Workspace.
+
+  The IDLE task stack allocator may increase the size of the allocated memory
+  area to account for the actually allocated memory area.
+
+  The
+
+  * ${idle-task-storage-size:/name}, and
+
+  * ``CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE``
+
+  configuration options are mutually exclusive.
 type: interface
diff --git a/spec/acfg/req/idle-task-storage-size.yml b/spec/acfg/req/idle-task-storage-size.yml
new file mode 100644
index 00000000..53d4fdf0
--- /dev/null
+++ b/spec/acfg/req/idle-task-storage-size.yml
@@ -0,0 +1,17 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+functional-type: function
+links:
+- role: interface-function
+  uid: ../if/idle-task-storage-size
+- role: requirement-refinement
+  uid: group
+rationale: null
+references: []
+requirement-type: functional
+text: |
+  The application configuration option shall define the task storage area size
+  for an ${/glossary/idletask:/term}.
+type: requirement
diff --git a/spec/acfg/val/default.yml b/spec/acfg/val/default.yml
index 3cf7f91b..50323cc6 100644
--- a/spec/acfg/val/default.yml
+++ b/spec/acfg/val/default.yml
@@ -20,8 +20,8 @@ test-actions:
     - role: validation
       uid: /rtems/config/req/get-idle-task
   - brief: |
-      Check the default value ${/acfg/if/idle-task-stack-size:/name} where the
-      optional BSP-provided default value is enabled.
+      Check the default value of ${/acfg/if/idle-task-stack-size:/name} where
+      the optional BSP-provided default value is enabled.
     code: |
       T_step_eq_sz(
         ${step},
@@ -38,8 +38,8 @@ test-actions:
     - role: validation
       uid: ../if/disable-bsp-settings
   - brief: |
-      Check the default value ${/acfg/if/interrupt-stack-size:/name} where the
-      optional BSP-provided default value is enabled.
+      Check the default value of ${/acfg/if/interrupt-stack-size:/name} where
+      the optional BSP-provided default value is enabled.
     code: |
       T_step_eq_sz(
         ${step},
diff --git a/spec/bsp/val/mem-clock.yml b/spec/bsp/val/mem-clock.yml
index 124ff545..4be84daf 100644
--- a/spec/bsp/val/mem-clock.yml
+++ b/spec/bsp/val/mem-clock.yml
@@ -32,6 +32,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/barrier/val/mem-wait-rel-del.yml b/spec/rtems/barrier/val/mem-wait-rel-del.yml
index d262f777..7d278c45 100644
--- a/spec/rtems/barrier/val/mem-wait-rel-del.yml
+++ b/spec/rtems/barrier/val/mem-wait-rel-del.yml
@@ -38,6 +38,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/barrier/val/mem-wait-rel.yml b/spec/rtems/barrier/val/mem-wait-rel.yml
index 384d3f2b..76d8786e 100644
--- a/spec/rtems/barrier/val/mem-wait-rel.yml
+++ b/spec/rtems/barrier/val/mem-wait-rel.yml
@@ -36,6 +36,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/clock/val/mem-get-uptime.yml b/spec/rtems/clock/val/mem-get-uptime.yml
index 466b0fa0..a32d4987 100644
--- a/spec/rtems/clock/val/mem-get-uptime.yml
+++ b/spec/rtems/clock/val/mem-get-uptime.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/clock/val/mem-set-get-tod.yml b/spec/rtems/clock/val/mem-set-get-tod.yml
index 466e2afb..b9fcb439 100644
--- a/spec/rtems/clock/val/mem-set-get-tod.yml
+++ b/spec/rtems/clock/val/mem-set-get-tod.yml
@@ -32,6 +32,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/clock/val/mem-set.yml b/spec/rtems/clock/val/mem-set.yml
index 95e2f86c..72422be6 100644
--- a/spec/rtems/clock/val/mem-set.yml
+++ b/spec/rtems/clock/val/mem-set.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/event/val/mem-snd-rcv.yml b/spec/rtems/event/val/mem-snd-rcv.yml
index ee975496..a06a5257 100644
--- a/spec/rtems/event/val/mem-snd-rcv.yml
+++ b/spec/rtems/event/val/mem-snd-rcv.yml
@@ -32,6 +32,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/fatal/val/mem-fatal.yml b/spec/rtems/fatal/val/mem-fatal.yml
index fd0d8685..896b244c 100644
--- a/spec/rtems/fatal/val/mem-fatal.yml
+++ b/spec/rtems/fatal/val/mem-fatal.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/message/val/mem-bcst-rcv.yml b/spec/rtems/message/val/mem-bcst-rcv.yml
index 2bf6e6a1..ba27ec9e 100644
--- a/spec/rtems/message/val/mem-bcst-rcv.yml
+++ b/spec/rtems/message/val/mem-bcst-rcv.yml
@@ -34,6 +34,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/message/val/mem-snd-rcv-del.yml b/spec/rtems/message/val/mem-snd-rcv-del.yml
index acb6905f..5bf90252 100644
--- a/spec/rtems/message/val/mem-snd-rcv-del.yml
+++ b/spec/rtems/message/val/mem-snd-rcv-del.yml
@@ -35,6 +35,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/message/val/mem-snd-rcv.yml b/spec/rtems/message/val/mem-snd-rcv.yml
index 288048d1..c6649012 100644
--- a/spec/rtems/message/val/mem-snd-rcv.yml
+++ b/spec/rtems/message/val/mem-snd-rcv.yml
@@ -34,6 +34,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/message/val/mem-ugt-rcv.yml b/spec/rtems/message/val/mem-ugt-rcv.yml
index 32d8ae45..067a112e 100644
--- a/spec/rtems/message/val/mem-ugt-rcv.yml
+++ b/spec/rtems/message/val/mem-ugt-rcv.yml
@@ -34,6 +34,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/part/val/mem-get-ret-del.yml b/spec/rtems/part/val/mem-get-ret-del.yml
index 67e89b6e..6b747b58 100644
--- a/spec/rtems/part/val/mem-get-ret-del.yml
+++ b/spec/rtems/part/val/mem-get-ret-del.yml
@@ -38,6 +38,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/part/val/mem-get-ret.yml b/spec/rtems/part/val/mem-get-ret.yml
index ccf1e4c4..af8c8456 100644
--- a/spec/rtems/part/val/mem-get-ret.yml
+++ b/spec/rtems/part/val/mem-get-ret.yml
@@ -37,6 +37,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/ratemon/val/mem-period-del.yml b/spec/rtems/ratemon/val/mem-period-del.yml
index 5435f18b..8da2570d 100644
--- a/spec/rtems/ratemon/val/mem-period-del.yml
+++ b/spec/rtems/ratemon/val/mem-period-del.yml
@@ -36,6 +36,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/ratemon/val/mem-period.yml b/spec/rtems/ratemon/val/mem-period.yml
index e730e249..852cf8df 100644
--- a/spec/rtems/ratemon/val/mem-period.yml
+++ b/spec/rtems/ratemon/val/mem-period.yml
@@ -35,6 +35,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/scheduler/val/mem-add-cpu.yml b/spec/rtems/scheduler/val/mem-add-cpu.yml
index 94e3ccde..5a01b571 100644
--- a/spec/rtems/scheduler/val/mem-add-cpu.yml
+++ b/spec/rtems/scheduler/val/mem-add-cpu.yml
@@ -37,6 +37,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/scheduler/val/mem-rm-cpu.yml b/spec/rtems/scheduler/val/mem-rm-cpu.yml
index fd61ae13..161b4c87 100644
--- a/spec/rtems/scheduler/val/mem-rm-cpu.yml
+++ b/spec/rtems/scheduler/val/mem-rm-cpu.yml
@@ -37,6 +37,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/sem/val/mem-obt-rel-del.yml b/spec/rtems/sem/val/mem-obt-rel-del.yml
index 30a58ca4..25d6965d 100644
--- a/spec/rtems/sem/val/mem-obt-rel-del.yml
+++ b/spec/rtems/sem/val/mem-obt-rel-del.yml
@@ -38,6 +38,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/sem/val/mem-obt-rel.yml b/spec/rtems/sem/val/mem-obt-rel.yml
index b568a979..512b580f 100644
--- a/spec/rtems/sem/val/mem-obt-rel.yml
+++ b/spec/rtems/sem/val/mem-obt-rel.yml
@@ -36,6 +36,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/signal/val/mem-catch-snd.yml b/spec/rtems/signal/val/mem-catch-snd.yml
index a8676fa6..b86d3710 100644
--- a/spec/rtems/signal/val/mem-catch-snd.yml
+++ b/spec/rtems/signal/val/mem-catch-snd.yml
@@ -32,6 +32,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/task/val/mem-delete.yml b/spec/rtems/task/val/mem-delete.yml
index 25e60f03..98fb3d02 100644
--- a/spec/rtems/task/val/mem-delete.yml
+++ b/spec/rtems/task/val/mem-delete.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/task/val/mem-exit.yml b/spec/rtems/task/val/mem-exit.yml
index c9ed6b23..bfaf14df 100644
--- a/spec/rtems/task/val/mem-exit.yml
+++ b/spec/rtems/task/val/mem-exit.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/task/val/mem-get-affinity.yml b/spec/rtems/task/val/mem-get-affinity.yml
index 5e8a21a7..5aa194fb 100644
--- a/spec/rtems/task/val/mem-get-affinity.yml
+++ b/spec/rtems/task/val/mem-get-affinity.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/task/val/mem-get-priority.yml b/spec/rtems/task/val/mem-get-priority.yml
index 977599db..f65e6652 100644
--- a/spec/rtems/task/val/mem-get-priority.yml
+++ b/spec/rtems/task/val/mem-get-priority.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/task/val/mem-get-scheduler.yml b/spec/rtems/task/val/mem-get-scheduler.yml
index 43cb53ed..3be4f6fc 100644
--- a/spec/rtems/task/val/mem-get-scheduler.yml
+++ b/spec/rtems/task/val/mem-get-scheduler.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/task/val/mem-mode.yml b/spec/rtems/task/val/mem-mode.yml
index f677d85e..b8086934 100644
--- a/spec/rtems/task/val/mem-mode.yml
+++ b/spec/rtems/task/val/mem-mode.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/task/val/mem-restart.yml b/spec/rtems/task/val/mem-restart.yml
index a3190764..3a91d5f9 100644
--- a/spec/rtems/task/val/mem-restart.yml
+++ b/spec/rtems/task/val/mem-restart.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/task/val/mem-set-affinity.yml b/spec/rtems/task/val/mem-set-affinity.yml
index 081d7612..981e7e94 100644
--- a/spec/rtems/task/val/mem-set-affinity.yml
+++ b/spec/rtems/task/val/mem-set-affinity.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/task/val/mem-set-priority.yml b/spec/rtems/task/val/mem-set-priority.yml
index 26a4a6d2..5571f23d 100644
--- a/spec/rtems/task/val/mem-set-priority.yml
+++ b/spec/rtems/task/val/mem-set-priority.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/task/val/mem-set-scheduler.yml b/spec/rtems/task/val/mem-set-scheduler.yml
index 32506e46..18466ec8 100644
--- a/spec/rtems/task/val/mem-set-scheduler.yml
+++ b/spec/rtems/task/val/mem-set-scheduler.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/task/val/mem-sus-res.yml b/spec/rtems/task/val/mem-sus-res.yml
index 7845108b..df2ca5df 100644
--- a/spec/rtems/task/val/mem-sus-res.yml
+++ b/spec/rtems/task/val/mem-sus-res.yml
@@ -32,6 +32,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/task/val/mem-wake-after.yml b/spec/rtems/task/val/mem-wake-after.yml
index c2a69022..f5a71622 100644
--- a/spec/rtems/task/val/mem-wake-after.yml
+++ b/spec/rtems/task/val/mem-wake-after.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/task/val/mem-wake-when.yml b/spec/rtems/task/val/mem-wake-when.yml
index f8a3db36..92ad3565 100644
--- a/spec/rtems/task/val/mem-wake-when.yml
+++ b/spec/rtems/task/val/mem-wake-when.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/timer/val/mem-after.yml b/spec/rtems/timer/val/mem-after.yml
index 6b4b1fbb..a433d5c1 100644
--- a/spec/rtems/timer/val/mem-after.yml
+++ b/spec/rtems/timer/val/mem-after.yml
@@ -33,6 +33,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/timer/val/mem-cancel.yml b/spec/rtems/timer/val/mem-cancel.yml
index b114432c..3f9e4d49 100644
--- a/spec/rtems/timer/val/mem-cancel.yml
+++ b/spec/rtems/timer/val/mem-cancel.yml
@@ -32,6 +32,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/timer/val/mem-delete.yml b/spec/rtems/timer/val/mem-delete.yml
index 0a4dc506..a754c77a 100644
--- a/spec/rtems/timer/val/mem-delete.yml
+++ b/spec/rtems/timer/val/mem-delete.yml
@@ -32,6 +32,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/timer/val/mem-reset.yml b/spec/rtems/timer/val/mem-reset.yml
index 3ebbeb26..0b0f73ba 100644
--- a/spec/rtems/timer/val/mem-reset.yml
+++ b/spec/rtems/timer/val/mem-reset.yml
@@ -32,6 +32,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/timer/val/mem-srv-after.yml b/spec/rtems/timer/val/mem-srv-after.yml
index 3678d8ec..31ffd328 100644
--- a/spec/rtems/timer/val/mem-srv-after.yml
+++ b/spec/rtems/timer/val/mem-srv-after.yml
@@ -33,6 +33,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/timer/val/mem-srv-init.yml b/spec/rtems/timer/val/mem-srv-init.yml
index 03a0b361..6f12b1f4 100644
--- a/spec/rtems/timer/val/mem-srv-init.yml
+++ b/spec/rtems/timer/val/mem-srv-init.yml
@@ -46,6 +46,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/timer/val/mem-srv-when.yml b/spec/rtems/timer/val/mem-srv-when.yml
index 94085828..3cd7779e 100644
--- a/spec/rtems/timer/val/mem-srv-when.yml
+++ b/spec/rtems/timer/val/mem-srv-when.yml
@@ -33,6 +33,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/timer/val/mem-when.yml b/spec/rtems/timer/val/mem-when.yml
index 5bb37026..aef0aca5 100644
--- a/spec/rtems/timer/val/mem-when.yml
+++ b/spec/rtems/timer/val/mem-when.yml
@@ -33,6 +33,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/userext/val/mem-create.yml b/spec/rtems/userext/val/mem-create.yml
index 9b715e7f..357ea104 100644
--- a/spec/rtems/userext/val/mem-create.yml
+++ b/spec/rtems/userext/val/mem-create.yml
@@ -34,6 +34,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/userext/val/mem-delete.yml b/spec/rtems/userext/val/mem-delete.yml
index 248646c7..ee19b4eb 100644
--- a/spec/rtems/userext/val/mem-delete.yml
+++ b/spec/rtems/userext/val/mem-delete.yml
@@ -35,6 +35,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/val/mem-basic.yml b/spec/rtems/val/mem-basic.yml
index 2ac0520a..f2dda316 100644
--- a/spec/rtems/val/mem-basic.yml
+++ b/spec/rtems/val/mem-basic.yml
@@ -31,6 +31,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/val/mem-smp-1.yml b/spec/rtems/val/mem-smp-1.yml
index 4239a748..276ea181 100644
--- a/spec/rtems/val/mem-smp-1.yml
+++ b/spec/rtems/val/mem-smp-1.yml
@@ -38,6 +38,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/val/mem-smp-global-2.yml b/spec/rtems/val/mem-smp-global-2.yml
index cba3d682..4169306b 100644
--- a/spec/rtems/val/mem-smp-global-2.yml
+++ b/spec/rtems/val/mem-smp-global-2.yml
@@ -38,6 +38,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/val/mem-smp-global-4.yml b/spec/rtems/val/mem-smp-global-4.yml
index 1988ddd4..1300fa38 100644
--- a/spec/rtems/val/mem-smp-global-4.yml
+++ b/spec/rtems/val/mem-smp-global-4.yml
@@ -38,6 +38,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/val/mem-smp-part-2.yml b/spec/rtems/val/mem-smp-part-2.yml
index db2198fa..24403803 100644
--- a/spec/rtems/val/mem-smp-part-2.yml
+++ b/spec/rtems/val/mem-smp-part-2.yml
@@ -55,6 +55,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/rtems/val/mem-smp-part-4.yml b/spec/rtems/val/mem-smp-part-4.yml
index 325a5e96..ac329ee7 100644
--- a/spec/rtems/val/mem-smp-part-4.yml
+++ b/spec/rtems/val/mem-smp-part-4.yml
@@ -63,6 +63,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/score/interr/if/idle-thread-stack-too-small.yml b/spec/score/interr/if/idle-thread-stack-too-small.yml
new file mode 100644
index 00000000..f15e965e
--- /dev/null
+++ b/spec/score/interr/if/idle-thread-stack-too-small.yml
@@ -0,0 +1,17 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+index-entries: []
+interface-type: unspecified-enumerator
+links:
+- role: interface-placement
+  uid: header
+- role: interface-ingroup
+  uid: group
+name: INTERNAL_ERROR_IDLE_THREAD_STACK_TOO_SMALL
+references:
+- identifier: internal_errors
+  name: c-user
+  type: document
+type: interface
diff --git a/spec/score/interr/if/no-memory-for-idle-task-stack.yml b/spec/score/interr/if/no-memory-for-idle-task-stack.yml
new file mode 100644
index 00000000..96c1b0b8
--- /dev/null
+++ b/spec/score/interr/if/no-memory-for-idle-task-stack.yml
@@ -0,0 +1,17 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+index-entries: []
+interface-type: unspecified-enumerator
+links:
+- role: interface-placement
+  uid: header
+- role: interface-ingroup
+  uid: group
+name: INTERNAL_ERROR_NO_MEMORY_FOR_IDLE_TASK_STACK
+references:
+- identifier: internal_errors
+  name: c-user
+  type: document
+type: interface
diff --git a/spec/score/thread/req/fatal-idle-thread-stack-too-small.yml b/spec/score/thread/req/fatal-idle-thread-stack-too-small.yml
new file mode 100644
index 00000000..7974625d
--- /dev/null
+++ b/spec/score/thread/req/fatal-idle-thread-stack-too-small.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: requirement-refinement
+  uid: /req/fatal-error
+- role: requirement-refinement
+  uid: ../if/group
+functional-type: function
+rationale: null
+references: []
+requirement-type: functional
+text: |
+  If the idle thread stack is less than the configured stack size for idle
+  threads, then the system shall terminate with the
+  ${/score/interr/if/internal-error-core:/name} fatal source and the
+  ${/score/interr/if/idle-thread-stack-too-small:/name} fatal code.
+type: requirement
diff --git a/spec/score/thread/val/fatal-idle-thread-stack-too-small.yml b/spec/score/thread/val/fatal-idle-thread-stack-too-small.yml
new file mode 100644
index 00000000..1b24fc8d
--- /dev/null
+++ b/spec/score/thread/val/fatal-idle-thread-stack-too-small.yml
@@ -0,0 +1,81 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links: []
+test-actions:
+- action-brief: |
+    The test action is carried out by configuring a thread-local storage demand
+    which leads to a too small idle thread stack size.
+  action-code: |
+    /* Nothing to do */
+  checks:
+  - brief: |
+      Check that the expected fatal source is present.
+    code: |
+      T_step_eq_int( ${step}, ctx->source, INTERNAL_ERROR_CORE );
+    links:
+    - role: validation
+      uid: ../req/fatal-idle-thread-stack-too-small
+  - brief: |
+      Check that the expected fatal code is present.
+    code: |
+      T_step_eq_ulong(
+        ${step},
+        ctx->code,
+        INTERNAL_ERROR_IDLE_THREAD_STACK_TOO_SMALL
+      );
+    links:
+    - role: validation
+      uid: ../req/fatal-idle-thread-stack-too-small
+  - brief: |
+      Check the configured value of ${/acfg/if/idle-task-storage-size:/name}.
+    code: |
+      T_step_eq_sz(
+        ${step},
+        _Stack_Allocator_allocate_for_idle_storage_size,
+        RTEMS_ALIGN_UP(
+          RTEMS_TASK_STORAGE_SIZE(
+            RTEMS_MINIMUM_STACK_SIZE,
+            RTEMS_DEFAULT_ATTRIBUTES
+          ),
+          CPU_INTERRUPT_STACK_ALIGNMENT
+        )
+      );
+    links:
+    - role: validation
+      uid: /acfg/req/idle-task-storage-size
+  links: []
+test-brief: |
+  Tests a fatal error caused by a too small idle thread stack size.
+test-context: []
+test-context-support: null
+test-description: null
+test-header:
+  code: null
+  freestanding: true
+  includes:
+  - rtems.h
+  local-includes: []
+  run-params:
+  - description: |
+      is the fatal source.
+    dir: null
+    name: source
+    specifier: ${/rtems/userext/if/fatal-source:/name} ${.:name}
+  - description: |
+      is the fatal code.
+    dir: null
+    name: code
+    specifier: ${/rtems/userext/if/fatal-code:/name} ${.:name}
+  target: testsuites/validation/tr-fatal-idle-thread-stack-too-small.h
+test-includes:
+- rtems.h
+test-local-includes:
+- tr-fatal-idle-thread-stack-too-small.h
+test-setup: null
+test-stop: null
+test-support: null
+test-target: testsuites/validation/tr-fatal-idle-thread-stack-too-small.c
+test-teardown: null
+type: test-case
diff --git a/spec/testsuites/fatal-bsp-sparc-leon3-shutdown.yml b/spec/testsuites/fatal-bsp-sparc-leon3-shutdown.yml
index 70d33f74..4df77ecc 100644
--- a/spec/testsuites/fatal-bsp-sparc-leon3-shutdown.yml
+++ b/spec/testsuites/fatal-bsp-sparc-leon3-shutdown.yml
@@ -81,6 +81,8 @@ test-code: |
 
   #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
 
   static void *ShutdownIdleBody( uintptr_t arg )
diff --git a/spec/testsuites/fatal-idle-thread-stack-too-small.yml b/spec/testsuites/fatal-idle-thread-stack-too-small.yml
new file mode 100644
index 00000000..cb19edfa
--- /dev/null
+++ b/spec/testsuites/fatal-idle-thread-stack-too-small.yml
@@ -0,0 +1,43 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: requirement-refinement
+  uid: /req/test-suites
+test-brief: |
+  This validation test suite contains a test case which triggers a fatal error
+  during system initialization.
+test-code: |
+  const char rtems_test_name[] = "${.:/test-suite-name}";
+
+  #define FATAL_SYSINIT_RUN ScoreThreadValFatalIdleThreadStackTooSmall_Run
+
+  static _Thread_local volatile uint8_t zero[ RTEMS_MINIMUM_STACK_SIZE ];
+
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+    rtems_fatal( RTEMS_FATAL_SOURCE_EXIT, zero[ 0 ] + 1 );
+  }
+
+  #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
+
+  #define CONFIGURE_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE 1
+
+  #define CONFIGURE_INIT_TASK_PRIORITY 0
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #include "ts-fatal-sysinit.h"
+test-description: null
+test-includes: []
+test-local-includes:
+- tr-fatal-idle-thread-stack-too-small.h
+test-suite-name: FatalIdleThreadStackTooSmall
+test-target: testsuites/validation/ts-fatal-idle-thread-stack-too-small.c
+type: test-suite
diff --git a/spec/testsuites/validation-acfg-0.yml b/spec/testsuites/validation-acfg-0.yml
index 5d9bd6df..ff2b227d 100644
--- a/spec/testsuites/validation-acfg-0.yml
+++ b/spec/testsuites/validation-acfg-0.yml
@@ -12,6 +12,8 @@ test-brief: |
 test-code: |
   const char rtems_test_name[] = "${.:/test-suite-name}";
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
 
   void *IdleBody( uintptr_t ignored )
diff --git a/spec/testsuites/validation-acfg-1.yml b/spec/testsuites/validation-acfg-1.yml
index f626a666..97f52b80 100644
--- a/spec/testsuites/validation-acfg-1.yml
+++ b/spec/testsuites/validation-acfg-1.yml
@@ -33,6 +33,8 @@ test-code: |
 
   #define CONFIGURE_DISABLE_BSP_SETTINGS
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_MAXIMUM_TASKS 1
 
   #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/spec/testsuites/validation-io-kernel.yml b/spec/testsuites/validation-io-kernel.yml
index 62ca650e..4f592ae6 100644
--- a/spec/testsuites/validation-io-kernel.yml
+++ b/spec/testsuites/validation-io-kernel.yml
@@ -74,6 +74,8 @@ test-code: |
 
   #define CONFIGURE_SCHEDULER_TABLE_ENTRIES { }
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
+
   #define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
 
   #define CONFIGURE_IDLE_TASK_BODY IdleBody
diff --git a/spec/testsuites/validation-tls-1.yml b/spec/testsuites/validation-tls-1.yml
index c7bdd894..1f4dcaa7 100644
--- a/spec/testsuites/validation-tls-1.yml
+++ b/spec/testsuites/validation-tls-1.yml
@@ -11,6 +11,9 @@ test-brief: |
 test-code: |
   const char rtems_test_name[] = "${.:/test-suite-name}";
 
+  #define CONFIGURE_IDLE_TASK_STORAGE_SIZE \
+    ( RTEMS_MINIMUM_STACK_SIZE + 4096 )
+
   #include "ts-idle.h"
 test-description: null
 test-includes: []



More information about the vc mailing list