diff options
Diffstat (limited to 'spec/rtems/message/req/perf-send-preempt.yml')
-rw-r--r-- | spec/rtems/message/req/perf-send-preempt.yml | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/spec/rtems/message/req/perf-send-preempt.yml b/spec/rtems/message/req/perf-send-preempt.yml new file mode 100644 index 00000000..210a1b54 --- /dev/null +++ b/spec/rtems/message/req/perf-send-preempt.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 +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: | + Send a message. + code: | + uint64_t message; + + ctx->begin = T_tick(); + ctx->status = rtems_message_queue_send( + ctx->queue_id, + &message, + sizeof( message ) + ); + description: null +test-cleanup: null +test-prepare: null +test-setup: + brief: | + Let the worker wait on the message queue. + code: | + Send( ctx, EVENT_RECEIVE | EVENT_RECEIVE_END ); + description: null +test-teardown: + brief: | + Set the measured runtime. Discard samples interrupted by a clock tick. + code: | + T_quiet_rsc_success( ctx->status ); + + *delta = ctx->end - ctx->begin; + + return tic == toc; + description: null +text: | + Let ``U` and `V`` be two tasks with the same home scheduler. Let :math:`B` + be a time point measured by ``U`` right before a call to ${../if/send:/name} + which unblocks the waiting task ``V`` which does preempt the caller. Let + :math:`E` be a time point measured by ``V`` right after the first context + switch after :math:`B`. + + While the execution environment is ${.:/environment}, while a message queue + is empty, while only task ``V`` waits on the message queue, while the + measurement sample is :math:`E - B`, when exactly + ${../val/perf:/params/sample-count} samples are collected, the + ${.:/limit-kind} shall be ${.:/limit-condition}. +type: requirement |