[rtems-central commit] spec: Improve acfg specification

Sebastian Huber sebh at rtems.org
Fri Nov 19 07:51:57 UTC 2021


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

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Nov 16 11:34:14 2021 +0100

spec: Improve acfg specification

Rework BSP provided configuration settings.

---

 config.yml                                         |  3 +-
 spec/acfg/if/appl-prerequisite-drivers.yml         |  2 +-
 spec/acfg/if/bsp-idle-task-body.yml                | 31 --------
 spec/acfg/if/bsp-idle-task-stack-size.yml          | 32 --------
 spec/acfg/if/bsp-initial-extension.yml             | 30 --------
 spec/acfg/if/bsp-interrupt-stack-size.yml          | 34 ---------
 spec/acfg/if/bsp-prerequisite-drivers.yml          | 33 --------
 spec/acfg/if/disable-bsp-settings.yml              | 25 +++---
 spec/acfg/if/domain.yml                            | 13 ++++
 spec/acfg/if/group-bsp.yml                         | 19 -----
 .../{req/bsp-idle-task-body.yml => if/group.yml}   | 11 +--
 spec/acfg/if/header.yml                            | 16 ++++
 spec/acfg/if/idle-task-body.yml                    | 13 +++-
 spec/acfg/if/idle-task-stack-size.yml              |  8 +-
 spec/acfg/if/init.yml                              | 12 +++
 spec/acfg/if/initial-extensions.yml                |  4 +-
 spec/acfg/if/interrupt-stack-size.yml              |  7 +-
 spec/acfg/if/malloc-bsp-supports-sbrk.yml          | 30 --------
 spec/acfg/if/max-drivers.yml                       |  5 +-
 spec/acfg/req/bsp-idle-task-stack-size.yml         | 15 ----
 spec/acfg/req/bsp-initial-extension.yml            | 12 ++-
 spec/acfg/req/bsp-interrupt-stack-size.yml         | 15 ----
 spec/acfg/req/bsp-prerequisite-drivers.yml         | 14 ++--
 spec/acfg/req/init.yml                             | 17 +++++
 spec/acfg/req/malloc-bsp-supports-sbrk.yml         | 13 ++--
 spec/acfg/val/acfg.yml                             | 89 ++++++++++++++++++----
 spec/acfg/val/bsp-prerequisite-drivers.yml         | 17 +++++
 spec/acfg/val/default.yml                          | 69 ++++++++++++++++-
 spec/acfg/val/disabled-bsp-settings.yml            | 82 ++++++++++++++++++++
 spec/acfg/val/malloc-bsp-supports-sbrk.yml         | 17 +++++
 spec/acfg/val/one-cpu.yml                          | 55 +++++++++++++
 spec/bsp/if/acfg-idle-task-body.yml                | 14 ++++
 spec/bsp/if/acfg-idle-task-stack-size.yml          | 14 ++++
 spec/bsp/if/acfg-initial-extension.yml             | 14 ++++
 spec/bsp/if/acfg-interrupt-stack-size.yml          | 14 ++++
 spec/bsp/if/acfg-malloc-supports-sbrk.yml          | 14 ++++
 spec/bsp/if/acfg-prerequisite-drivers.yml          | 14 ++++
 spec/bsp/if/bsp-header.yml                         | 16 ++++
 spec/rtems/fatal/req/fatal.yml                     | 18 +++++
 spec/rtems/scheduler/req/get-maximum-priority.yml  |  2 +-
 spec/rtems/task/req/ident.yml                      |  3 +-
 spec/score/val/fatal.yml                           | 33 ++++++--
 spec/testsuites/terminate.yml                      |  2 +
 spec/testsuites/validation-0.yml                   |  2 +
 spec/testsuites/validation-acfg-0.yml              | 64 +++-------------
 spec/testsuites/validation-acfg-1.yml              | 60 +++++++++++++++
 spec/testsuites/validation-one-cpu-0.yml           |  4 +
 spec/testsuites/validation-smp-only-0.yml          |  2 +
 48 files changed, 677 insertions(+), 356 deletions(-)

diff --git a/config.yml b/config.yml
index cd8d59d..b29cbb6 100644
--- a/config.yml
+++ b/config.yml
@@ -42,6 +42,7 @@ build:
   - testsuites/validation/tc-userext.h
   - testsuites/validation/tr-chains-api-model.h
   - testsuites/validation/tr-event-mgr-model.h
+  - testsuites/validation/ts-acfg.h
   - testsuites/validation/ts-config.h
   - testsuites/validation/ts-default.h
   - testsuites/validation/ts-fatal-sysinit.h
@@ -81,8 +82,6 @@ appl-config:
   groups:
   - uid: /acfg/if/group-bdbuf
     target: modules/rtems-docs/c-user/config/bdbuf.rst
-  - uid: /acfg/if/group-bsp
-    target: modules/rtems-docs/c-user/config/bsp-related.rst
   - uid: /acfg/if/group-classic
     target: modules/rtems-docs/c-user/config/classic-api.rst
   - uid: /acfg/if/group-classicinit
diff --git a/spec/acfg/if/appl-prerequisite-drivers.yml b/spec/acfg/if/appl-prerequisite-drivers.yml
index 4e5265b..4d3d34e 100644
--- a/spec/acfg/if/appl-prerequisite-drivers.yml
+++ b/spec/acfg/if/appl-prerequisite-drivers.yml
@@ -22,7 +22,7 @@ links:
 name: CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
 notes: |
   The value of this configuration option is placed after the entries defined by
-  ${bsp-prerequisite-drivers:/name} and before all other device driver
+  ${/bsp/if/acfg-prerequisite-drivers:/name} and before all other device driver
   configuration options.
 
   See ${appl-extra-drivers:/name} for an alternative placement
