[rtems-central commit] spec: Clarify scheduler configuration

Sebastian Huber sebh at rtems.org
Wed Feb 23 08:35:10 UTC 2022


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

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Feb 22 10:00:45 2022 +0100

spec: Clarify scheduler configuration

---

 .../constraint/scheduler-assignments-macros.yml    | 15 ++++-
 .../constraint/scheduler-table-entry-count.yml     | 12 ++++
 .../constraint/scheduler-table-entry-macros.yml    | 37 +++++++++++
 spec/acfg/if/{header.yml => header-confdefs.yml}   |  0
 spec/acfg/if/header-scheduler.yml                  | 17 +++++
 spec/acfg/if/scheduler-assign-no-scheduler.yml     | 14 ++++
 .../if/scheduler-assign-processor-mandatory.yml    | 14 ++++
 .../if/scheduler-assign-processor-optional.yml     | 14 ++++
 spec/acfg/if/scheduler-assign.yml                  | 14 ++++
 spec/acfg/if/scheduler-assignments.yml             |  3 +-
 spec/acfg/if/scheduler-table-entries.yml           | 29 ++++++++
 spec/acfg/req/scheduler-assign-attributes.yml      | 19 ++++++
 spec/acfg/req/scheduler-assign-no-scheduler.yml    | 19 ++++++
 .../req/scheduler-assign-processor-mandatory.yml   | 20 ++++++
 .../req/scheduler-assign-processor-optional.yml    | 20 ++++++
 spec/acfg/req/scheduler-assign-scheduler.yml       | 19 ++++++
 spec/acfg/req/scheduler-assignments.yml            |  2 +-
 spec/acfg/req/scheduler-table-entries.yml          | 17 +++++
 spec/acfg/val/acfg.yml                             | 15 +++--
 spec/rtems/scheduler/val/smp-only.yml              | 77 ++++++++++++++++++++++
 ...al-boot-processor-not-assigned-to-scheduler.yml |  4 +-
 .../val/fatal-mandatory-processor-not-present.yml  |  4 +-
 .../fatal-start-of-mandatory-processor-failed.yml  |  4 +-
 .../smp/val/start-of-optional-processor-failed.yml |  2 +
 spec/testsuites/validation-smp-only-1.yml          |  2 -
 spec/testsuites/validation-smp-only-2.yml          |  2 -
 26 files changed, 377 insertions(+), 18 deletions(-)

diff --git a/spec/acfg/constraint/scheduler-assignments-macros.yml b/spec/acfg/constraint/scheduler-assignments-macros.yml
index 6099c34..3bd90cc 100644
--- a/spec/acfg/constraint/scheduler-assignments-macros.yml
+++ b/spec/acfg/constraint/scheduler-assignments-macros.yml
@@ -1,6 +1,6 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
 copyrights:
