diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-11-24 15:33:17 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-11-25 09:22:14 +0100 |
commit | 79cc48142011d5a9c362e41a715d75c70a9cd29f (patch) | |
tree | 8c7007b5f1ea8419113c548c33dce66271721be8 /spec/rtems/barrier/req/perf-release-manual.yml | |
parent | spec: Reword performance requirements (diff) | |
download | rtems-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.yml | 75 |
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 |