diff --git a/spec/acfg/if/bsp-idle-task-body.yml b/spec/acfg/if/bsp-idle-task-body.yml
deleted file mode 100644
index 0bf1a24..0000000
--- a/spec/acfg/if/bsp-idle-task-body.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-appl-config-option-type: initializer
-copyrights:
-- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
-default-value: |
-  The default value is BSP-specific.
-description: |
-  If
-
-  * this configuration option is defined by the BSP
-
-  * and ${disable-bsp-settings:/name} is undefined,
-
-  then the value of this configuration option defines the default value of
-  ${idle-task-body:/name}.
-enabled-by: true
-index-entries: []
-interface-type: appl-config-option
-links:
-- role: requirement-refinement
-  uid: ../req/bsp-idle-task-body
-- role: appl-config-group-member
-  uid: group-bsp
-- role: constraint
-  uid: ../constraint/init-idle-task-body
-name: BSP_IDLE_TASK_BODY
-notes: |
-  As it has knowledge of the specific CPU model, system controller logic, and
-  peripheral buses, a BSP-specific IDLE task may be capable of turning
-  components off to save power during extended periods of no task activity.
-type: interface
diff --git a/spec/acfg/if/bsp-idle-task-stack-size.yml b/spec/acfg/if/bsp-idle-task-stack-size.yml
deleted file mode 100644
index 3565f5a..0000000
--- a/spec/acfg/if/bsp-idle-task-stack-size.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-appl-config-option-type: integer
-copyrights:
-- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
-default-value: |
-  The default value is BSP-specific.
-description: |
-  If
-
-  * this configuration option is defined by the BSP
-
-  * and ${disable-bsp-settings:/name} is undefined,
-
-  then the value of this configuration option defines the default value of
-  ${idle-task-stack-size:/name}.
-enabled-by: true
-index-entries: []
-interface-type: appl-config-option
-links:
-- role: requirement-refinement
-  uid: ../req/bsp-idle-task-stack-size
-- role: appl-config-group-member
-  uid: group-bsp
-- role: constraint
-  uid: ../constraint/option-not-pre-qualified
-- role: constraint
-  uid: ../constraint/min-bsp-app
-- role: constraint
-  uid: ../constraint/valid-idle-stack-area
-name: BSP_IDLE_TASK_STACK_SIZE
-notes: null
-type: interface
diff --git a/spec/acfg/if/bsp-initial-extension.yml b/spec/acfg/if/bsp-initial-extension.yml
deleted file mode 100644
index 8204c2d..0000000
--- a/spec/acfg/if/bsp-initial-extension.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-appl-config-option-type: initializer
-copyrights:
-- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
-default-value: |
-  The default value is BSP-specific.
-description: |
-  If
-
-  * this configuration option is defined by the BSP
-
-  * and ${disable-bsp-settings:/name} is undefined,
-
-  then the value of this configuration option is used to initialize the table
-  of initial user extensions.
-enabled-by: true
-index-entries: []
-interface-type: appl-config-option
-links:
-- role: requirement-refinement
-  uid: ../req/bsp-initial-extension
-- role: appl-config-group-member
-  uid: group-bsp
-- role: constraint
-  uid: ../constraint/init-userext-table
-name: BSP_INITIAL_EXTENSION
-notes: |
-  The value of this configuration option is placed after the entries of all
-  other initial user extensions.
-type: interface
diff --git a/spec/acfg/if/bsp-interrupt-stack-size.yml b/spec/acfg/if/bsp-interrupt-stack-size.yml
deleted file mode 100644
index 53c8e81..0000000
--- a/spec/acfg/if/bsp-interrupt-stack-size.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-appl-config-option-type: integer
-copyrights:
-- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
-default-value: |
-  The default value is BSP-specific.
-description: |
-  If
-
-  * this configuration option is defined by the BSP
-
-  * and ${disable-bsp-settings:/name} is undefined,
-
-  then the value of this configuration option defines the default value of
-  ${interrupt-stack-size:/name}.
-enabled-by: true
-index-entries: []
-interface-type: appl-config-option
-links:
-- role: requirement-refinement
-  uid: ../req/bsp-interrupt-stack-size
-- role: appl-config-group-member
-  uid: group-bsp
-- role: constraint
-  uid: ../constraint/option-not-pre-qualified
-- role: constraint
-  uid: ../constraint/min-bsp-app
-- role: constraint
-  uid: ../constraint/valid-isr-stack-area
-- role: constraint
-  uid: ../constraint/valid-isr-stack-alignment
-name: BSP_INTERRUPT_STACK_SIZE
-notes: null
-type: interface
diff --git a/spec/acfg/if/bsp-prerequisite-drivers.yml b/spec/acfg/if/bsp-prerequisite-drivers.yml
deleted file mode 100644
index 3b38e63..0000000
--- a/spec/acfg/if/bsp-prerequisite-drivers.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-appl-config-option-type: initializer
-copyrights:
-- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
-default-value: |
-  The default value is BSP-specific.
-description: |
-  If
-
-  * this configuration option is defined by the BSP
-
-  * and ${disable-bsp-settings:/name} is undefined,
-
-  then the value of this configuration option is used to add BSP-provided
-  prerequisite drivers to the Device Driver Table.
-enabled-by: true
-index-entries: []
-interface-type: appl-config-option
-links:
-- role: requirement-refinement
-  uid: ../req/bsp-prerequisite-drivers
-- role: appl-config-group-member
-  uid: group-bsp
-- role: constraint
-  uid: ../constraint/option-not-pre-qualified
-- role: constraint
-  uid: ../constraint/init-userext-table
-name: CONFIGURE_BSP_PREREQUISITE_DRIVERS
-notes: |
-  The value of this configuration option is placed before the entries of all
-  other initial user extensions (including
-  ${appl-prerequisite-drivers:/name}).
-type: interface
diff --git a/spec/acfg/if/disable-bsp-settings.yml b/spec/acfg/if/disable-bsp-settings.yml
index fcfd262..8e048ee 100644
--- a/spec/acfg/if/disable-bsp-settings.yml
+++ b/spec/acfg/if/disable-bsp-settings.yml
@@ -1,22 +1,29 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
 appl-config-option-type: feature-enable
 copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 description: |
-  In case this configuration option is defined, then the following BSP related
-  configuration options are undefined:
+  In case this configuration option is defined, then the optional BSP provided
+  settings listed below are disabled.
 
-  * ${bsp-idle-task-body:/name}
+  The optional BSP provided default values for the following application
+  configuration options are disabled:
 
-  * ${bsp-idle-task-stack-size:/name}
+  * ${idle-task-body:/name}
 
-  * ${bsp-initial-extension:/name}
+  * ${idle-task-stack-size:/name}
 
-  * ${bsp-interrupt-stack-size:/name}
+  * ${interrupt-stack-size:/name}
 
-  * ${bsp-prerequisite-drivers:/name}
+  The optional BSP provided initial extension set is disabled (see
+  ${/glossary/initial-extension-sets:/term}).  The optional BSP provided
+  prerequisite IO device drivers are disabled (see
+  ${/acfg/if/group-devdrv:/name}).  The optional BSP provided support for
+  ${/c/if/sbrk:/name} is disabled.
 
-  * ${malloc-bsp-supports-sbrk:/name}
+  This configuration option provides an all or nothing choice with respect to
+  the optional BSP provided settings.
 enabled-by: true
 index-entries: []
 interface-type: appl-config-option
@@ -24,7 +31,7 @@ links:
 - role: requirement-refinement
   uid: ../req/disable-bsp-settings
 - role: appl-config-group-member
-  uid: group-bsp
+  uid: group-general
 name: CONFIGURE_DISABLE_BSP_SETTINGS
 notes: null
 type: interface
