diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-09-28 08:34:13 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-09-28 09:48:57 +0200 |
commit | d7fab0335360ae84e21f2af834f1022a7c372677 (patch) | |
tree | a6a319bb1d34411c779a415012549f65a39c0d22 | |
parent | spec: Specify thread queue deadlock details (diff) | |
download | rtems-central-d7fab0335360ae84e21f2af834f1022a7c372677.tar.bz2 |
spec: Add application configuration requirements
22 files changed, 538 insertions, 2 deletions
diff --git a/spec/acfg/val/acfg.yml b/spec/acfg/val/acfg.yml new file mode 100644 index 00000000..00f78750 --- /dev/null +++ b/spec/acfg/val/acfg.yml @@ -0,0 +1,238 @@ +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: [] +test-actions: +- action-brief: | + Check the effect of application configuration options. + action-code: | + /* Nothing to do */ + checks: + - brief: | + Check that the configured + ${/acfg/if/min-tasks-with-user-provided-storage:/name} value reduced the + stack space size. + code: | + T_eq_uptr( + _Stack_Space_size, + RTEMS_ALIGN_UP( HEAP_BLOCK_HEADER_SIZE, CPU_HEAP_ALIGNMENT ) + ); + links: + - role: validation + uid: ../if/min-tasks-with-user-provided-storage + - brief: | + Check the configured ${/acfg/if/max-barriers:/name} value. + code: | + T_eq_u32( + rtems_configuration_get_maximum_barriers(), + TEST_MAXIMUM_BARRIERS + ); + links: + - role: validation + uid: ../if/max-barriers + - role: validation + uid: /rtems/config/if/get-maximum-barriers + - brief: | + Check the configured ${/acfg/if/max-user-extensions:/name} value. + code: | + T_eq_u32( + rtems_configuration_get_maximum_extensions(), + TEST_MAXIMUM_USER_EXTENSIONS + ); + links: + - role: validation + uid: ../if/max-user-extensions + - role: validation + uid: /rtems/config/if/get-maximum-extensions + - brief: | + Check the configured ${/acfg/if/max-message-queues:/name} value. + code: | + T_eq_u32( + rtems_configuration_get_maximum_message_queues(), + TEST_MAXIMUM_MESSAGE_QUEUES + ); + links: + - role: validation + uid: ../if/max-message-queues + - role: validation + uid: /rtems/config/if/get-maximum-message-queues + - brief: | + Check the configured ${/acfg/if/max-partitions:/name} value. + code: | + T_eq_u32( + rtems_configuration_get_maximum_partitions(), + TEST_MAXIMUM_PARTITIONS + ); + links: + - role: validation + uid: ../if/max-partitions + - role: validation + uid: /rtems/config/if/get-maximum-partitions + - brief: | + Check the configured ${/acfg/if/max-periods:/name} value. + code: | + T_eq_u32( + rtems_configuration_get_maximum_periods(), + TEST_MAXIMUM_PERIODS + ); + links: + - role: validation + uid: ../if/max-periods + - role: validation + uid: /rtems/config/if/get-maximum-periods + - brief: | + Check the configured ${/acfg/if/max-processors:/name} value. + code: | + T_eq_u32( + rtems_configuration_get_maximum_processors(), + #if defined(RTEMS_SMP) + 5 + #else + 1 + #endif + ); + links: + - role: validation + uid: ../if/max-processors + - role: validation + uid: /rtems/config/if/get-maximum-processors + - brief: | + Check the configured ${/acfg/if/max-semaphores:/name} value. + code: | + T_eq_u32( + rtems_configuration_get_maximum_semaphores(), + TEST_MAXIMUM_SEMAPHORES + ); + links: + - role: validation + uid: ../if/max-semaphores + - role: validation + uid: /rtems/config/if/get-maximum-semaphores + - brief: | + Check the configured ${/acfg/if/max-tasks:/name} value. + code: | + T_eq_u32( + rtems_configuration_get_maximum_tasks(), + TEST_MAXIMUM_TASKS + ); + links: + - role: validation + uid: ../if/max-tasks + - role: validation + uid: /rtems/config/if/get-maximum-tasks + - brief: | + Check the configured ${/acfg/if/max-timers:/name} value. + code: | + T_eq_u32( + rtems_configuration_get_maximum_timers(), + TEST_MAXIMUM_TIMERS + ); + links: + - role: validation + uid: ../if/max-timers + - role: validation + uid: /rtems/config/if/get-maximum-timers + - brief: | + Check the configured ${/acfg/if/microseconds-per-tick:/name} value in + microseconds. + code: | + T_eq_u32( + rtems_configuration_get_microseconds_per_tick(), + TEST_MICROSECONDS_PER_TICK + ); + links: + - role: validation + uid: ../if/microseconds-per-tick + - role: validation + uid: /rtems/config/if/get-microseconds-per-tick + - brief: | + Check the configured ${/acfg/if/microseconds-per-tick:/name} value in + milliseconds. + code: | + T_eq_u32( + rtems_configuration_get_milliseconds_per_tick(), + TEST_MICROSECONDS_PER_TICK / 1000 + ); + links: + - role: validation + uid: ../if/microseconds-per-tick + - role: validation + uid: /rtems/config/if/get-milliseconds-per-tick + - brief: | + Check the configured ${/acfg/if/microseconds-per-tick:/name} value in + nanoseconds. + code: | + T_eq_u32( + rtems_configuration_get_nanoseconds_per_tick(), + TEST_MICROSECONDS_PER_TICK * 1000 + ); + links: + - role: validation + uid: ../if/microseconds-per-tick + - role: validation + uid: /rtems/config/if/get-nanoseconds-per-tick + - brief: | + Check the configured ${/acfg/if/task-stack-allocator:/name} hook. + code: | + T_eq_ptr( + rtems_configuration_get_stack_allocate_hook(), + test_task_stack_allocate + ); + links: + - role: validation + uid: ../if/task-stack-allocator + - role: validation + uid: /rtems/config/if/get-stack-allocate-hook + - brief: | + Check the configured ${/acfg/if/task-stack-no-workspace:/name} value. + code: | + T_true( rtems_configuration_get_stack_allocator_avoids_work_space() ); + links: + - role: validation + uid: ../if/task-stack-no-workspace + - role: validation + uid: /rtems/config/if/get-stack-allocator-avoids-work-space + - brief: | + Check the configured ${/acfg/if/task-stack-deallocator:/name} hook. + code: | + T_eq_ptr( + rtems_configuration_get_stack_free_hook(), + test_task_stack_deallocate + ); + links: + - role: validation + uid: ../if/task-stack-deallocator + - role: validation + uid: /rtems/config/if/get-stack-free-hook + - brief: | + Check the configured ${/acfg/if/ticks-per-time-slice:/name} value. + code: | + T_eq_u32( + rtems_configuration_get_ticks_per_timeslice(), + TEST_TICKS_PER_TIMESLICE + ); + links: + - role: validation + uid: ../if/ticks-per-time-slice + - role: validation + uid: /rtems/config/if/get-ticks-per-timeslice + links: [] +test-brief: | + Tests the effect of application configuration options. +test-context: [] +test-context-support: null +test-description: null +test-header: null +test-includes: +- rtems.h +- rtems/score/heap.h +test-local-includes: +- ts-config.h +- tx-support.h +test-setup: null +test-stop: null +test-support: null +test-target: testsuites/validation/tc-acfg.c +test-teardown: null +type: test-case diff --git a/spec/rtems/config/req/get-idle-task-stack-size.yml b/spec/rtems/config/req/get-idle-task-stack-size.yml new file mode 100644 index 00000000..8502a444 --- /dev/null +++ b/spec/rtems/config/req/get-idle-task-stack-size.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-idle-task-stack-size +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-idle-task-stack-size:/name} directive shall return the IDLE + task stack size configured by ${/acfg/if/idle-task-stack-size:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-idle-task.yml b/spec/rtems/config/req/get-idle-task.yml new file mode 100644 index 00000000..88208c87 --- /dev/null +++ b/spec/rtems/config/req/get-idle-task.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-idle-task +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-idle-task:/name} directive shall return the IDLE task body + configured by ${/acfg/if/idle-task-body:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-interrupt-stack-size.yml b/spec/rtems/config/req/get-interrupt-stack-size.yml new file mode 100644 index 00000000..01915570 --- /dev/null +++ b/spec/rtems/config/req/get-interrupt-stack-size.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-interrupt-stack-size +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-interrupt-stack-size:/name} directive shall return the + interrupt stack size configured by ${/acfg/if/interrupt-stack-size:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-maximum-barriers.yml b/spec/rtems/config/req/get-maximum-barriers.yml new file mode 100644 index 00000000..09cd7993 --- /dev/null +++ b/spec/rtems/config/req/get-maximum-barriers.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-maximum-barriers +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-maximum-barriers:/name} directive shall return the maximum + number of Classic API Barriers that can be concurrently active configured by + ${/acfg/if/max-barriers:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-maximum-extensions.yml b/spec/rtems/config/req/get-maximum-extensions.yml new file mode 100644 index 00000000..d9aac20a --- /dev/null +++ b/spec/rtems/config/req/get-maximum-extensions.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-maximum-extensions +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-maximum-extensions:/name} directive shall return the maximum + number of Classic API User Extensions that can be concurrently active + configured by ${/acfg/if/max-user-extensions:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-maximum-message-queues.yml b/spec/rtems/config/req/get-maximum-message-queues.yml new file mode 100644 index 00000000..ea87d2ea --- /dev/null +++ b/spec/rtems/config/req/get-maximum-message-queues.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-maximum-message-queues +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-maximum-message-queues:/name} directive shall return the + maximum number of Classic API Message Queues that can be concurrently active + configured by ${/acfg/if/max-message-queues:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-maximum-partitions.yml b/spec/rtems/config/req/get-maximum-partitions.yml new file mode 100644 index 00000000..8a99e006 --- /dev/null +++ b/spec/rtems/config/req/get-maximum-partitions.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-maximum-partitions +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-maximum-partitions:/name} directive shall return the maximum + number of Classic API Partitions that can be concurrently active configured + by ${/acfg/if/max-partitions:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-maximum-periods.yml b/spec/rtems/config/req/get-maximum-periods.yml new file mode 100644 index 00000000..fca759cf --- /dev/null +++ b/spec/rtems/config/req/get-maximum-periods.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-maximum-periods +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-maximum-periods:/name} directive shall return the maximum + number of Classic API Periods that can be concurrently active configured by + ${/acfg/if/max-periods:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-maximum-processors.yml b/spec/rtems/config/req/get-maximum-processors.yml new file mode 100644 index 00000000..00ac633c --- /dev/null +++ b/spec/rtems/config/req/get-maximum-processors.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-maximum-processors +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-maximum-processors:/name} directive shall return the maximum + number of processors configured by ${/acfg/if/max-processors:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-maximum-semaphores.yml b/spec/rtems/config/req/get-maximum-semaphores.yml new file mode 100644 index 00000000..d8dd775e --- /dev/null +++ b/spec/rtems/config/req/get-maximum-semaphores.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-maximum-semaphores +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-maximum-semaphores:/name} directive shall return the maximum + number of Classic API Semaphores that can be concurrently active configured + by ${/acfg/if/max-semaphores:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-maximum-tasks.yml b/spec/rtems/config/req/get-maximum-tasks.yml new file mode 100644 index 00000000..82159919 --- /dev/null +++ b/spec/rtems/config/req/get-maximum-tasks.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-maximum-tasks +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-maximum-tasks:/name} directive shall return the maximum + number of Classic API Tasks that can be concurrently active configured by + ${/acfg/if/max-tasks:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-maximum-timers.yml b/spec/rtems/config/req/get-maximum-timers.yml new file mode 100644 index 00000000..71e89017 --- /dev/null +++ b/spec/rtems/config/req/get-maximum-timers.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-maximum-timers +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-maximum-timers:/name} directive shall return the maximum + number of Classic API Timers that can be concurrently active configured by + ${/acfg/if/max-timers:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-microseconds-per-tick.yml b/spec/rtems/config/req/get-microseconds-per-tick.yml new file mode 100644 index 00000000..8d36b75b --- /dev/null +++ b/spec/rtems/config/req/get-microseconds-per-tick.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-microseconds-per-tick +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-microseconds-per-tick:/name} directive shall return the + ${/glossary/clock-tick:/term} interval in microseconds configured by + ${/acfg/if/microseconds-per-tick:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-milliseconds-per-tick.yml b/spec/rtems/config/req/get-milliseconds-per-tick.yml new file mode 100644 index 00000000..34bb8a5a --- /dev/null +++ b/spec/rtems/config/req/get-milliseconds-per-tick.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-milliseconds-per-tick +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-milliseconds-per-tick:/name} directive shall return the + ${/glossary/clock-tick:/term} interval in milliseconds configured by + ${/acfg/if/microseconds-per-tick:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-nanoseconds-per-tick.yml b/spec/rtems/config/req/get-nanoseconds-per-tick.yml new file mode 100644 index 00000000..ad82916f --- /dev/null +++ b/spec/rtems/config/req/get-nanoseconds-per-tick.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-nanoseconds-per-tick +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-nanoseconds-per-tick:/name} directive shall return the + ${/glossary/clock-tick:/term} interval in nanoseconds configured by + ${/acfg/if/microseconds-per-tick:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-stack-allocate-hook.yml b/spec/rtems/config/req/get-stack-allocate-hook.yml new file mode 100644 index 00000000..f3cc9644 --- /dev/null +++ b/spec/rtems/config/req/get-stack-allocate-hook.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-stack-allocate-hook +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-stack-allocate-hook:/name} directive shall return the task + stack allocator hook configured by ${/acfg/if/task-stack-allocator:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-stack-allocator-avoids-work-space.yml b/spec/rtems/config/req/get-stack-allocator-avoids-work-space.yml new file mode 100644 index 00000000..dd5916a0 --- /dev/null +++ b/spec/rtems/config/req/get-stack-allocator-avoids-work-space.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-stack-allocator-avoids-work-space +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-stack-allocator-avoids-work-space:/name} directive shall + return the option value configured by + ${/acfg/if/task-stack-no-workspace:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-stack-free-hook.yml b/spec/rtems/config/req/get-stack-free-hook.yml new file mode 100644 index 00000000..c2824e78 --- /dev/null +++ b/spec/rtems/config/req/get-stack-free-hook.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-stack-free-hook +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-stack-free-hook:/name} directive shall return the task stack + free hook configured by ${/acfg/if/task-stack-deallocator:/name}. +type: requirement diff --git a/spec/rtems/config/req/get-ticks-per-timeslice.yml b/spec/rtems/config/req/get-ticks-per-timeslice.yml new file mode 100644 index 00000000..df2716f4 --- /dev/null +++ b/spec/rtems/config/req/get-ticks-per-timeslice.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/get-ticks-per-timeslice +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/get-ticks-per-timeslice:/name} directive shall return the number + of ${/glossary/clock-tick:/plural} per timeslice configured by + ${/acfg/if/ticks-per-time-slice:/name}. +type: requirement diff --git a/spec/testsuites/terminate.yml b/spec/testsuites/terminate.yml index 8ac5466d..fdf36357 100644 --- a/spec/testsuites/terminate.yml +++ b/spec/testsuites/terminate.yml @@ -5,8 +5,6 @@ enabled-by: true links: - role: requirement-refinement uid: /req/test-suites -- role: validation - uid: /acfg/req/disable-bsp-settings test-brief: | This validation test suite contains a test case for the system termination procedure. diff --git a/spec/testsuites/validation-0.yml b/spec/testsuites/validation-0.yml index 2204e869..85447c65 100644 --- a/spec/testsuites/validation-0.yml +++ b/spec/testsuites/validation-0.yml @@ -5,6 +5,8 @@ enabled-by: true links: - role: requirement-refinement uid: /req/test-suites +- role: validation + uid: /acfg/if/appl-needs-clock-driver test-brief: | This general purpose validation test suite provides enough resources to run basic tests for all specified managers and functions. |