diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-09-29 09:25:28 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-10-11 08:02:57 +0200 |
commit | 97236fdc2e3392804a825fa95d7732c7b5802e67 (patch) | |
tree | 112e2eafbb5a5aea59604cb016ceba55f0af70cf | |
parent | spec: Add INTERNAL_ERROR_IDLE_THREAD_CREATE_FAILED (diff) | |
download | rtems-central-97236fdc2e3392804a825fa95d7732c7b5802e67.tar.bz2 |
spec: Add CONFIGURE_IDLE_TASK_STORAGE_SIZE
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: [] |