diff --git a/spec/acfg/if/domain.yml b/spec/acfg/if/domain.yml
new file mode 100644
index 0000000..b2d82ec
--- /dev/null
+++ b/spec/acfg/if/domain.yml
@@ -0,0 +1,13 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+description: |
+  This interface domain contains the application configuration.
+enabled-by: true
+index-entries: []
+interface-type: domain
+links:
+- role: requirement-refinement
+  uid: /req/domains
+name: Application Configuration
+type: interface
diff --git a/spec/acfg/if/group-bsp.yml b/spec/acfg/if/group-bsp.yml
deleted file mode 100644
index 8a89604..0000000
--- a/spec/acfg/if/group-bsp.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-copyrights:
-- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
-description: |
-  This section describes configuration options related to the BSP.  Some
-  configuration options may have a BSP-specific setting which is defined by
-  ``<bsp.h>``.  The BSP-specific settings can be disabled by the
-  ${disable-bsp-settings:/name} configuration option.
-enabled-by: true
-index-entries: []
-interface-type: appl-config-group
-links:
-- role: interface-placement
-  uid: ../../if/domain
-- role: requirement-refinement
-  uid: ../../req/applconfig
-name: BSP Related Configuration Options
-text: ''
-type: interface
diff --git a/spec/acfg/req/bsp-idle-task-body.yml b/spec/acfg/if/group.yml
similarity index 56%
rename from spec/acfg/req/bsp-idle-task-body.yml
rename to spec/acfg/if/group.yml
index a85438f..bd559e4 100644
--- a/spec/acfg/req/bsp-idle-task-body.yml
+++ b/spec/acfg/if/group.yml
@@ -2,14 +2,15 @@ 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
+identifier: RTEMSApplConfig
 links:
-- role: requirement-refinement
-  uid: /req/applconfig
-non-functional-type: interface-requirement
+- role: interface-ingroup
+  uid: /if/group
+non-functional-type: design-group
 rationale: null
 references: []
 requirement-type: non-functional
 text: |
-  The ${/glossary/bsp:/term} may define the default value for
-  ${../if/idle-task-body:/name}.
+  The ${/glossary/api:/term} shall contain the application configuration
+  interface.
 type: requirement
diff --git a/spec/acfg/if/header.yml b/spec/acfg/if/header.yml
new file mode 100644
index 0000000..ba1932d
--- /dev/null
+++ b/spec/acfg/if/header.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: |
+  This header file initializes the application configuration.
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+index-entries: []
+interface-type: header-file
+links:
+- role: interface-placement
+  uid: domain
+- role: interface-ingroup
+  uid: group
+path: rtems/confdefs.h
+prefix: cpukit/include
+type: interface
diff --git a/spec/acfg/if/idle-task-body.yml b/spec/acfg/if/idle-task-body.yml
index ccc901f..9a92a1b 100644
--- a/spec/acfg/if/idle-task-body.yml
+++ b/spec/acfg/if/idle-task-body.yml
@@ -1,10 +1,14 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
 appl-config-option-type: initializer
 copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 default-value: |
-  If ${bsp-idle-task-body:/name} is defined, then this will be the default value,
-  otherwise the default value is ``_CPU_Thread_Idle_body``.
+  If the ${disable-bsp-settings:/name} configuration option is not defined and
+  ${/bsp/if/acfg-idle-task-body:/name} is provided by the
+  ${/glossary/bsp:/term}, then the default value is defined by
+  ${/bsp/if/acfg-idle-task-body:/name}, otherwise the default value is
+  ``_CPU_Thread_Idle_body``.
 description: |
   The value of this configuration option initializes the IDLE thread body.
 enabled-by: true
@@ -25,4 +29,9 @@ notes: |
 
   IDLE threads can be used to initialize the application, see configuration
   option ${idle-task-init-appl:/name}.
+
+  The BSP may have knowledge of the specific CPU model, system controller
+  logic, and peripheral buses, so a BSP-specific IDLE task may be capable of
+  turning components off to save power during extended periods of no task
+  activity.
 type: interface
diff --git a/spec/acfg/if/idle-task-stack-size.yml b/spec/acfg/if/idle-task-stack-size.yml
index d0ea239..372501f 100644
--- a/spec/acfg/if/idle-task-stack-size.yml
+++ b/spec/acfg/if/idle-task-stack-size.yml
@@ -1,8 +1,14 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
 appl-config-option-type: integer
 copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
-default-value: ${min-task-stack-size:/name}
+default-value: |
+  If the ${disable-bsp-settings:/name} configuration option is not defined and
+  ${/bsp/if/acfg-idle-task-stack-size:/name} is provided by the
+  ${/glossary/bsp:/term}, then the default value is defined by
+  ${/bsp/if/acfg-idle-task-stack-size:/name}, otherwise the default value is
+  defined by the ${min-task-stack-size:/name} configuration option.
 description: |
   The value of this configuration option defines the task stack size for an
   IDLE task.
diff --git a/spec/acfg/if/init.yml b/spec/acfg/if/init.yml
new file mode 100644
index 0000000..d21b28a
--- /dev/null
+++ b/spec/acfg/if/init.yml
@@ -0,0 +1,12 @@
+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
+index-entries: []
+interface-type: unspecified-define
+links:
+- role: interface-ingroup
+  uid: group
+name: CONFIGURE_INIT
+references: []
+type: interface
diff --git a/spec/acfg/if/initial-extensions.yml b/spec/acfg/if/initial-extensions.yml
index 7567b49..35c642d 100644
--- a/spec/acfg/if/initial-extensions.yml
+++ b/spec/acfg/if/initial-extensions.yml
@@ -20,6 +20,6 @@ links:
 name: CONFIGURE_INITIAL_EXTENSIONS
 notes: |
   The value of this configuration option is placed before the entries of
-  ${bsp-initial-extension:/name} and after the entries of all other initial
-  user extensions.
+  ${/bsp/if/acfg-initial-extension:/name} and after the entries of all other
+  initial user extensions.
 type: interface
diff --git a/spec/acfg/if/interrupt-stack-size.yml b/spec/acfg/if/interrupt-stack-size.yml
index 9c91256..accf9c0 100644
--- a/spec/acfg/if/interrupt-stack-size.yml
+++ b/spec/acfg/if/interrupt-stack-size.yml
@@ -3,8 +3,11 @@ appl-config-option-type: integer
 copyrights:
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 default-value: |
-  The default value is ${bsp-interrupt-stack-size:/name} in case it is defined,
-  otherwise the default value is ${/score/cpu/if/stack-minimum-size:/name}.
+  If the ${disable-bsp-settings:/name} configuration option is not defined and
+  ${/bsp/if/acfg-interrupt-stack-size:/name} is provided by the
+  ${/glossary/bsp:/term}, then the default value is defined by
+  ${/bsp/if/acfg-interrupt-stack-size:/name}, otherwise the default value is
+  ${/score/cpu/if/stack-minimum-size:/name}.
 description: |
   The value of this configuration option defines the size of an interrupt stack
   in bytes.
diff --git a/spec/acfg/if/malloc-bsp-supports-sbrk.yml b/spec/acfg/if/malloc-bsp-supports-sbrk.yml
deleted file mode 100644
index 8fe884b..0000000
--- a/spec/acfg/if/malloc-bsp-supports-sbrk.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-appl-config-option-type: feature-enable
-copyrights:
-- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
-description: |
-  If
-
-  * this configuration option is defined by the BSP
-
-  * and ${disable-bsp-settings:/name} is undefined,
-
-  then not all memory is made available to the C Program Heap immediately at
-  system initialization time.  When ${/c/if/malloc:/name} or other standard
-  memory allocation functions are unable to allocate memory, they will call the
-  BSP supplied ${/c/if/sbrk:/name} function to obtain more memory.
-enabled-by: true
-index-entries: []
-interface-type: appl-config-option
-links:
-- role: requirement-refinement
-  uid: ../req/malloc-bsp-supports-sbrk
-- role: appl-config-group-member
-  uid: group-bsp
-- role: constraint
-  uid: ../constraint/option-not-pre-qualified
-name: CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK
-notes: |
-  This option should not be defined by the application. Only the BSP knows how
-  it allocates memory to the C Program Heap.
-type: interface
diff --git a/spec/acfg/if/max-drivers.yml b/spec/acfg/if/max-drivers.yml
index a569552..7f0e636 100644
--- a/spec/acfg/if/max-drivers.yml
+++ b/spec/acfg/if/max-drivers.yml
@@ -39,7 +39,10 @@ default-value: |
 
   * ${appl-prerequisite-drivers:/name}
 
