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: RTEMS_SMP limits: sparc/gr712rc/smp/qual-only/aQM5D84izENqUHf5JXZtqffaL5bD4qBjf9HOSNfAMBY=: DirtyCache: max-upper-bound: 0.000192 median-lower-bound: 0.0001264 median-upper-bound: 0.0001896 min-lower-bound: 0.0001264 FullCache: max-upper-bound: 0.00012 median-lower-bound: 5.0368e-05 median-upper-bound: 7.5552e-05 min-lower-bound: 5.0368e-05 HotCache: max-upper-bound: 7.3152e-05 median-lower-bound: 4.800000000000001e-05 median-upper-bound: 7.2e-05 min-lower-bound: 4.800000000000001e-05 Load/1: max-upper-bound: 0.00018835199999999997 median-lower-bound: 0.0001248 median-upper-bound: 0.0001872 min-lower-bound: 0.0001248 Load/2: max-upper-bound: 0.000219552 median-lower-bound: 0.0001456 median-upper-bound: 0.00021839999999999997 min-lower-bound: 0.000144768 sparc/gr740/smp/qual-only/3Y1G8SMm2FRTpZB5_0NhbpDnatbEYmbDLLW58d-wXuY=: DirtyCache: max-upper-bound: 7.151999999999999e-05 median-lower-bound: 4.7648e-05 median-upper-bound: 7.1472e-05 min-lower-bound: 4.7472e-05 FullCache: max-upper-bound: 7.075199999999999e-05 median-lower-bound: 4.6944e-05 median-upper-bound: 7.0416e-05 min-lower-bound: 4.6320000000000004e-05 HotCache: max-upper-bound: 6.969599999999999e-05 median-lower-bound: 4.6464e-05 median-upper-bound: 6.969599999999999e-05 min-lower-bound: 4.6448000000000007e-05 Load/1: max-upper-bound: 7.545599999999999e-05 median-lower-bound: 5.0112e-05 median-upper-bound: 7.5168e-05 min-lower-bound: 4.9984e-05 Load/2: max-upper-bound: 7.5336e-05 median-lower-bound: 5.0032e-05 median-upper-bound: 7.504799999999999e-05 min-lower-bound: 4.9904e-05 Load/3: max-upper-bound: 7.5336e-05 median-lower-bound: 5.0224000000000006e-05 median-upper-bound: 7.5336e-05 min-lower-bound: 5.0032e-05 Load/4: max-upper-bound: 7.5288e-05 median-lower-bound: 5.0032e-05 median-upper-bound: 7.504799999999999e-05 min-lower-bound: 4.9904e-05 sparc/gr740/smp/qual-only/qpmWME3Tk2kfoQL1kmgyerzkvLKkrfPY7xWIWGfY0Fg=: DirtyCache: max-upper-bound: 7.53408e-05 median-lower-bound: 4.39552e-05 median-upper-bound: 6.59328e-05 min-lower-bound: 4.3174400000000005e-05 FullCache: max-upper-bound: 5.5012799999999996e-05 median-lower-bound: 1.9283200000000002e-05 median-upper-bound: 2.89248e-05 min-lower-bound: 1.9152000000000002e-05 HotCache: max-upper-bound: 1.70544e-05 median-lower-bound: 1.11584e-05 median-upper-bound: 1.6737599999999997e-05 min-lower-bound: 1.11584e-05 Load/1: max-upper-bound: 8.748e-05 median-lower-bound: 4.21472e-05 median-upper-bound: 6.32208e-05 min-lower-bound: 4.1747200000000006e-05 Load/2: max-upper-bound: 0.000383688 median-lower-bound: 0.0002547648 median-upper-bound: 0.0003821472 min-lower-bound: 0.00025233920000000004 Load/3: max-upper-bound: 0.0006486288 median-lower-bound: 0.00042263040000000004 median-upper-bound: 0.0006339456 min-lower-bound: 0.00041873600000000006 Load/4: max-upper-bound: 0.0008044656 median-lower-bound: 0.0005273248000000001 median-upper-bound: 0.0007909872 min-lower-bound: 0.0005258176 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 mutex. code: | ctx->begin = T_tick(); ctx->status = rtems_semaphore_release( ctx->mutex_id ); description: null test-cleanup: brief: | Move worker to scheduler A. code: | SetScheduler( ctx->worker_id, SCHEDULER_A_ID, PRIO_HIGH ); description: null test-prepare: brief: | Move worker to scheduler B. code: | SetScheduler( ctx->worker_id, SCHEDULER_B_ID, PRIO_NORMAL ); description: null test-setup: brief: | Let one task wait on the mutex. code: | ObtainMutex( ctx->mutex_id ); Send( ctx, EVENT_OBTAIN | EVENT_OBTAIN_END | EVENT_RELEASE ); WaitForNextTask( 1, ctx->worker_id ); description: null test-teardown: brief: | Make sure the worker waits for the next event. Set the measured runtime. Discard samples interrupted by a clock tick. code: | T_quiet_rsc( ctx->status, RTEMS_SUCCESSFUL ); WaitForNextTask( 1, ctx->worker_id ); *delta = ctx->end - ctx->begin; return tic == toc; description: null text: | Let U and V be two tasks with distinct home schedulers. Let :math:`B` be a time point measured by U right before a call to ${../if/release:/name} which unblocks task V which is scheduled on another processor. 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 the semaphore is a priority inheritance mutex, while exactly task V waits on the mutex, 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