-- Copyright (C) 2020, 2021 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 2020, 2022 embedded brains GmbH (http://www.embedded-brains.de)
 enabled-by: true
 links:
 - role: requirement-refinement
@@ -10,7 +10,18 @@ text: |
   The value of the application configuration option shall be a list of the
   following macros:
 
-  * ``RTEMS_SCHEDULER_ASSIGN( processor_index, attributes )``
+  * ``RTEMS_SCHEDULER_ASSIGN( scheduler_index, attributes )``
 
   * ``RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER``
+
+  The ``scheduler_index`` macro parameter shall be a valid index of the
+  scheduler table defined by the ${../if/scheduler-table-entries:/name}
+  application configuration option.
+
+  The ``attributes`` macro parameter shall be set to exactly one of the
+  following constants:
+
+  * ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY``
+
+  * ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL``
 type: constraint
diff --git a/spec/acfg/constraint/scheduler-table-entry-count.yml b/spec/acfg/constraint/scheduler-table-entry-count.yml
new file mode 100644
index 0000000..5b2b414
--- /dev/null
+++ b/spec/acfg/constraint/scheduler-table-entry-count.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: |
+  Where the system was build with SMP support enabled, the table shall have one
+  or more entries, otherwise it shall have exactly one entry.
+type: constraint
diff --git a/spec/acfg/constraint/scheduler-table-entry-macros.yml b/spec/acfg/constraint/scheduler-table-entry-macros.yml
new file mode 100644
index 0000000..2c38af3
--- /dev/null
+++ b/spec/acfg/constraint/scheduler-table-entry-macros.yml
@@ -0,0 +1,37 @@
+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 a list of the
+  following macros:
+
+  * ``RTEMS_SCHEDULER_TABLE_CBS( name, obj_name )``
+
+  * ``RTEMS_SCHEDULER_TABLE_EDF( name, obj_name )``
+
+  * ``RTEMS_SCHEDULER_TABLE_EDF_SMP( name, obj_name )``
+
+  * ``RTEMS_SCHEDULER_TABLE_PRIORITY_AFFINITY_SMP( name, obj_name )``
+
+  * ``RTEMS_SCHEDULER_TABLE_PRIORITY( name, obj_name )``
+
+  * ``RTEMS_SCHEDULER_TABLE_PRIORITY_SMP( name, obj_name )``
+
+  * ``RTEMS_SCHEDULER_TABLE_SIMPLE( name, obj_name )``
+
+  * ``RTEMS_SCHEDULER_TABLE_SIMPLE_SMP( name, obj_name )``
+
+  * ``RTEMS_SCHEDULER_TABLE_STRONG_APA( name, obj_name )``
+
+  The ``name`` macro parameter shall be the name associated with the scheduler
+  data structures, see ${/doc/if/config-scheduler-clustered:/name}.
+
+  The ``obj_name`` macro parameter shall be the scheduler object name.  It is
+  recommended to define the scheduler object name through
+  ${/rtems/object/if/build-name:/name}.
+type: constraint
diff --git a/spec/acfg/if/header.yml b/spec/acfg/if/header-confdefs.yml
similarity index 100%
rename from spec/acfg/if/header.yml
rename to spec/acfg/if/header-confdefs.yml
diff --git a/spec/acfg/if/header-scheduler.yml b/spec/acfg/if/header-scheduler.yml
new file mode 100644
index 0000000..5337f1e
--- /dev/null
+++ b/spec/acfg/if/header-scheduler.yml
@@ -0,0 +1,17 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: |
+  This header file provides interfaces to define a scheduler application
+  configuration.
+copyrights:
+- Copyright (C) 2022 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/scheduler.h
+prefix: cpukit/include
+type: interface
diff --git a/spec/acfg/if/scheduler-assign-no-scheduler.yml b/spec/acfg/if/scheduler-assign-no-scheduler.yml
new file mode 100644
index 0000000..bf169fd
--- /dev/null
+++ b/spec/acfg/if/scheduler-assign-no-scheduler.yml
@@ -0,0 +1,14 @@
+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-define
+links:
+- role: interface-placement
+  uid: header-scheduler
+- role: interface-ingroup
+  uid: group-schedgeneral
+name: RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER
+references: []
+type: interface
diff --git a/spec/acfg/if/scheduler-assign-processor-mandatory.yml b/spec/acfg/if/scheduler-assign-processor-mandatory.yml
new file mode 100644
index 0000000..3cf53fe
--- /dev/null
+++ b/spec/acfg/if/scheduler-assign-processor-mandatory.yml
@@ -0,0 +1,14 @@
+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-define
+links:
+- role: interface-placement
+  uid: header-scheduler
+- role: interface-ingroup
+  uid: group-schedgeneral
+name: RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY
+references: []
+type: interface
diff --git a/spec/acfg/if/scheduler-assign-processor-optional.yml b/spec/acfg/if/scheduler-assign-processor-optional.yml
new file mode 100644
index 0000000..2bcb89f
--- /dev/null
+++ b/spec/acfg/if/scheduler-assign-processor-optional.yml
@@ -0,0 +1,14 @@
+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-define
+links:
+- role: interface-placement
+  uid: header-scheduler
+- role: interface-ingroup
+  uid: group-schedgeneral
+name: RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL
+references: []
+type: interface
diff --git a/spec/acfg/if/scheduler-assign.yml b/spec/acfg/if/scheduler-assign.yml
new file mode 100644
index 0000000..69fab67
--- /dev/null
+++ b/spec/acfg/if/scheduler-assign.yml
@@ -0,0 +1,14 @@
+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-function
+links:
+- role: interface-placement
+  uid: header-scheduler
+- role: interface-ingroup
+  uid: group-schedgeneral
+name: RTEMS_SCHEDULER_ASSIGN
+references: []
+type: interface
diff --git a/spec/acfg/if/scheduler-assignments.yml b/spec/acfg/if/scheduler-assignments.yml
index 21fc3c5..e46cc17 100644
--- a/spec/acfg/if/scheduler-assignments.yml
+++ b/spec/acfg/if/scheduler-assignments.yml
@@ -20,7 +20,8 @@ links:
   uid: ../constraint/scheduler-assignments-count
 name: CONFIGURE_SCHEDULER_ASSIGNMENTS
 notes: |
-  This configuration option is only evaluated in SMP configurations.
+  Where the system was built with SMP support enabled, this configuration
+  option is evaluated, otherwise it is ignored.
 
   This is an advanced configuration option, see
   ${/doc/if/config-scheduler-clustered:/name}.
diff --git a/spec/acfg/if/scheduler-table-entries.yml b/spec/acfg/if/scheduler-table-entries.yml
new file mode 100644
index 0000000..9a5520b
--- /dev/null
+++ b/spec/acfg/if/scheduler-table-entries.yml
@@ -0,0 +1,29 @@
+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)
+default-value: |
+  The default value of this configuration option is the definition of exactly
+  one table entry for the configured scheduler.
+description: |
+  The value of this configuration option is used to initialize the table of
+  configured schedulers.
+enabled-by: true
+index-entries: []
+interface-type: appl-config-option
+links:
+- role: appl-config-group-member
+  uid: group-schedgeneral
+- role: constraint
+  uid: ../constraint/scheduler-table-entry-macros
+- role: constraint
+  uid: ../constraint/scheduler-table-entry-count
+name: CONFIGURE_SCHEDULER_TABLE_ENTRIES
+notes: |
+  Schedulers registered in the scheduler table by this configuration option are
+  available to the application.  The scheduler table entry index defines the
+  index of the scheduler.
+
+  This is an advanced configuration option, see
+  ${/doc/if/config-scheduler-clustered:/name}.
+type: interface
diff --git a/spec/acfg/req/scheduler-assign-attributes.yml b/spec/acfg/req/scheduler-assign-attributes.yml
new file mode 100644
index 0000000..9bb058f
--- /dev/null
+++ b/spec/acfg/req/scheduler-assign-attributes.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: RTEMS_SMP
+functional-type: function
+links:
+- role: interface-function
+  uid: ../if/scheduler-assign
+- role: requirement-refinement
+  uid: scheduler-assignments
+rationale: null
+references: []
+requirement-type: functional
+text: |
+  While the ${../if/scheduler-assign:/name} macro is used to define an entry of
+  a ${../if/scheduler-assignments:/name} application configuration option
+  value, the attributes defined by the second parameter shall define the
+  scheduler assignment attributes for the processor associated with the entry.
+type: requirement
diff --git a/spec/acfg/req/scheduler-assign-no-scheduler.yml b/spec/acfg/req/scheduler-assign-no-scheduler.yml
new file mode 100644
index 0000000..34da724
--- /dev/null
+++ b/spec/acfg/req/scheduler-assign-no-scheduler.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: RTEMS_SMP
+functional-type: function
+links:
+- role: interface-function
+  uid: ../if/scheduler-assign-no-scheduler
+- role: requirement-refinement
+  uid: scheduler-assignments
+rationale: null
+references: []
+requirement-type: functional
+text: |
+  While the ${../if/scheduler-assign-no-scheduler:/name} define is used to
+  define an entry of a ${../if/scheduler-assignments:/name} application
+  configuration option value, the processor associated with the entry shall not
+  have a scheduler assigned.
+type: requirement
diff --git a/spec/acfg/req/scheduler-assign-processor-mandatory.yml b/spec/acfg/req/scheduler-assign-processor-mandatory.yml
new file mode 100644
index 0000000..decd541
--- /dev/null
+++ b/spec/acfg/req/scheduler-assign-processor-mandatory.yml
@@ -0,0 +1,20 @@
+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: RTEMS_SMP
+functional-type: function
+links:
+- role: interface-function
+  uid: ../if/scheduler-assign-processor-mandatory
+- role: requirement-refinement
+  uid: scheduler-assign-attributes
+rationale: null
+references: []
+requirement-type: functional
+text: |
+  While the ${../if/scheduler-assign-processor-mandatory:/name} define is used
+  as the second parameter in the ${../if/scheduler-assign:/name} macro in an
+  entry of a ${../if/scheduler-assignments:/name} application configuration
+  option value, the presence of the processor associated with the entry in the
+  ${/glossary/target:/term} shall be mandatory.
+type: requirement
diff --git a/spec/acfg/req/scheduler-assign-processor-optional.yml b/spec/acfg/req/scheduler-assign-processor-optional.yml
new file mode 100644
index 0000000..df9c936
--- /dev/null
+++ b/spec/acfg/req/scheduler-assign-processor-optional.yml
@@ -0,0 +1,20 @@
+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: RTEMS_SMP
+functional-type: function
+links:
+- role: interface-function
+  uid: ../if/scheduler-assign-processor-optional
+- role: requirement-refinement
+  uid: scheduler-assign-attributes
+rationale: null
+references: []
+requirement-type: functional
+text: |
+  While the ${../if/scheduler-assign-processor-optional:/name} define is used
+  as the second parameter in the ${../if/scheduler-assign:/name} macro in an
+  entry of a ${../if/scheduler-assignments:/name} application configuration
+  option value, the presence of the processor associated with the entry in the
+  ${/glossary/target:/term} shall be optional.
+type: requirement
diff --git a/spec/acfg/req/scheduler-assign-scheduler.yml b/spec/acfg/req/scheduler-assign-scheduler.yml
new file mode 100644
index 0000000..ba3d75e
--- /dev/null
+++ b/spec/acfg/req/scheduler-assign-scheduler.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: RTEMS_SMP
+functional-type: function
+links:
+- role: interface-function
+  uid: ../if/scheduler-assign
+- role: requirement-refinement
+  uid: scheduler-assignments
+rationale: null
+references: []
+requirement-type: functional
+text: |
+  While the ${../if/scheduler-assign:/name} macro is used to define an entry of
+  a ${../if/scheduler-assignments:/name} application configuration option
+  value, the scheduler associated with the first parameter shall be assigned to
+  the processor associated with the entry.
+type: requirement
diff --git a/spec/acfg/req/scheduler-assignments.yml b/spec/acfg/req/scheduler-assignments.yml
index 65da39c..967f645 100644
--- a/spec/acfg/req/scheduler-assignments.yml
+++ b/spec/acfg/req/scheduler-assignments.yml
@@ -1,7 +1,7 @@
 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