-  * ${bsp-prerequisite-drivers:/name}
+  If the ${disable-bsp-settings:/name} configuration option is not defined and
+  the ${/glossary/bsp:/term:/name} provides
+  ${/bsp/if/acfg-prerequisite-drivers:/name}, then the BSP-provided
+  prerequisite device drivers are also taken into account.
 description: |
   The value of this configuration option defines the number of device drivers.
 enabled-by: true
diff --git a/spec/acfg/req/bsp-idle-task-stack-size.yml b/spec/acfg/req/bsp-idle-task-stack-size.yml
deleted file mode 100644
index ae08091..0000000
--- a/spec/acfg/req/bsp-idle-task-stack-size.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-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/applconfig
-non-functional-type: interface-requirement
-rationale: null
-references: []
-requirement-type: non-functional
-text: |
-  The ${/glossary/bsp:/term} may define the default value for
-  ${../if/idle-task-stack-size:/name}.
-type: requirement
diff --git a/spec/acfg/req/bsp-initial-extension.yml b/spec/acfg/req/bsp-initial-extension.yml
index 1456590..973410d 100644
--- a/spec/acfg/req/bsp-initial-extension.yml
+++ b/spec/acfg/req/bsp-initial-extension.yml
@@ -4,11 +4,15 @@ copyrights:
 enabled-by: true
 links:
 - role: requirement-refinement
-  uid: /req/applconfig
-non-functional-type: interface-requirement
+  uid: init
+functional-type: function
 rationale: null
 references: []
-requirement-type: non-functional
+requirement-type: functional
 text: |
-  The ${/glossary/bsp:/term} may define initial user extensions.
+  Where ${../if/disable-bsp-settings:/name} is not defined by the application,
+  where ${/bsp/if/acfg-initial-extension:/name} is defined by the
+  ${/glossary/bsp:/term}, when the application configuration is initialized,
+  the extension set defined by ${/bsp/if/acfg-initial-extension:/name} shall be
+  registered in the ${/glossary/initial-extension-sets:/term}.
 type: requirement
diff --git a/spec/acfg/req/bsp-interrupt-stack-size.yml b/spec/acfg/req/bsp-interrupt-stack-size.yml
deleted file mode 100644
index 9cfda36..0000000
--- a/spec/acfg/req/bsp-interrupt-stack-size.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-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/applconfig
-non-functional-type: interface-requirement
-rationale: null
-references: []
-requirement-type: non-functional
-text: |
-  The ${/glossary/bsp:/term} may define the default value for
-  ${../if/interrupt-stack-size:/name}.
-type: requirement
diff --git a/spec/acfg/req/bsp-prerequisite-drivers.yml b/spec/acfg/req/bsp-prerequisite-drivers.yml
index 5a89951..7b41859 100644
--- a/spec/acfg/req/bsp-prerequisite-drivers.yml
+++ b/spec/acfg/req/bsp-prerequisite-drivers.yml
@@ -4,12 +4,16 @@ copyrights:
 enabled-by: true
 links:
 - role: requirement-refinement
-  uid: /req/applconfig
-non-functional-type: interface-requirement
+  uid: init
+functional-type: function
 rationale: null
 references: []
-requirement-type: non-functional
+requirement-type: functional
 text: |
-  The ${/glossary/bsp:/term} may define prerequisite drivers for the Device
-  Driver Table.
+  Where ${../if/disable-bsp-settings:/name} is not defined by the application,
+  where ${/bsp/if/acfg-prerequisite-drivers:/name} is defined by the
+  ${/glossary/bsp:/term}, when the application configuration is initialized,
+  the device driver entry points defined by
+  ${/bsp/if/acfg-prerequisite-drivers:/name} shall be registered in the
+  ${/glossary/devicedrivertable:/term}.
 type: requirement
diff --git a/spec/acfg/req/init.yml b/spec/acfg/req/init.yml
new file mode 100644
index 0000000..cb16857
--- /dev/null
+++ b/spec/acfg/req/init.yml
@@ -0,0 +1,17 @@
+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/applconfig
+functional-type: function
+rationale: null
+references: []
+requirement-type: functional
+text: |
+  Where ${../if/init:/name} is defined, where ${../if/header:/path} is included
+  in a translation unit after the definition of ${../if/init:/name}, when the
+  translation unit is preprocessed and compiled, the application configuration
+  shall be initialized.
+type: requirement
diff --git a/spec/acfg/req/malloc-bsp-supports-sbrk.yml b/spec/acfg/req/malloc-bsp-supports-sbrk.yml
index 832d247..a2b8ffd 100644
--- a/spec/acfg/req/malloc-bsp-supports-sbrk.yml
+++ b/spec/acfg/req/malloc-bsp-supports-sbrk.yml
@@ -4,12 +4,15 @@ copyrights:
 enabled-by: true
 links:
 - role: requirement-refinement
-  uid: /req/applconfig
-non-functional-type: interface-requirement
+  uid: init
+functional-type: function
 rationale: null
 references: []
-requirement-type: non-functional
+requirement-type: functional
 text: |
-  The ${/glossary/bsp:/term} may define that not all memory is made available
-  to the C Program Heap immediately at system initialization time.
+  Where ${../if/disable-bsp-settings:/name} is not defined by the application,
+  where ${/bsp/if/acfg-malloc-supports-sbrk:/name} is defined by the
+  ${/glossary/bsp:/term}, when the application configuration is initialized,
+  not all memory shall made available to the C Program Heap immediately at
+  system initialization time.
 type: requirement
diff --git a/spec/acfg/val/acfg.yml b/spec/acfg/val/acfg.yml
index be11a7a..e669a92 100644
--- a/spec/acfg/val/acfg.yml
+++ b/spec/acfg/val/acfg.yml
@@ -7,9 +7,67 @@ test-actions:
 - action-brief: |
     Check the effect of application configuration options.
   action-code: |
-    /* Nothing to do */
+    rtems_status_code sc;
+    rtems_id          id;
   checks:
   - brief: |
