[rtems-central commit] spec: Add memory benchmarks

Sebastian Huber sebh at rtems.org
Wed Mar 10 09:02:05 UTC 2021


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

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Sat Mar  6 13:52:29 2021 +0100

spec: Add memory benchmarks

---

 config.yml                                  |  2 +
 spec-glossary/glossary/feature.yml          | 13 +++++
 spec/dev/clock/req/mem-driver.yml           | 16 ++++++
 spec/dev/clock/val/mem-driver.yml           | 53 ++++++++++++++++++
 spec/req/mem-benchmark.yml                  | 15 ++++++
 spec/rtems/barrier/req/mem-wait-rel-del.yml | 17 ++++++
 spec/rtems/barrier/req/mem-wait-rel.yml     | 17 ++++++
 spec/rtems/barrier/val/mem-wait-rel-del.yml | 59 ++++++++++++++++++++
 spec/rtems/barrier/val/mem-wait-rel.yml     | 57 ++++++++++++++++++++
 spec/rtems/event/req/mem-snd-rcv.yml        | 16 ++++++
 spec/rtems/event/val/mem-snd-rcv.yml        | 53 ++++++++++++++++++
 spec/rtems/fatal/req/mem-fatal.yml          | 15 ++++++
 spec/rtems/fatal/val/mem-fatal.yml          | 52 ++++++++++++++++++
 spec/rtems/part/req/mem-get-ret-del.yml     | 17 ++++++
 spec/rtems/part/req/mem-get-ret.yml         | 17 ++++++
 spec/rtems/part/val/mem-get-ret-del.yml     | 59 ++++++++++++++++++++
 spec/rtems/part/val/mem-get-ret.yml         | 58 ++++++++++++++++++++
 spec/rtems/ratemon/req/mem-period-del.yml   | 17 ++++++
 spec/rtems/ratemon/req/mem-period.yml       | 16 ++++++
 spec/rtems/ratemon/val/mem-period-del.yml   | 57 ++++++++++++++++++++
 spec/rtems/ratemon/val/mem-period.yml       | 56 +++++++++++++++++++
 spec/rtems/req/mem-basic.yml                | 15 ++++++
 spec/rtems/req/mem-smp-1.yml                | 17 ++++++
 spec/rtems/req/mem-smp-global-2.yml         | 17 ++++++
 spec/rtems/req/mem-smp-global-4.yml         | 17 ++++++
 spec/rtems/req/mem-smp-part-2.yml           | 17 ++++++
 spec/rtems/req/mem-smp-part-4.yml           | 17 ++++++
 spec/rtems/sem/req/mem-obt-rel-del.yml      | 17 ++++++
 spec/rtems/sem/req/mem-obt-rel.yml          | 17 ++++++
 spec/rtems/sem/val/mem-obt-rel-del.yml      | 59 ++++++++++++++++++++
 spec/rtems/sem/val/mem-obt-rel.yml          | 57 ++++++++++++++++++++
 spec/rtems/signal/req/mem-catch-snd.yml     | 16 ++++++
 spec/rtems/signal/val/mem-catch-snd.yml     | 53 ++++++++++++++++++
 spec/rtems/task/req/mem-del.yml             | 15 ++++++
 spec/rtems/task/req/mem-exit.yml            | 15 ++++++
 spec/rtems/task/req/mem-restart.yml         | 15 ++++++
 spec/rtems/task/req/mem-sus-res.yml         | 16 ++++++
 spec/rtems/task/val/mem-del.yml             | 53 ++++++++++++++++++
 spec/rtems/task/val/mem-exit.yml            | 53 ++++++++++++++++++
 spec/rtems/task/val/mem-restart.yml         | 53 ++++++++++++++++++
 spec/rtems/task/val/mem-sus-res.yml         | 54 +++++++++++++++++++
 spec/rtems/val/mem-basic.yml                | 54 +++++++++++++++++++
 spec/rtems/val/mem-smp-1.yml                | 59 ++++++++++++++++++++
 spec/rtems/val/mem-smp-global-2.yml         | 59 ++++++++++++++++++++
 spec/rtems/val/mem-smp-global-4.yml         | 59 ++++++++++++++++++++
 spec/rtems/val/mem-smp-part-2.yml           | 76 ++++++++++++++++++++++++++
 spec/rtems/val/mem-smp-part-4.yml           | 84 +++++++++++++++++++++++++++++
 47 files changed, 1666 insertions(+)