+enabled-by: RTEMS_SMP
 functional-type: function
 links:
 - role: interface-function
diff --git a/spec/acfg/req/scheduler-table-entries.yml b/spec/acfg/req/scheduler-table-entries.yml
new file mode 100644
index 0000000..1aee764
--- /dev/null
+++ b/spec/acfg/req/scheduler-table-entries.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/scheduler-table-entries
+- role: requirement-refinement
+  uid: group
+rationale: null
+references: []
+requirement-type: functional
+text: |
+  The application configuration option shall define the entries of the table of
+  configured schedulers.
+type: requirement
diff --git a/spec/acfg/val/acfg.yml b/spec/acfg/val/acfg.yml
index 7419d4b..a962424 100644
--- a/spec/acfg/val/acfg.yml
+++ b/spec/acfg/val/acfg.yml
@@ -7,13 +7,14 @@ test-actions:
 - action-brief: |
     Check the effect of application configuration options.  In addition, this
     test case validates the effect of ${../if/init:/name}.  The test case
-    includes ${../if/header:/path} without defining ${../if/init:/name} before
-    the include.  If this header would define configuration data structures,
-    then linking the test suite executable would result in multiple definition
-    errors.  This header is included in the test suite runner translation unit
-    while ${../if/init:/name} is defined before the include.  If this would not
-    result in the definition of application defined configuration data
-    structures, then the checks below for non-default settings would fail.
+    includes ${../if/header-confdefs:/path} without defining
+    ${../if/init:/name} before the include.  If this header would define
+    configuration data structures, then linking the test suite executable would
+    result in multiple definition errors.  This header is included in the test
+    suite runner translation unit while ${../if/init:/name} is defined before
+    the include.  If this would not result in the definition of application
+    defined configuration data structures, then the checks below for
+    non-default settings would fail.
   action-code: |
     rtems_status_code sc;
     rtems_id          id;