+      Check the default value ${/acfg/if/idle-task-body:/name} where the
+      optional BSP-provided default value is enabled.
+    code: |
+      T_eq_ptr(
+        rtems_configuration_get_idle_task(),
+      #if defined(BSP_IDLE_TASK_BODY)
+        BSP_IDLE_TASK_BODY
+      #else
+        _CPU_Thread_Idle_body
+      #endif
+      );
+    links:
+    - role: validation
+      uid: ../if/idle-task-body
+    - role: validation
+      uid: ../if/disable-bsp-settings
+  - brief: |
+      Check the configured ${/acfg/if/init-task-arguments:/name}.  This
+      validates also the effect of ${/acfg/if/init-task-entrypoint:/name} and
+      ${/acfg/if/rtems-init-tasks-table:/name}.
+    code: |
+      T_eq_ulong( test_runner_argument, TEST_RUNNER_ARGUMENT );
+    links:
+    - role: validation
+      uid: ../if/init-task-arguments
+    - role: validation
+      uid: ../if/init-task-entrypoint
+    - role: validation
+      uid: ../if/rtems-init-tasks-table
+  - brief: |
+      Check the configured ${/acfg/if/init-task-initial-modes:/name}.
+    code: |
+      T_eq_u32( test_runner_initial_modes, TEST_RUNNER_INITIAL_MODES );
+    links:
+    - role: validation
+      uid: ../if/init-task-initial-modes
+  - brief: |
+      Check the configured ${/acfg/if/init-task-name:/name}.
+    code: |
+      sc = rtems_task_ident( TEST_RUNNER_NAME, RTEMS_SEARCH_LOCAL_NODE, &id );
+      T_rsc_success( sc );
+      T_eq_u32( id, rtems_task_self() );
+    links:
+    - role: validation
+      uid: ../if/init-task-name
+  - brief: |
+      Check the configured ${/acfg/if/init-task-priority:/name}.  A priority of
+      zero can only be set for system tasks.  This validates also
+      ${/acfg/if/init-task-attributes:/name}.
+    code: |
+      T_eq_u32( test_runner_initial_priority, 0 );
+    links:
+    - role: validation
+      uid: ../if/init-task-priority
+    - role: validation
+      uid: ../if/init-task-attributes
+  - brief: |
       Check that the configured
       ${/acfg/if/min-tasks-with-user-provided-storage:/name} value reduced the
       stack space size.
@@ -173,7 +231,16 @@ test-actions:
     - role: validation
       uid: /rtems/config/if/get-nanoseconds-per-tick
   - brief: |
