summaryrefslogtreecommitdiffstats
path: root/spec/rtems/barrier/req/perf-release-manual.yml
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-11-24 15:33:17 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-11-25 09:22:14 +0100
commit79cc48142011d5a9c362e41a715d75c70a9cd29f (patch)
tree8c7007b5f1ea8419113c548c33dce66271721be8 /spec/rtems/barrier/req/perf-release-manual.yml
parentspec: Reword performance requirements (diff)
downloadrtems-central-79cc48142011d5a9c362e41a715d75c70a9cd29f.tar.bz2
spec: Add performance requirements
Diffstat (limited to 'spec/rtems/barrier/req/perf-release-manual.yml')
-rw-r--r--spec/rtems/barrier/req/perf-release-manual.yml75
1 files changed, 75 insertions, 0 deletions
diff --git a/spec/rtems/barrier/req/perf-release-manual.yml b/spec/rtems/barrier/req/perf-release-manual.yml
new file mode 100644
index 00000000..886797da
--- /dev/null
+++ b/spec/rtems/barrier/req/perf-release-manual.yml
@@ -0,0 +1,75 @@
+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
+limits: {}
+links:
+- role: requirement-refinement
+ uid: perf-runtime
+- role: runtime-measurement-request
+ uid: ../val/perf
+non-functional-type: performance-runtime
+params: {}
+rationale: null
+references: []
+requirement-type: non-functional
+test-body:
+ brief: |
+ Release the barrier.
+ code: |
+ uint32_t count;
+
+ ctx->status = rtems_barrier_release( ctx->barrier_id, &count );
+ description: null
+test-cleanup:
+ brief: |
+ Delete the barrier and the worker.
+ code: |
+ rtems_status_code sc;
+
+ DeleteTask( ctx->worker_id );
+
+ sc = rtems_barrier_delete( ctx->barrier_id );
+ T_rsc_success( sc );
+
+ RestoreRunnerPriority();
+ description: null
+test-prepare:
+ brief: |
+ Create a manual release barrier. Create and start a worker task.
+ code: |
+ rtems_status_code sc;
+
+ sc = rtems_barrier_create(
+ OBJECT_NAME,
+ RTEMS_BARRIER_MANUAL_RELEASE,
+ 0,
+ &ctx->barrier_id
+ );
+ T_rsc_success( sc );
+
+ SetSelfPriority( PRIO_NORMAL );
+ ctx->worker_id = CreateTask( "WORK", PRIO_NORMAL );
+ StartTask( ctx->worker_id, BarrierWaitWorker, ctx );
+ description: null
+test-setup:
+ brief: |
+ Make sure the worker task is fully blocked on the barrier.
+ code: |
+ Yield();
+ description: null
+test-teardown:
+ brief: |
+ Discard samples interrupted by a clock tick.
+ code: |
+ T_quiet_rsc_success( ctx->status );
+
+ return tic == toc;
+ description: null
+text: |
+ While the execution environment is ${.:/environment}, while the barrier is a
+ manual release barrier, while the measurement sample is the runtime of exactly
+ one successful call to ${../if/release:/name} which does not preempt the
+ caller, when exactly ${../val/perf:/params/sample-count} samples are
+ collected, the ${.:/limit-kind} shall be ${.:/limit-condition}.
+type: requirement