diff --git a/spec/rtems/scheduler/val/smp-only.yml b/spec/rtems/scheduler/val/smp-only.yml
index de174b2..6465127 100644
--- a/spec/rtems/scheduler/val/smp-only.yml
+++ b/spec/rtems/scheduler/val/smp-only.yml
@@ -63,6 +63,82 @@ test-actions:
   links:
   - role: validation
     uid: ../req/get-processor-maximum-smp-only
+- action-brief: |
+    Call ${../if/ident:/name} for each configured scheduler.
+  action-code: |
+    rtems_status_code sc;
+    rtems_id          id[ 4 ];
+    rtems_id          id_by_cpu;
+
+    sc = rtems_scheduler_ident( TEST_SCHEDULER_A_NAME, &id[ 0 ]);
+    T_step_rsc_success( ${step}, sc );
+
+    sc = rtems_scheduler_ident( TEST_SCHEDULER_B_NAME, &id[ 1 ]);
+    T_step_rsc_success( ${step}, sc );
+
+    sc = rtems_scheduler_ident( TEST_SCHEDULER_C_NAME, &id[ 2 ]);
+    T_step_rsc_success( ${step}, sc );
+
+    sc = rtems_scheduler_ident( TEST_SCHEDULER_D_NAME, &id[ 3 ]);
+    T_step_rsc_success( ${step}, sc );
+  checks:
+  - brief: |
+      Check that the object index of scheduler A has the expected value.
+    code: |
+      T_step_eq_u16( ${step}, rtems_object_id_get_index( id[ 0 ] ), 1 );
+    links: []
+  - brief: |
+      Check that the object index of scheduler B has the expected value.
+    code: |
+      T_step_eq_u16( ${step}, rtems_object_id_get_index( id[ 1 ] ), 2 );
+    links: []
+  - brief: |
+      Check that the object index of scheduler C has the expected value.
+    code: |
+      T_step_eq_u16( ${step}, rtems_object_id_get_index( id[ 2 ] ), 3 );
+    links: []
+  - brief: |
+      Check that the object index of scheduler D has the expected value.
+    code: |
+      T_step_eq_u16( ${step}, rtems_object_id_get_index( id[ 3 ] ), 4 );
+    links: []
+  - brief: |
+      Check that processor 0 has scheduler A assigned.
+    code: |
+      sc = rtems_scheduler_ident_by_processor( 0, &id_by_cpu );
+      T_step_rsc_success( ${step}, sc );
+      T_step_eq_u32( ${step}, id[ 0 ], id_by_cpu );
+    links:
+    - role: validation
+      uid: /acfg/req/scheduler-assign-scheduler
+  - brief: |
+      Check that processor 1 has scheduler B assigned.
+    code: |
+      sc = rtems_scheduler_ident_by_processor( 1, &id_by_cpu );
+      T_step_rsc_success( ${step}, sc );
+      T_step_eq_u32( ${step}, id[ 1 ], id_by_cpu );
+    links:
+    - role: validation
+      uid: /acfg/req/scheduler-assign-scheduler
+  - brief: |
+      Check that processor 2 has scheduler C assigned if it is present.
+    code: |
+      sc = rtems_scheduler_ident_by_processor( 2, &id_by_cpu );
+      T_step_true( ${step}, sc == RTEMS_INVALID_NAME || id[ 2 ] == id_by_cpu );
+    links:
+    - role: validation
+      uid: /acfg/req/scheduler-assign-scheduler
+  - brief: |
+      Check that processor 3 has scheduler C assigned if it is present.
+    code: |
+      sc = rtems_scheduler_ident_by_processor( 3, &id_by_cpu );
+      T_step_true( ${step}, sc == RTEMS_INVALID_NAME || id[ 2 ] == id_by_cpu );
+    links:
+    - role: validation
+      uid: /acfg/req/scheduler-assign-scheduler
+  links:
+  - role: validation
+    uid: /acfg/req/scheduler-table-entries
 test-brief: |
   This test case collection provides validation test cases for SMP-only
   requirements of the ${../if/group:/name}.