-      Check the configured ${/acfg/if/task-stack-allocator:/name} hook.
+      Check the configured ${/acfg/if/task-stack-allocator:/name} hook.  Using
+      the test stack allocator validates also
+      ${/acfg/if/init-task-construct-storage-size}, since the
+      test_task_stack_allocate() allocate handler only supports
+      ${/acfg/if/max-tasks:/name} minus one stacks and the validation test for
+      ${/rtems/task/req/create-errors} creates for some pre-condition variants
+      all tasks until ${/rtems/status/if/too-many:/name} is returned.  In
+      addition, test_task_stack_allocate() checks that the allocation size is
+      greater than or equal to TEST_MINIMUM_STACK_SIZE which validates
+      ${/acfg/if/min-task-stack-size:/name}.
     code: |
       T_eq_ptr(
         rtems_configuration_get_stack_allocate_hook(),
@@ -183,6 +250,10 @@ test-actions:
     - role: validation
       uid: ../if/task-stack-allocator
     - role: validation
+      uid: ../if/init-task-construct-storage-size
+    - role: validation
+      uid: ../if/min-task-stack-size
+    - role: validation
       uid: /rtems/config/if/get-stack-allocate-hook
   - brief: |
       Check the configured ${/acfg/if/task-stack-no-workspace:/name} value.
@@ -230,18 +301,6 @@ test-actions:
     - role: validation
       uid: /rtems/config/if/get-idle-task-stack-size
   - brief: |
-      Check the configured ${/acfg/if/idle-task-body:/name}.
-    code: |
-      T_eq_ptr(
-        rtems_configuration_get_idle_task(),
-        test_idle_task_body
-      );
-    links:
-    - role: validation
-      uid: ../if/idle-task-body
-    - role: validation
-      uid: /rtems/config/if/get-idle-task
-  - brief: |
       Check the configured ${/acfg/if/interrupt-stack-size:/name} value.
     code: |
       T_eq_sz(
@@ -273,7 +332,7 @@ test-context-support: null
 test-description: null
 test-header: null
 test-includes:
-- rtems.h
+- bsp.h
 - rtems/score/heap.h
 test-local-includes:
 - ts-config.h
diff --git a/spec/acfg/val/bsp-prerequisite-drivers.yml b/spec/acfg/val/bsp-prerequisite-drivers.yml
new file mode 100644
index 0000000..9a3376f
--- /dev/null
+++ b/spec/acfg/val/bsp-prerequisite-drivers.yml
@@ -0,0 +1,17 @@
+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: validation
+  uid: ../req/bsp-prerequisite-drivers
+method: by-inspection
+references:
+- identifier: cpukit/include/rtems/confdefs/iodrivers.h
+  hash: yz8gesoF_me3cP7VhsO_BITvVnexGuPGTh1dEs87eKs=
+  type: file
+text: |
+  Inspection of the referenced ${/glossary/sourcecode:/term} file showed that
+  the ${../req/bsp-prerequisite-drivers} requirement is implemented as
+  specified.
+type: validation
diff --git a/spec/acfg/val/default.yml b/spec/acfg/val/default.yml
index d60f99c..64148b0 100644
--- a/spec/acfg/val/default.yml
+++ b/spec/acfg/val/default.yml
@@ -5,6 +5,72 @@ enabled-by: true
 links: []
 test-actions:
 - action-brief: |
+    Check the effect of application configuration options with optional
+    BSP-provided settings.
+  action-code: |
+    rtems_extensions_table bsp = BSP_INITIAL_EXTENSION;
+  checks:
+  - brief: |
+      Check the configured ${/acfg/if/idle-task-body:/name}.
+    code: |
+      T_step_eq_ptr( ${step}, rtems_configuration_get_idle_task(), IdleBody );
+    links:
+    - role: validation
+      uid: ../if/idle-task-body
+    - role: validation
+      uid: /rtems/config/if/get-idle-task
+  - brief: |
+      Check the default value ${/acfg/if/idle-task-stack-size:/name} where the
+      optional BSP-provided default value is enabled.
+    code: |
+      T_step_eq_sz(
+        ${step},
+        rtems_configuration_get_idle_task_stack_size(),
+      #if defined(BSP_IDLE_TASK_STACK_SIZE)
+        BSP_IDLE_TASK_STACK_SIZE
+      #else
+        CPU_STACK_MINIMUM_SIZE
+      #endif
+      );
+    links:
+    - role: validation
+      uid: ../if/idle-task-stack-size
+    - 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.
+    code: |
+      T_step_eq_sz(
+        ${step},
+        rtems_configuration_get_interrupt_stack_size(),
+      #if defined(BSP_INTERRUPT_STACK_SIZE)
+        BSP_INTERRUPT_STACK_SIZE
+      #else
+        CPU_STACK_MINIMUM_SIZE
+      #endif
+      );
+    links:
+    - role: validation
+      uid: ../if/interrupt-stack-size
+    - role: validation
+      uid: ../if/disable-bsp-settings
+  - brief: |
+      Check the BSP-provided initial extension is registered.
+    code: |
+      T_step_eq_sz( ${step}, _User_extensions_Initial_count, 1 );
+      T_step_eq_ptr(
+        ${step},
+        _User_extensions_Initial_extensions[ 0 ].fatal,
+        bsp.fatal
+      );
+    links:
+    - role: validation
+      uid: ../req/bsp-initial-extension
+    - role: validation
+      uid: ../if/disable-bsp-settings
+  links: []
+- action-brief: |
     Try to create a barrier.
   action-code: |
     rtems_status_code sc;
@@ -186,8 +252,9 @@ test-context-support: null
 test-description: null
 test-header: null
 test-includes:
-- rtems.h
+- bsp.h
 - string.h
+- rtems/score/userextdata.h
 test-local-includes:
 - tx-support.h
 test-setup: null
diff --git a/spec/acfg/val/disabled-bsp-settings.yml b/spec/acfg/val/disabled-bsp-settings.yml
new file mode 100644
index 0000000..783b516
--- /dev/null
+++ b/spec/acfg/val/disabled-bsp-settings.yml
@@ -0,0 +1,82 @@
+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 with optional
+    BSP-provided settings.
+  action-code: |
+    rtems_extensions_table bsp = BSP_INITIAL_EXTENSION;
+  checks:
+  - brief: |
+      Check the default value ${/acfg/if/idle-task-body:/name} where the
+      optional BSP-provided default value is disabled.
+    code: |
+      T_eq_ptr(
+        rtems_configuration_get_idle_task(),
+        _CPU_Thread_Idle_body
+      );
+    links:
+    - role: validation
+      uid: ../if/idle-task-body
+    - role: validation
+      uid: ../if/disable-bsp-settings
+  - brief: |
+      Check the default value ${/acfg/if/idle-task-stack-size:/name} where the
+      optional BSP-provided default value is disabled.
+    code: |
+      T_eq_sz(
+        rtems_configuration_get_idle_task_stack_size(),
+        CPU_STACK_MINIMUM_SIZE
+      );
+    links:
+    - role: validation
+      uid: ../if/idle-task-stack-size
+    - 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 disabled.
+    code: |
+      T_eq_sz(
+        rtems_configuration_get_interrupt_stack_size(),
+        CPU_STACK_MINIMUM_SIZE
+      );
+    links:
+    - role: validation
+      uid: ../if/interrupt-stack-size
+    - role: validation
+      uid: ../if/disable-bsp-settings
+  - brief: |
+      Check the BSP-provided initial extension is not registered.
+    code: |
+      T_eq_sz( _User_extensions_Initial_count, 1 );
+      T_ne_ptr(
+        _User_extensions_Initial_extensions[ 0 ].fatal,
+        bsp.fatal
+      );
+    links:
+    - role: validation
+      uid: ../req/bsp-initial-extension
+    - role: validation
+      uid: ../if/disable-bsp-settings
+  links: []
+test-brief: |
+  Tests the default values of application configuration options where all
+  optional BSP provided settings are disabled.
+test-context: []
+test-context-support: null
+test-description: null
+test-header: null
+test-includes:
+- bsp.h
+- rtems/score/userextdata.h
+test-local-includes: []
+test-setup: null
+test-stop: null
+test-support: null
+test-target: testsuites/validation/tc-acfg-disabled-bsp-settings.c
+test-teardown: null
+type: test-case
diff --git a/spec/acfg/val/malloc-bsp-supports-sbrk.yml b/spec/acfg/val/malloc-bsp-supports-sbrk.yml
new file mode 100644
index 0000000..fe4d662
--- /dev/null
+++ b/spec/acfg/val/malloc-bsp-supports-sbrk.yml
@@ -0,0 +1,17 @@
+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: validation
+  uid: ../req/malloc-bsp-supports-sbrk
+method: by-inspection
+references:
+- identifier: cpukit/include/rtems/confdefs/malloc.h
+  hash: tz06hfc6SfN7RsMWx7iMUDXnHav1AZUFS-2JdD0CfUY=
+  type: file
+text: |
+  Inspection of the referenced ${/glossary/sourcecode:/term} file showed that
+  the ${../req/malloc-bsp-supports-sbrk} requirement is implemented as
+  specified.
+type: validation
diff --git a/spec/acfg/val/one-cpu.yml b/spec/acfg/val/one-cpu.yml
new file mode 100644
index 0000000..5533244
--- /dev/null
+++ b/spec/acfg/val/one-cpu.yml
@@ -0,0 +1,55 @@
+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: |
+    rtems_status_code sc;
+    rtems_id          id;
+  checks:
+  - brief: |
+      Check the configured ${/acfg/if/max-priority:/name} value using
+      ${/rtems/task/if/maximum-priority}.  This configuration option affects
+      only the Deterministic Priority Scheduler which was explicitly configured
+      by ${/acfg/if/scheduler-priority:/name} in the test suite.
+    code: |
+      T_eq_u32( RTEMS_MAXIMUM_PRIORITY, 127 );
+    links:
+    - role: validation
+      uid: ../if/max-priority
+    - role: validation
+      uid: ../if/scheduler-priority
+    - role: validation
+      uid: /rtems/task/if/maximum-priority
+  - brief: |
+      Check the configured ${/acfg/if/max-priority:/name} value using
+      ${/rtems/task/if/maximum-priority}.  This configuration option affects
+      only the Deterministic Priority Scheduler which was explicitly configured
+      by ${/acfg/if/scheduler-priority:/name} in the test suite.
+    code: |
+      sc = rtems_scheduler_ident( TEST_SCHEDULER_A_NAME, &id );
+      T_rsc_success( sc );
+    links:
+    - role: validation
+      uid: ../if/scheduler-name
+  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
+test-local-includes:
+- ts-config.h
+- tx-support.h
+test-setup: null
+test-stop: null
+test-support: null
+test-target: testsuites/validation/tc-acfg-one-cpu.c
+test-teardown: null
+type: test-case
diff --git a/spec/bsp/if/acfg-idle-task-body.yml b/spec/bsp/if/acfg-idle-task-body.yml
new file mode 100644
index 0000000..46a66b5
--- /dev/null
+++ b/spec/bsp/if/acfg-idle-task-body.yml
@@ -0,0 +1,14 @@
+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
+index-entries: []
+interface-type: unspecified-define
+links:
+- role: interface-placement
+  uid: bsp-header
+- role: interface-ingroup
+  uid: group
+name: BSP_IDLE_TASK_BODY
+references: []
+type: interface
diff --git a/spec/bsp/if/acfg-idle-task-stack-size.yml b/spec/bsp/if/acfg-idle-task-stack-size.yml
new file mode 100644
index 0000000..e41cacf
--- /dev/null
+++ b/spec/bsp/if/acfg-idle-task-stack-size.yml
@@ -0,0 +1,14 @@
+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
+index-entries: []
+interface-type: unspecified-define
+links:
+- role: interface-placement
+  uid: bsp-header
+- role: interface-ingroup
+  uid: group
+name: BSP_IDLE_TASK_STACK_SIZE
+references: []
+type: interface
diff --git a/spec/bsp/if/acfg-initial-extension.yml b/spec/bsp/if/acfg-initial-extension.yml
new file mode 100644
index 0000000..dbcb3f4
--- /dev/null
+++ b/spec/bsp/if/acfg-initial-extension.yml
@@ -0,0 +1,14 @@
+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
+index-entries: []
+interface-type: unspecified-define
+links:
+- role: interface-placement
+  uid: bsp-header
+- role: interface-ingroup
+  uid: group
+name: BSP_INITIAL_EXTENSION
+references: []
+type: interface
diff --git a/spec/bsp/if/acfg-interrupt-stack-size.yml b/spec/bsp/if/acfg-interrupt-stack-size.yml
new file mode 100644
index 0000000..d90d891
--- /dev/null
+++ b/spec/bsp/if/acfg-interrupt-stack-size.yml
@@ -0,0 +1,14 @@
+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
+index-entries: []
+interface-type: unspecified-define
+links:
+- role: interface-placement
+  uid: bsp-header
+- role: interface-ingroup
+  uid: group
+name: BSP_INTERRUPT_STACK_SIZE
+references: []
+type: interface
diff --git a/spec/bsp/if/acfg-malloc-supports-sbrk.yml b/spec/bsp/if/acfg-malloc-supports-sbrk.yml
new file mode 100644
index 0000000..5be9c73
--- /dev/null
+++ b/spec/bsp/if/acfg-malloc-supports-sbrk.yml
@@ -0,0 +1,14 @@
+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
+index-entries: []
+interface-type: unspecified-define
+links:
+- role: interface-placement
+  uid: bsp-header
+- role: interface-ingroup
+  uid: group
+name: CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK
+references: []
+type: interface
diff --git a/spec/bsp/if/acfg-prerequisite-drivers.yml b/spec/bsp/if/acfg-prerequisite-drivers.yml
new file mode 100644
index 0000000..6ee02a5
--- /dev/null
+++ b/spec/bsp/if/acfg-prerequisite-drivers.yml
@@ -0,0 +1,14 @@
+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
+index-entries: []
+interface-type: unspecified-define
+links:
+- role: interface-placement
+  uid: bsp-header
+- role: interface-ingroup
+  uid: group
+name: CONFIGURE_BSP_PREREQUISITE_DRIVERS
+references: []
+type: interface
diff --git a/spec/bsp/if/bsp-header.yml b/spec/bsp/if/bsp-header.yml
new file mode 100644
index 0000000..d4413b3
--- /dev/null
+++ b/spec/bsp/if/bsp-header.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: |
+  This header file provides ${/glossary/bsp:/term}-specific interfaces.
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+index-entries: []
+interface-type: header-file
+links:
+- role: interface-placement
+  uid: domain
+- role: interface-ingroup
+  uid: group
+path: bsp.h
+prefix: bsps/include
+type: interface
diff --git a/spec/rtems/fatal/req/fatal.yml b/spec/rtems/fatal/req/fatal.yml
new file mode 100644
index 0000000..0c771f9
--- /dev/null
+++ b/spec/rtems/fatal/req/fatal.yml
@@ -0,0 +1,18 @@
+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/fatal
+- role: function-implementation
+  uid: /score/interr/req/terminate
+functional-type: function
+rationale: null
+references: []
+requirement-type: functional
+text: |
+  When ${../if/fatal:/name} is called, the system shall terminate with a fatal
+  source specified by the ${../if/fatal:/params[0]/name} parameter and a fatal
+  code specified by the ${../if/fatal:/params[1]/name} parameter.
+type: requirement
diff --git a/spec/rtems/scheduler/req/get-maximum-priority.yml b/spec/rtems/scheduler/req/get-maximum-priority.yml
index f475060..51b6f15 100644
--- a/spec/rtems/scheduler/req/get-maximum-priority.yml
+++ b/spec/rtems/scheduler/req/get-maximum-priority.yml
@@ -36,7 +36,7 @@ post-conditions:
       #if defined(RTEMS_SMP)
       T_eq_u32( ctx->priority_obj, INT_MAX );
       #else
-      T_eq_u32( ctx->priority_obj, 255 );
+      T_eq_u32( ctx->priority_obj, 127 );
       #endif
     text: |
       The value of the object referenced by the
diff --git a/spec/rtems/task/req/ident.yml b/spec/rtems/task/req/ident.yml
index b505199..964c653 100644
--- a/spec/rtems/task/req/ident.yml
+++ b/spec/rtems/task/req/ident.yml
@@ -81,6 +81,7 @@ test-header: null
 test-includes: []
 test-local-includes:
 - tr-object-ident.h
+- ts-config.h
 test-prepare: null
 test-setup:
   brief: null
@@ -111,7 +112,7 @@ test-support: |
   RTEMS_ALIGNED( RTEMS_TASK_STORAGE_ALIGNMENT )
   static char ClassicTaskIdentStorage[
     RTEMS_TASK_STORAGE_SIZE(
-      MAX_TLS_SIZE + RTEMS_MINIMUM_STACK_SIZE,
+      MAX_TLS_SIZE + TEST_MINIMUM_STACK_SIZE,
       TASK_ATTRIBUTES
     )
   ];
diff --git a/spec/score/val/fatal.yml b/spec/score/val/fatal.yml
index 13d6a3f..8521c61 100644
--- a/spec/score/val/fatal.yml
+++ b/spec/score/val/fatal.yml
@@ -104,7 +104,7 @@ test-actions:
 
     deadlock_mutex = CreateMutex();
 
-    SetFatalHandler( FatalThreadQueueDeadlock, ctx );
+    SetFatalHandler( FatalJumpBack, ctx );
     SetSelfPriority( PRIO_NORMAL );
     counter = ResetFatalInfo( ctx );
 
@@ -113,7 +113,7 @@ test-actions:
     task_id = CreateTask( "WORK", PRIO_HIGH );
     StartTask( task_id, ThreadQueueDeadlockTask, NULL );
 
-    if ( setjmp( before_deadlock ) == 0 ) {
+    if ( setjmp( before_fatal ) == 0 ) {
       (void) CreateTask( "DLCK", PRIO_NORMAL );
     }
 
@@ -134,6 +134,29 @@ test-actions:
   links:
   - role: validation
     uid: ../object/req/fatal-allocator-mutex-deadlock
+- action-brief: |
+    Check that ${/rtems/fatal/if/fatal:/name} terminates the system.  Since
+    SetFatalHandler() requires an initial extension this validates
+    ${/acfg/if/initial-extensions:/name}.
+  action-code: |
+    unsigned int counter;
+
+    SetFatalHandler( FatalJumpBack, ctx );
+    counter = ResetFatalInfo( ctx );
+
+    if ( setjmp( before_fatal ) == 0 ) {
+      rtems_fatal( 123, 4567890 );
+    }
+
+    T_eq_uint( GetFatalCounter( ctx ), counter + 1 );
+    T_eq_int( ctx->source, 123 );
+    T_eq_ulong( ctx->code, 4567890 );
+  checks: []
+  links:
+  - role: validation
+    uid: /rtems/fatal/req/fatal
+  - role: validation
+    uid: /acfg/if/initial-extensions
 test-brief: |
   Tests some fatal errors.
 test-context:
@@ -250,7 +273,7 @@ test-support: |
     rtems_task_exit();
   }
 
-  static jmp_buf before_deadlock;
+  static jmp_buf before_fatal;
 
   static rtems_id deadlock_mutex;
 
@@ -265,14 +288,14 @@ test-support: |
     return true;
   }
 
-  static void FatalThreadQueueDeadlock(
+  static void FatalJumpBack(
     rtems_fatal_source source,
     rtems_fatal_code   code,
     void              *arg
   )
   {
     Fatal( source, code, arg );
-    longjmp( before_deadlock, 1 );
+    longjmp( before_fatal, 1 );
   }
 
   static void ThreadQueueDeadlockTask( rtems_task_argument arg )
diff --git a/spec/testsuites/terminate.yml b/spec/testsuites/terminate.yml
index fdf3635..c779fcf 100644
--- a/spec/testsuites/terminate.yml
+++ b/spec/testsuites/terminate.yml
@@ -5,6 +5,8 @@ enabled-by: true
 links:
 - role: requirement-refinement
   uid: /req/test-suites
+- role: validation
+  uid: /acfg/req/init
 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 85447c6..2ecd048 100644
--- a/spec/testsuites/validation-0.yml
+++ b/spec/testsuites/validation-0.yml
@@ -7,6 +7,8 @@ links:
   uid: /req/test-suites
 - role: validation
   uid: /acfg/if/appl-needs-clock-driver
+- role: validation
+  uid: /acfg/req/init
 test-brief: |
   This general purpose validation test suite provides enough resources to run
   basic tests for all specified managers and functions.
diff --git a/spec/testsuites/validation-acfg-0.yml b/spec/testsuites/validation-acfg-0.yml
index d0d0e5a..c33ac5c 100644
--- a/spec/testsuites/validation-acfg-0.yml
+++ b/spec/testsuites/validation-acfg-0.yml
@@ -18,68 +18,20 @@ links:
 - role: validation
   uid: /acfg/if/idle-task-body
 - role: validation
-  uid: /acfg/if/idle-task-stack-size
+  uid: /acfg/req/init
 test-brief: |
-  This validation test suite is used to validate the default value of application configuration options.
+  This validation test suite is used to validate the default value of
+  application configuration options taking the optional BSP provided settings
+  into account.
 test-code: |
-  #include <rtems.h>
-  #include <rtems/bspIo.h>
-  #include <rtems/test-info.h>
-  #include <rtems/testopts.h>
-
-  #include <rtems/test.h>
-
-  #include "tx-support.h"
-  #include "ts-config.h"
-
   const char rtems_test_name[] = "${.:/test-suite-name}";
 
-  static char buffer[ 512 ];
-
-  static const T_action actions[] = {
-    T_report_hash_sha256
-  };
-
-  static const T_config test_config = {
-    .name = rtems_test_name,
-    .buf = buffer,
-    .buf_size = sizeof( buffer ),
-    .putchar = rtems_put_char,
-    .verbosity = RTEMS_TEST_VERBOSITY,
-    .now = T_now_tick,
-    .allocate = T_memory_allocate,
-    .deallocate = T_memory_deallocate,
-    .action_count = T_ARRAY_SIZE( actions ),
-    .actions = actions
-  };
-
-  #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
-
-  #define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 0
-
-  #define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
-
-  #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
-
   #define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
 
-  #define CONFIGURE_IDLE_TASK_STACK_SIZE TEST_MINIMUM_STACK_SIZE
-
-  static void *IdleBody( uintptr_t ignored )
+  void *IdleBody( uintptr_t ignored )
   {
-    int exit_code;
-
     (void) ignored;
-
-    rtems_test_begin( rtems_test_name, TEST_STATE );
-    T_register();
-    exit_code = T_main( &test_config );
-
-    if ( exit_code == 0 ) {
-      rtems_test_end( rtems_test_name );
-    }
-
-    rtems_fatal( RTEMS_FATAL_SOURCE_EXIT, (uint32_t) exit_code );
+    RunTestSuite();
   }
 
   #define CONFIGURE_IDLE_TASK_BODY IdleBody
@@ -89,7 +41,9 @@ test-code: |
   #include <rtems/confdefs.h>
 test-description: null
 test-includes: []
-test-local-includes: []
+test-local-includes:
+- ts-acfg.h
+- tx-support.h
 test-suite-name: ValidationAcfg0
 test-target: testsuites/validation/ts-validation-acfg-0.c
 type: test-suite
diff --git a/spec/testsuites/validation-acfg-1.yml b/spec/testsuites/validation-acfg-1.yml
new file mode 100644
index 0000000..ee3fd89
--- /dev/null
+++ b/spec/testsuites/validation-acfg-1.yml
@@ -0,0 +1,60 @@
+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
+- role: validation
+  uid: /acfg/if/disable-bsp-settings
+- role: validation
+  uid: /acfg/req/init
+test-brief: |
+  This validation test suite is used to validate the default value of
+  application configuration options where all optional BSP provided settings
+  are disabled.
+test-code: |
+  const char rtems_test_name[] = "${.:/test-suite-name}";
+
+  static void FatalExtension(
+    rtems_fatal_source source,
+    bool               always_set_to_false,
+    rtems_fatal_code   code
+  )
+  {
+    rtems_extensions_table bsp = BSP_INITIAL_EXTENSION;
+
+    ( *bsp.fatal )( source, always_set_to_false, code );
+  }
+
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+    RunTestSuite();
+  }
+
+  #define CONFIGURE_INITIAL_EXTENSIONS { .fatal = FatalExtension }
+
+  #define CONFIGURE_DISABLE_BSP_SETTINGS
+
+  #define CONFIGURE_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      RTEMS_DEFAULT_ATTRIBUTES \
+    )
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- bsp.h
+test-local-includes:
+- ts-acfg.h
+test-suite-name: ValidationAcfg1
+test-target: testsuites/validation/ts-validation-acfg-1.c
+type: test-suite
diff --git a/spec/testsuites/validation-one-cpu-0.yml b/spec/testsuites/validation-one-cpu-0.yml
index a28544f..2893c58 100644
--- a/spec/testsuites/validation-one-cpu-0.yml
+++ b/spec/testsuites/validation-one-cpu-0.yml
@@ -5,6 +5,10 @@ enabled-by: true
 links:
 - role: requirement-refinement
   uid: /req/test-suites
+- role: validation
+  uid: /acfg/if/scheduler-priority
+- role: validation
+  uid: /acfg/req/init
 test-brief: |
   This general purpose validation test suite provides enough resources to run
   basic tests with exactly one processor and without a
diff --git a/spec/testsuites/validation-smp-only-0.yml b/spec/testsuites/validation-smp-only-0.yml
index 6d74490..ed838c6 100644
--- a/spec/testsuites/validation-smp-only-0.yml
+++ b/spec/testsuites/validation-smp-only-0.yml
@@ -5,6 +5,8 @@ enabled-by: RTEMS_SMP
 links:
 - role: requirement-refinement
   uid: /req/test-suites
+- role: validation
+  uid: /acfg/if/scheduler-edf-smp
 test-brief: |
   This test suite for SMP-only test cases provides enough resources to run
   basic tests for all specified managers and functions.



More information about the vc mailing list