diff --git a/config.yml b/config.yml
index f15a665..c2bfd1e 100644
--- a/config.yml
+++ b/config.yml
@@ -7,6 +7,7 @@ build:
     RTEMS_QUAL = True
     RTEMS_QUAL_ONLY = True
     BUILD_TESTS = False
+    BUILD_MEMBENCH = True
     BUILD_VALIDATIONTESTS = True
   doxyfile-template: templates/Doxyfile
   enabled:
@@ -44,6 +45,7 @@ build:
   uids:
   - /build/cpukit/librtemscpu
   - /build/cpukit/librtemstest
+  - /build/testsuites/membench/grp
   - /build/testsuites/validation/grp
   workspace-directory: workspace/rtems
 spec:
diff --git a/spec-glossary/glossary/feature.yml b/spec-glossary/glossary/feature.yml
new file mode 100644
index 0000000..3323206
--- /dev/null
+++ b/spec-glossary/glossary/feature.yml
@@ -0,0 +1,13 @@
+SPDX-License-Identifier: CC-BY-SA-4.0
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+glossary-type: term
+links:
+- role: glossary-member
+  uid: ../glossary-general
+term: feature
+text: |
+  A feature is a collection of interfaces together with their implementation
+  provided by the system.
+type: glossary
diff --git a/spec/dev/clock/req/mem-driver.yml b/spec/dev/clock/req/mem-driver.yml
new file mode 100644
index 0000000..f185da4
--- /dev/null
+++ b/spec/dev/clock/req/mem-driver.yml
@@ -0,0 +1,16 @@
+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: /rtems/req/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of "a basic application configuration with the clock driver enabled
+  (${/acfg/if/appl-needs-clock-driver:/name}).
+type: requirement
diff --git a/spec/dev/clock/val/mem-driver.yml b/spec/dev/clock/val/mem-driver.yml
new file mode 100644
index 0000000..a125d1a
--- /dev/null
+++ b/spec/dev/clock/val/mem-driver.yml
@@ -0,0 +1,53 @@
+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: validation
+  uid: ../req/mem-driver
+test-brief: |
+  This static memory usage benchmark program facilitates "a basic application
+  configuration with the clock driver enabled
+  (${/acfg/if/appl-needs-clock-driver:/name}).
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    /* Nothing to do */
+  }
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+
+  #define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 0
+
+  #define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
+
+  #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
+
+  #define CONFIGURE_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-clock-driver.c
+type: test-suite
diff --git a/spec/req/mem-benchmark.yml b/spec/req/mem-benchmark.yml
new file mode 100644
index 0000000..f38c400
--- /dev/null
+++ b/spec/req/mem-benchmark.yml
@@ -0,0 +1,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
+links:
+- role: requirement-refinement
+  uid: root
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide benchmark programs to show the static memory usage
+  of ${/glossary/feature:/plural}.
+type: requirement
diff --git a/spec/rtems/barrier/req/mem-wait-rel-del.yml b/spec/rtems/barrier/req/mem-wait-rel-del.yml
new file mode 100644
index 0000000..4db9861
--- /dev/null
+++ b/spec/rtems/barrier/req/mem-wait-rel-del.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/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with ${/acfg/if/max-barriers:/name}
+  defined to one and calls to ${../if/create:/name}, ${../if/wait:/name},
+  ${../if/release:/name}, and ${../if/delete:/name}.
+type: requirement
diff --git a/spec/rtems/barrier/req/mem-wait-rel.yml b/spec/rtems/barrier/req/mem-wait-rel.yml
new file mode 100644
index 0000000..89fdf5b
--- /dev/null
+++ b/spec/rtems/barrier/req/mem-wait-rel.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/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with ${/acfg/if/max-barriers:/name}
+  defined to one and calls to ${../if/create:/name}, ${../if/wait:/name}, and
+  ${../if/release:/name}.
+type: requirement
diff --git a/spec/rtems/barrier/val/mem-wait-rel-del.yml b/spec/rtems/barrier/val/mem-wait-rel-del.yml
new file mode 100644
index 0000000..9adcc49
--- /dev/null
+++ b/spec/rtems/barrier/val/mem-wait-rel-del.yml
@@ -0,0 +1,59 @@
+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: validation
+  uid: ../req/mem-wait-rel-del
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with ${/acfg/if/max-barriers:/name} defined to one and calls to
+  ${../if/create:/name}, ${../if/wait:/name}, ${../if/release:/name}, and
+  ${../if/delete:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    (void) rtems_barrier_create( 0, 0, 0, NULL );
+    (void) rtems_barrier_wait( 0, 0 );
+    (void) rtems_barrier_release( 0, NULL );
+    (void) rtems_barrier_delete( 0 );
+  }
+
+  #define CONFIGURE_MAXIMUM_BARRIERS 1
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-barrier-wait-rel-del.c
+type: test-suite
diff --git a/spec/rtems/barrier/val/mem-wait-rel.yml b/spec/rtems/barrier/val/mem-wait-rel.yml
new file mode 100644
index 0000000..f7c54c1
--- /dev/null
+++ b/spec/rtems/barrier/val/mem-wait-rel.yml
@@ -0,0 +1,57 @@
+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: validation
+  uid: ../req/mem-wait-rel
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with ${/acfg/if/max-barriers:/name} defined to one and calls to
+  ${../if/create:/name}, ${../if/wait:/name}, and ${../if/release:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    (void) rtems_barrier_create( 0, 0, 0, NULL );
+    (void) rtems_barrier_wait( 0, 0 );
+    (void) rtems_barrier_release( 0, NULL );
+  }
+
+  #define CONFIGURE_MAXIMUM_BARRIERS 1
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-barrier-wait-rel.c
+type: test-suite
diff --git a/spec/rtems/event/req/mem-snd-rcv.yml b/spec/rtems/event/req/mem-snd-rcv.yml
new file mode 100644
index 0000000..4693933
--- /dev/null
+++ b/spec/rtems/event/req/mem-snd-rcv.yml
@@ -0,0 +1,16 @@
+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/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with calls to ${../if/send:/name} and
+  ${../if/receive:/name}.
+type: requirement
diff --git a/spec/rtems/event/val/mem-snd-rcv.yml b/spec/rtems/event/val/mem-snd-rcv.yml
new file mode 100644
index 0000000..6769000
--- /dev/null
+++ b/spec/rtems/event/val/mem-snd-rcv.yml
@@ -0,0 +1,53 @@
+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: validation
+  uid: ../req/mem-snd-rcv
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with calls to ${../if/send:/name} and ${../if/receive:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    (void) rtems_event_send( 0, 0 );
+    (void) rtems_event_receive( 0, 0, 0, NULL );
+  }
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-event-snd-rcv.c
+type: test-suite
diff --git a/spec/rtems/fatal/req/mem-fatal.yml b/spec/rtems/fatal/req/mem-fatal.yml
new file mode 100644
index 0000000..3dca089
--- /dev/null
+++ b/spec/rtems/fatal/req/mem-fatal.yml
@@ -0,0 +1,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
+links:
+- role: requirement-refinement
+  uid: ../../req/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with a call to ${../if/fatal:/name}.
+type: requirement
diff --git a/spec/rtems/fatal/val/mem-fatal.yml b/spec/rtems/fatal/val/mem-fatal.yml
new file mode 100644
index 0000000..44be873
--- /dev/null
+++ b/spec/rtems/fatal/val/mem-fatal.yml
@@ -0,0 +1,52 @@
+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: validation
+  uid: ../req/mem-fatal
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with a call to ${../if/fatal:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    rtems_fatal( 0, 0 );
+  }
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-fatal-fatal.c
+type: test-suite
diff --git a/spec/rtems/part/req/mem-get-ret-del.yml b/spec/rtems/part/req/mem-get-ret-del.yml
new file mode 100644
index 0000000..7395e06
--- /dev/null
+++ b/spec/rtems/part/req/mem-get-ret-del.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/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with ${/acfg/if/max-partitions:/name}
+  defined to one and calls to ${../if/create:/name}, ${../if/get-buffer:/name},
+  ${../if/return-buffer:/name}, and ${../if/delete:/name}.
+type: requirement
diff --git a/spec/rtems/part/req/mem-get-ret.yml b/spec/rtems/part/req/mem-get-ret.yml
new file mode 100644
index 0000000..f84d951
--- /dev/null
+++ b/spec/rtems/part/req/mem-get-ret.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/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with ${/acfg/if/max-partitions:/name}
+  defined to one and calls to ${../if/create:/name}, ${../if/get-buffer:/name},
+  and ${../if/return-buffer:/name}.
+type: requirement
diff --git a/spec/rtems/part/val/mem-get-ret-del.yml b/spec/rtems/part/val/mem-get-ret-del.yml
new file mode 100644
index 0000000..0de1790
--- /dev/null
+++ b/spec/rtems/part/val/mem-get-ret-del.yml
@@ -0,0 +1,59 @@
+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: validation
+  uid: ../req/mem-get-ret-del
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with ${/acfg/if/max-partitions:/name} defined to one and calls
+  to ${../if/create:/name}, ${../if/get-buffer:/name},
+  ${../if/return-buffer:/name}, and ${../if/delete:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    (void) rtems_partition_create( 0, NULL, 0, 0, 0, NULL );
+    (void) rtems_partition_get_buffer( 0, NULL );
+    (void) rtems_partition_return_buffer( 0, NULL );
+    (void) rtems_partition_delete( 0 );
+  }
+
+  #define CONFIGURE_MAXIMUM_PARTITIONS 1
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-part-get-ret-del.c
+type: test-suite
diff --git a/spec/rtems/part/val/mem-get-ret.yml b/spec/rtems/part/val/mem-get-ret.yml
new file mode 100644
index 0000000..d10bbdf
--- /dev/null
+++ b/spec/rtems/part/val/mem-get-ret.yml
@@ -0,0 +1,58 @@
+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: validation
+  uid: ../req/mem-get-ret
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with ${/acfg/if/max-partitions:/name} defined to one and calls
+  to ${../if/create:/name}, ${../if/get-buffer:/name}, and
+  ${../if/return-buffer:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    (void) rtems_partition_create( 0, NULL, 0, 0, 0, NULL );
+    (void) rtems_partition_get_buffer( 0, NULL );
+    (void) rtems_partition_return_buffer( 0, NULL );
+  }
+
+  #define CONFIGURE_MAXIMUM_PARTITIONS 1
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-part-get-ret.c
+type: test-suite
diff --git a/spec/rtems/ratemon/req/mem-period-del.yml b/spec/rtems/ratemon/req/mem-period-del.yml
new file mode 100644
index 0000000..5fd8c84
--- /dev/null
+++ b/spec/rtems/ratemon/req/mem-period-del.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/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with ${/acfg/if/max-periods:/name}
+  defined to one and calls to ${../if/create:/name}, ${../if/period:/name}, and
+  ${../if/delete:/name}.
+type: requirement
diff --git a/spec/rtems/ratemon/req/mem-period.yml b/spec/rtems/ratemon/req/mem-period.yml
new file mode 100644
index 0000000..5ea9f54
--- /dev/null
+++ b/spec/rtems/ratemon/req/mem-period.yml
@@ -0,0 +1,16 @@
+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/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with ${/acfg/if/max-periods:/name}
+  defined to one and calls to ${../if/create:/name} and ${../if/period:/name}.
+type: requirement
diff --git a/spec/rtems/ratemon/val/mem-period-del.yml b/spec/rtems/ratemon/val/mem-period-del.yml
new file mode 100644
index 0000000..18348cd
--- /dev/null
+++ b/spec/rtems/ratemon/val/mem-period-del.yml
@@ -0,0 +1,57 @@
+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: validation
+  uid: ../req/mem-period-del
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with ${/acfg/if/max-periods:/name} defined to one and calls to
+  ${../if/create:/name}, ${../if/period:/name}, and ${../if/delete:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    (void) rtems_rate_monotonic_create( 0, NULL );
+    (void) rtems_rate_monotonic_period( 0, 0 );
+    (void) rtems_rate_monotonic_delete( 0 );
+  }
+
+  #define CONFIGURE_MAXIMUM_PERIODS 1
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-ratemon-period-del.c
+type: test-suite
diff --git a/spec/rtems/ratemon/val/mem-period.yml b/spec/rtems/ratemon/val/mem-period.yml
new file mode 100644
index 0000000..0e960f6
--- /dev/null
+++ b/spec/rtems/ratemon/val/mem-period.yml
@@ -0,0 +1,56 @@
+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: validation
+  uid: ../req/mem-period
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with ${/acfg/if/max-periods:/name} defined to one and calls to
+  ${../if/create:/name} and ${../if/period:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    (void) rtems_rate_monotonic_create( 0, NULL );
+    (void) rtems_rate_monotonic_period( 0, 0 );
+  }
+
+  #define CONFIGURE_MAXIMUM_PERIODS 1
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-ratemon-period.c
+type: test-suite
diff --git a/spec/rtems/req/mem-basic.yml b/spec/rtems/req/mem-basic.yml
new file mode 100644
index 0000000..0c2a13a
--- /dev/null
+++ b/spec/rtems/req/mem-basic.yml
@@ -0,0 +1,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
+links:
+- role: requirement-refinement
+  uid: /req/mem-benchmark
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration.
+type: requirement
diff --git a/spec/rtems/req/mem-smp-1.yml b/spec/rtems/req/mem-smp-1.yml
new file mode 100644
index 0000000..2a82a9e
--- /dev/null
+++ b/spec/rtems/req/mem-smp-1.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: mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with ${/acfg/if/max-processors:/name}
+  defined to one using the SMP EDF scheduler
+  (${/acfg/if/scheduler-edf-smp:/name}).
+type: requirement
diff --git a/spec/rtems/req/mem-smp-global-2.yml b/spec/rtems/req/mem-smp-global-2.yml
new file mode 100644
index 0000000..3f56e57
--- /dev/null
+++ b/spec/rtems/req/mem-smp-global-2.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: mem-smp-1
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with ${/acfg/if/max-processors:/name}
+  defined to two using the global SMP EDF scheduler
+  (${/acfg/if/scheduler-edf-smp:/name}).
+type: requirement
diff --git a/spec/rtems/req/mem-smp-global-4.yml b/spec/rtems/req/mem-smp-global-4.yml
new file mode 100644
index 0000000..d078da1
--- /dev/null
+++ b/spec/rtems/req/mem-smp-global-4.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: mem-smp-1
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with ${/acfg/if/max-processors:/name}
+  defined to four using the global SMP EDF scheduler
+  (${/acfg/if/scheduler-edf-smp:/name}).
+type: requirement
diff --git a/spec/rtems/req/mem-smp-part-2.yml b/spec/rtems/req/mem-smp-part-2.yml
new file mode 100644
index 0000000..9554807
--- /dev/null
+++ b/spec/rtems/req/mem-smp-part-2.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: mem-smp-1
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with ${/acfg/if/max-processors:/name}
+  defined to two using one SMP EDF scheduler for each configured processor
+  (${/acfg/if/scheduler-edf-smp:/name}).
+type: requirement
diff --git a/spec/rtems/req/mem-smp-part-4.yml b/spec/rtems/req/mem-smp-part-4.yml
new file mode 100644
index 0000000..ab7fe30
--- /dev/null
+++ b/spec/rtems/req/mem-smp-part-4.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: mem-smp-1
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with ${/acfg/if/max-processors:/name}
+  defined to four using one SMP EDF scheduler for each configured processor
+  (${/acfg/if/scheduler-edf-smp:/name}).
+type: requirement
diff --git a/spec/rtems/sem/req/mem-obt-rel-del.yml b/spec/rtems/sem/req/mem-obt-rel-del.yml
new file mode 100644
index 0000000..e997aff
--- /dev/null
+++ b/spec/rtems/sem/req/mem-obt-rel-del.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/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with ${/acfg/if/max-semaphores:/name}
+  defined to one and calls to ${../if/create:/name}, ${../if/obtain:/name},
+  ${../if/release:/name}, and ${../if/delete:/name}.
+type: requirement
diff --git a/spec/rtems/sem/req/mem-obt-rel.yml b/spec/rtems/sem/req/mem-obt-rel.yml
new file mode 100644
index 0000000..1224b32
--- /dev/null
+++ b/spec/rtems/sem/req/mem-obt-rel.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/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with ${/acfg/if/max-semaphores:/name}
+  defined to one and calls to ${../if/create:/name}, ${../if/obtain:/name}, and
+  ${../if/release:/name}.
+type: requirement
diff --git a/spec/rtems/sem/val/mem-obt-rel-del.yml b/spec/rtems/sem/val/mem-obt-rel-del.yml
new file mode 100644
index 0000000..3efc7db
--- /dev/null
+++ b/spec/rtems/sem/val/mem-obt-rel-del.yml
@@ -0,0 +1,59 @@
+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: validation
+  uid: ../req/mem-obt-rel-del
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with ${/acfg/if/max-semaphores:/name} defined to one and calls
+  to ${../if/create:/name}, ${../if/obtain:/name}, ${../if/release:/name}, and
+  ${../if/delete:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    (void) rtems_semaphore_create( 0, 0, 0, 0, NULL );
+    (void) rtems_semaphore_obtain( 0, 0, 0 );
+    (void) rtems_semaphore_release( 0 );
+    (void) rtems_semaphore_delete( 0 );
+  }
+
+  #define CONFIGURE_MAXIMUM_SEMAPHORES 1
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-sem-obt-rel-del.c
+type: test-suite
diff --git a/spec/rtems/sem/val/mem-obt-rel.yml b/spec/rtems/sem/val/mem-obt-rel.yml
new file mode 100644
index 0000000..96ec473
--- /dev/null
+++ b/spec/rtems/sem/val/mem-obt-rel.yml
@@ -0,0 +1,57 @@
+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: validation
+  uid: ../req/mem-obt-rel
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with ${/acfg/if/max-semaphores:/name} defined to one and calls
+  to ${../if/create:/name}, ${../if/obtain:/name}, and ${../if/release:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    (void) rtems_semaphore_create( 0, 0, 0, 0, NULL );
+    (void) rtems_semaphore_obtain( 0, 0, 0 );
+    (void) rtems_semaphore_release( 0 );
+  }
+
+  #define CONFIGURE_MAXIMUM_SEMAPHORES 1
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-sem-obt-rel.c
+type: test-suite
diff --git a/spec/rtems/signal/req/mem-catch-snd.yml b/spec/rtems/signal/req/mem-catch-snd.yml
new file mode 100644
index 0000000..fea454a
--- /dev/null
+++ b/spec/rtems/signal/req/mem-catch-snd.yml
@@ -0,0 +1,16 @@
+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/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with calls to ${../if/catch:/name} and
+  ${../if/send:/name}.
+type: requirement
diff --git a/spec/rtems/signal/val/mem-catch-snd.yml b/spec/rtems/signal/val/mem-catch-snd.yml
new file mode 100644
index 0000000..de3beaa
--- /dev/null
+++ b/spec/rtems/signal/val/mem-catch-snd.yml
@@ -0,0 +1,53 @@
+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: validation
+  uid: ../req/mem-catch-snd
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with calls to ${../if/catch:/name} and ${../if/send:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    (void) rtems_signal_catch( NULL, 0 );
+    (void) rtems_signal_send( 0, 0 );
+  }
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-signal-catch-snd.c
+type: test-suite
diff --git a/spec/rtems/task/req/mem-del.yml b/spec/rtems/task/req/mem-del.yml
new file mode 100644
index 0000000..f09c2bc
--- /dev/null
+++ b/spec/rtems/task/req/mem-del.yml
@@ -0,0 +1,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
+links:
+- role: requirement-refinement
+  uid: ../../req/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with a call to ${../if/delete:/name}.
+type: requirement
diff --git a/spec/rtems/task/req/mem-exit.yml b/spec/rtems/task/req/mem-exit.yml
new file mode 100644
index 0000000..669c8db
--- /dev/null
+++ b/spec/rtems/task/req/mem-exit.yml
@@ -0,0 +1,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
+links:
+- role: requirement-refinement
+  uid: ../../req/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with a call to ${../if/exit:/name}.
+type: requirement
diff --git a/spec/rtems/task/req/mem-restart.yml b/spec/rtems/task/req/mem-restart.yml
new file mode 100644
index 0000000..42c906c
--- /dev/null
+++ b/spec/rtems/task/req/mem-restart.yml
@@ -0,0 +1,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
+links:
+- role: requirement-refinement
+  uid: ../../req/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with a call to ${../if/restart:/name}.
+type: requirement
diff --git a/spec/rtems/task/req/mem-sus-res.yml b/spec/rtems/task/req/mem-sus-res.yml
new file mode 100644
index 0000000..03f3474
--- /dev/null
+++ b/spec/rtems/task/req/mem-sus-res.yml
@@ -0,0 +1,16 @@
+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/mem-basic
+non-functional-type: quality
+rationale: null
+references: []
+requirement-type: non-functional
+text: |
+  The system shall provide a benchmark program to show the static memory usage
+  of a basic application configuration with calls to ${../if/suspend:/name} and
+  ${../if/resume:/name}.
+type: requirement
diff --git a/spec/rtems/task/val/mem-del.yml b/spec/rtems/task/val/mem-del.yml
new file mode 100644
index 0000000..b41a7f2
--- /dev/null
+++ b/spec/rtems/task/val/mem-del.yml
@@ -0,0 +1,53 @@
+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: validation
+  uid: ../req/mem-del
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with a call to ${../if/delete:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    (void) rtems_task_delete( 0 );
+    
+  }
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-task-del.c
+type: test-suite
diff --git a/spec/rtems/task/val/mem-exit.yml b/spec/rtems/task/val/mem-exit.yml
new file mode 100644
index 0000000..b325e78
--- /dev/null
+++ b/spec/rtems/task/val/mem-exit.yml
@@ -0,0 +1,53 @@
+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: validation
+  uid: ../req/mem-exit
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with a call to ${../if/exit:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    rtems_task_exit();
+    
+  }
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-task-exit.c
+type: test-suite
diff --git a/spec/rtems/task/val/mem-restart.yml b/spec/rtems/task/val/mem-restart.yml
new file mode 100644
index 0000000..bc5caf5
--- /dev/null
+++ b/spec/rtems/task/val/mem-restart.yml
@@ -0,0 +1,53 @@
+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: validation
+  uid: ../req/mem-restart
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with a call to ${../if/restart:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    (void) rtems_task_restart( 0, 0 );
+    
+  }
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-task-restart.c
+type: test-suite
diff --git a/spec/rtems/task/val/mem-sus-res.yml b/spec/rtems/task/val/mem-sus-res.yml
new file mode 100644
index 0000000..1e6803f
--- /dev/null
+++ b/spec/rtems/task/val/mem-sus-res.yml
@@ -0,0 +1,54 @@
+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: validation
+  uid: ../req/mem-sus-res
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with calls to ${../if/suspend:/name} and ${../if/resume:/name}.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    (void) rtems_task_suspend( 0 );
+    (void) rtems_task_resume( 0 );
+    
+  }
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-task-sus-res.c
+type: test-suite
diff --git a/spec/rtems/val/mem-basic.yml b/spec/rtems/val/mem-basic.yml
new file mode 100644
index 0000000..e7d1605
--- /dev/null
+++ b/spec/rtems/val/mem-basic.yml
@@ -0,0 +1,54 @@
+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: validation
+  uid: ../req/mem-basic
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration.
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    /* Nothing to do */
+  }
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: |
+  This resource benchmark is configured for exactly one processor, no clock
+  driver, no Newlib reentrancy support, and no file system.
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-rtems-basic.c
+type: test-suite
diff --git a/spec/rtems/val/mem-smp-1.yml b/spec/rtems/val/mem-smp-1.yml
new file mode 100644
index 0000000..e8543a4
--- /dev/null
+++ b/spec/rtems/val/mem-smp-1.yml
@@ -0,0 +1,59 @@
+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: validation
+  uid: ../req/mem-smp-1
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with ${/acfg/if/max-processors:/name} defined to one using the
+  SMP EDF scheduler (${/acfg/if/scheduler-edf-smp:/name}).
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    /* Nothing to do */
+  }
+
+  #define CONFIGURE_MAXIMUM_PROCESSORS 1
+
+  #if defined(RTEMS_SMP)
+  #define CONFIGURE_SCHEDULER_EDF_SMP
+  #endif
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-rtems-smp-1.c
+type: test-suite
diff --git a/spec/rtems/val/mem-smp-global-2.yml b/spec/rtems/val/mem-smp-global-2.yml
new file mode 100644
index 0000000..82da7d1
--- /dev/null
+++ b/spec/rtems/val/mem-smp-global-2.yml
@@ -0,0 +1,59 @@
+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: validation
+  uid: ../req/mem-smp-global-2
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with ${/acfg/if/max-processors:/name} defined to two using the
+  global SMP EDF scheduler (${/acfg/if/scheduler-edf-smp:/name}).
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    /* Nothing to do */
+  }
+
+  #define CONFIGURE_MAXIMUM_PROCESSORS 2
+
+  #if defined(RTEMS_SMP)
+  #define CONFIGURE_SCHEDULER_EDF_SMP
+  #endif
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-rtems-smp-global-2.c
+type: test-suite
diff --git a/spec/rtems/val/mem-smp-global-4.yml b/spec/rtems/val/mem-smp-global-4.yml
new file mode 100644
index 0000000..6503768
--- /dev/null
+++ b/spec/rtems/val/mem-smp-global-4.yml
@@ -0,0 +1,59 @@
+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: validation
+  uid: ../req/mem-smp-global-4
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with ${/acfg/if/max-processors:/name} defined to four using the
+  global SMP EDF scheduler (${/acfg/if/scheduler-edf-smp:/name}).
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    /* Nothing to do */
+  }
+
+  #define CONFIGURE_MAXIMUM_PROCESSORS 4
+
+  #if defined(RTEMS_SMP)
+  #define CONFIGURE_SCHEDULER_EDF_SMP
+  #endif
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-rtems-smp-global-4.c
+type: test-suite
diff --git a/spec/rtems/val/mem-smp-part-2.yml b/spec/rtems/val/mem-smp-part-2.yml
new file mode 100644
index 0000000..4be00a3
--- /dev/null
+++ b/spec/rtems/val/mem-smp-part-2.yml
@@ -0,0 +1,76 @@
+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: validation
+  uid: ../req/mem-smp-part-2
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with ${/acfg/if/max-processors:/name} defined to two using one
+  SMP EDF scheduler for each configured processor
+  (${/acfg/if/scheduler-edf-smp:/name}).
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    /* Nothing to do */
+  }
+
+  #define CONFIGURE_MAXIMUM_PROCESSORS 2
+
+  #if defined(RTEMS_SMP)
+  #define CONFIGURE_SCHEDULER_EDF_SMP
+
+  #include <rtems/scheduler.h>
+
+  RTEMS_SCHEDULER_EDF_SMP( a );
+
+  RTEMS_SCHEDULER_EDF_SMP( b );
+
+  #define NAME( x ) rtems_build_name( x, ' ', ' ', ' ' )
+
+  #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
+    RTEMS_SCHEDULER_TABLE_EDF_SMP( a, NAME( 'A' ) ), \
+    RTEMS_SCHEDULER_TABLE_EDF_SMP( b, NAME( 'B' ) )
+
+  #define CONFIGURE_SCHEDULER_ASSIGNMENTS \
+    RTEMS_SCHEDULER_ASSIGN( 0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY ), \
+    RTEMS_SCHEDULER_ASSIGN( 1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY )
+  #endif
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-rtems-smp-part-2.c
+type: test-suite
diff --git a/spec/rtems/val/mem-smp-part-4.yml b/spec/rtems/val/mem-smp-part-4.yml
new file mode 100644
index 0000000..f6653d0
--- /dev/null
+++ b/spec/rtems/val/mem-smp-part-4.yml
@@ -0,0 +1,84 @@
+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: validation
+  uid: ../req/mem-smp-part-4
+test-brief: |
+  This static memory usage benchmark program facilitates a basic application
+  configuration with ${/acfg/if/max-processors:/name} defined to four using one
+  SMP EDF scheduler for each configured processor
+  (${/acfg/if/scheduler-edf-smp:/name}).
+test-code: |
+  static void Init( rtems_task_argument arg )
+  {
+    (void) arg;
+
+    /* Nothing to do */
+  }
+
+  #define CONFIGURE_MAXIMUM_PROCESSORS 4
+
+  #if defined(RTEMS_SMP)
+  #define CONFIGURE_SCHEDULER_EDF_SMP
+
+  #include <rtems/scheduler.h>
+
+  RTEMS_SCHEDULER_EDF_SMP( a );
+
+  RTEMS_SCHEDULER_EDF_SMP( b );
+
+  RTEMS_SCHEDULER_EDF_SMP( c );
+
+  RTEMS_SCHEDULER_EDF_SMP( d );
+
+  #define NAME( x ) rtems_build_name( x, ' ', ' ', ' ' )
+
+  #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
+    RTEMS_SCHEDULER_TABLE_EDF_SMP( a, NAME( 'A' ) ), \
+    RTEMS_SCHEDULER_TABLE_EDF_SMP( b, NAME( 'B' ) ), \
+    RTEMS_SCHEDULER_TABLE_EDF_SMP( c, NAME( 'C' ) ), \
+    RTEMS_SCHEDULER_TABLE_EDF_SMP( d, NAME( 'D' ) )
+
+  #define CONFIGURE_SCHEDULER_ASSIGNMENTS \
+    RTEMS_SCHEDULER_ASSIGN( 0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY ), \
+    RTEMS_SCHEDULER_ASSIGN( 1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY ), \
+    RTEMS_SCHEDULER_ASSIGN( 2, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY ), \
+    RTEMS_SCHEDULER_ASSIGN( 3, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY )
+  #endif
+
+  #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
+
+  #define TASK_STORAGE_SIZE \
+    RTEMS_TASK_STORAGE_SIZE( \
+      RTEMS_MINIMUM_STACK_SIZE, \
+      TASK_ATTRIBUTES   )
+
+  #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_MAXIMUM_TASKS 1
+
+  #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+  #define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES
+
+  #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
+
+  #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE
+
+  #define CONFIGURE_INIT
+
+  #include <rtems/confdefs.h>
+test-description: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-target: testsuites/membench/mem-rtems-smp-part-4.c
+type: test-suite



More information about the vc mailing list