@@ -73,6 +149,7 @@ test-header: null
 test-includes:
 - rtems.h
 test-local-includes:
+- ts-config.h
 - tx-support.h
 test-setup: null
 test-stop: null
diff --git a/spec/score/smp/val/fatal-boot-processor-not-assigned-to-scheduler.yml b/spec/score/smp/val/fatal-boot-processor-not-assigned-to-scheduler.yml
index 1351261..88cde50 100644
--- a/spec/score/smp/val/fatal-boot-processor-not-assigned-to-scheduler.yml
+++ b/spec/score/smp/val/fatal-boot-processor-not-assigned-to-scheduler.yml
@@ -28,7 +28,9 @@ test-actions:
     links:
     - role: validation
       uid: ../req/fatal-boot-processor-not-assigned-to-scheduler
-  links: []
+  links:
+  - role: validation
+    uid: /acfg/req/scheduler-assign-no-scheduler
 test-brief: |
   Tests a fatal error.
 test-context: []
diff --git a/spec/score/smp/val/fatal-mandatory-processor-not-present.yml b/spec/score/smp/val/fatal-mandatory-processor-not-present.yml
index 15882f9..405d0a6 100644
--- a/spec/score/smp/val/fatal-mandatory-processor-not-present.yml
+++ b/spec/score/smp/val/fatal-mandatory-processor-not-present.yml
@@ -28,7 +28,9 @@ test-actions:
     links:
     - role: validation
       uid: ../req/fatal-mandatory-processor-not-present
-  links: []
+  links:
+  - role: validation
+    uid: /acfg/req/scheduler-assign-processor-mandatory
 test-brief: |
   Tests a fatal error.
 test-context: []
diff --git a/spec/score/smp/val/fatal-start-of-mandatory-processor-failed.yml b/spec/score/smp/val/fatal-start-of-mandatory-processor-failed.yml
index 91a2df3..7d91dfd 100644
--- a/spec/score/smp/val/fatal-start-of-mandatory-processor-failed.yml
+++ b/spec/score/smp/val/fatal-start-of-mandatory-processor-failed.yml
@@ -28,7 +28,9 @@ test-actions:
     links:
     - role: validation
       uid: ../req/fatal-start-of-mandatory-processor-failed
-  links: []
+  links:
+  - role: validation
+    uid: /acfg/req/scheduler-assign-processor-mandatory
 test-brief: |
   Tests a fatal error.
 test-context: []
diff --git a/spec/score/smp/val/start-of-optional-processor-failed.yml b/spec/score/smp/val/start-of-optional-processor-failed.yml
index fad48b9..a34d287 100644
--- a/spec/score/smp/val/start-of-optional-processor-failed.yml
+++ b/spec/score/smp/val/start-of-optional-processor-failed.yml
@@ -34,6 +34,8 @@ test-actions:
   links:
   - role: validation
     uid: ../req/start-of-optional-processor-failed-continue
+  - role: validation
+    uid: /acfg/req/scheduler-assign-processor-optional
 test-brief: |
   Tests the state of an optional processor which failed to start.
 test-context: []
diff --git a/spec/testsuites/validation-smp-only-1.yml b/spec/testsuites/validation-smp-only-1.yml
index fa6e127..4dab7dc 100644
--- a/spec/testsuites/validation-smp-only-1.yml
+++ b/spec/testsuites/validation-smp-only-1.yml
@@ -5,8 +5,6 @@ enabled-by: RTEMS_SMP
 links:
 - role: requirement-refinement
   uid: /req/test-suites
-- role: validation
-  uid: /acfg/req/scheduler-assignments
 test-brief: |
   This SMP-only test suite validates the clustered scheduler configuration
   through an application configuration with a processor maximum of two,
diff --git a/spec/testsuites/validation-smp-only-2.yml b/spec/testsuites/validation-smp-only-2.yml
index 945e4d0..4336d23 100644
--- a/spec/testsuites/validation-smp-only-2.yml
+++ b/spec/testsuites/validation-smp-only-2.yml
@@ -5,8 +5,6 @@ enabled-by: RTEMS_SMP
 links:
 - role: requirement-refinement
   uid: /req/test-suites
-- role: validation
-  uid: /acfg/req/scheduler-assignments
 test-brief: |
   This SMP-only test suite validates the clustered scheduler configuration
   through an application configuration with a processor maximum of two.  The



More information about the vc mailing list