diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-08-17 15:21:28 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-08-19 12:31:44 +0200 |
commit | b9e19eaa1eacc46b4c300a3306713e0bebab3e08 (patch) | |
tree | d4a101c85cd9daf0fe6c9879c74ce6b18e300139 /spec/req/rtems/attr/val/attr.yml | |
parent | spec: Add SMP support to validation test suite (diff) | |
download | rtems-central-b9e19eaa1eacc46b4c300a3306713e0bebab3e08.tar.bz2 |
spec: Specify directive attributes
Diffstat (limited to 'spec/req/rtems/attr/val/attr.yml')
-rw-r--r-- | spec/req/rtems/attr/val/attr.yml | 278 |
1 files changed, 278 insertions, 0 deletions
diff --git a/spec/req/rtems/attr/val/attr.yml b/spec/req/rtems/attr/val/attr.yml new file mode 100644 index 00000000..22594b12 --- /dev/null +++ b/spec/req/rtems/attr/val/attr.yml @@ -0,0 +1,278 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: [] +test-actions: +- action: | + /* No action */ + checks: + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_BARRIER_MANUAL_RELEASE ) ); + description: | + Check that RTEMS_BARRIER_MANUAL_RELEASE is a power of two. + links: + - role: validation + uid: ../bit-set + - role: validation + uid: /if/rtems/attr/barrier-manual-release + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_BINARY_SEMAPHORE ) ); + description: | + Check that RTEMS_BINARY_SEMAPHORE is a power of two. + links: + - role: validation + uid: ../bit-set + - role: validation + uid: /if/rtems/attr/binary-semaphore + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_FLOATING_POINT ) ); + description: | + Check that RTEMS_FLOATING_POINT is a power of two. + links: + - role: validation + uid: ../bit-set + - role: validation + uid: /if/rtems/attr/floating-point + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_GLOBAL ) ); + description: | + Check that RTEMS_GLOBAL is a power of two. + links: + - role: validation + uid: ../bit-set + - role: validation + uid: /if/rtems/attr/global + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_INHERIT_PRIORITY ) ); + description: | + Check that RTEMS_INHERIT_PRIORITY is a power of two. + links: + - role: validation + uid: ../bit-set + - role: validation + uid: /if/rtems/attr/inherit-priority + - check: | + T_step_true( + ${step}, + IsPowerOfTwo( RTEMS_MULTIPROCESSOR_RESOURCE_SHARING ) + ); + description: | + Check that RTEMS_MULTIPROCESSOR_RESOURCE_SHARING is a power of two. + links: + - role: validation + uid: ../bit-set + - role: validation + uid: /if/rtems/attr/multiprocessor-resource-sharing + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_PRIORITY ) ); + description: | + Check that RTEMS_PRIORITY is a power of two. + links: + - role: validation + uid: ../bit-set + - role: validation + uid: /if/rtems/attr/priority + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_PRIORITY_CEILING ) ); + description: | + Check that RTEMS_PRIORITY_CEILING is a power of two. + links: + - role: validation + uid: ../bit-set + - role: validation + uid: /if/rtems/attr/priority-ceiling + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_SIMPLE_BINARY_SEMAPHORE ) ); + description: | + Check that RTEMS_SIMPLE_BINARY_SEMAPHORE is a power of two. + links: + - role: validation + uid: ../bit-set + - role: validation + uid: /if/rtems/attr/simple-binary-semaphore + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_SYSTEM_TASK ) ); + description: | + Check that RTEMS_SYSTEM_TASK is a power of two. + links: + - role: validation + uid: ../bit-set + - role: validation + uid: /if/rtems/attr/system-task + description: | + Validate the non-default attribute constants. + links: [] +- action: | + /* No action */ + checks: + - check: | + T_step_eq_u32( ${step}, RTEMS_APPLICATION_TASK, 0 ); + description: | + Check that RTEMS_APPLICATION_TASK is equal to zero. + links: + - role: validation + uid: ../default + - role: validation + uid: /if/rtems/attr/application-task + - check: | + T_step_eq_u32( ${step}, RTEMS_BARRIER_MANUAL_RELEASE, 0 ); + description: | + Check that RTEMS_BARRIER_MANUAL_RELEASE is equal to zero. + links: + - role: validation + uid: ../default + - role: validation + uid: /if/rtems/attr/barrier-manual-release + - check: | + T_step_eq_u32( ${step}, RTEMS_COUNTING_SEMAPHORE, 0 ); + description: | + Check that RTEMS_COUNTING_SEMAPHORE is equal to zero. + links: + - role: validation + uid: ../default + - role: validation + uid: /if/rtems/attr/counting-semaphore + - check: | + T_step_eq_u32( ${step}, RTEMS_DEFAULT_ATTRIBUTES, 0 ); + description: | + Check that RTEMS_DEFAULT_ATTRIBUTES is equal to zero. + links: + - role: validation + uid: ../default + - role: validation + uid: /if/rtems/attr/default + - check: | + T_step_eq_u32( ${step}, RTEMS_FIFO, 0 ); + description: | + Check that RTEMS_FIFO is equal to zero. + links: + - role: validation + uid: ../default + - role: validation + uid: /if/rtems/attr/fifo + - check: | + T_step_eq_u32( ${step}, RTEMS_LOCAL, 0 ); + description: | + Check that RTEMS_LOCAL is equal to zero. + links: + - role: validation + uid: ../default + - role: validation + uid: /if/rtems/attr/local + - check: | + T_step_eq_u32( ${step}, RTEMS_NO_FLOATING_POINT, 0 ); + description: | + Check that RTEMS_NO_FLOATING_POINT is equal to zero. + links: + - role: validation + uid: ../default + - role: validation + uid: /if/rtems/attr/no-floating-point + - check: | + T_step_eq_u32( ${step}, RTEMS_NO_INHERIT_PRIORITY, 0 ); + description: | + Check that RTEMS_NO_INHERIT_PRIORITY is equal to zero. + links: + - role: validation + uid: ../default + - role: validation + uid: /if/rtems/attr/no-inherit-priority + - check: | + T_step_eq_u32( ${step}, RTEMS_NO_MULTIPROCESSOR_RESOURCE_SHARING, 0 ); + description: | + Check that RTEMS_NO_MULTIPROCESSOR_RESOURCE_SHARING is equal to zero. + links: + - role: validation + uid: ../default + - role: validation + uid: /if/rtems/attr/no-multiprocessor-resource-sharing + - check: | + T_step_eq_u32( ${step}, RTEMS_NO_PRIORITY_CEILING, 0 ); + description: | + Check that RTEMS_NO_PRIORITY_CEILING is equal to zero. + links: + - role: validation + uid: ../default + - role: validation + uid: /if/rtems/attr/no-priority-ceiling + description: | + Validate the default attribute constants. + links: [] +- action: | + attributes = 0; + attributes |= RTEMS_BARRIER_AUTOMATIC_RELEASE; + attributes |= RTEMS_BINARY_SEMAPHORE; + attributes |= RTEMS_FLOATING_POINT; + attributes |= RTEMS_GLOBAL; + attributes |= RTEMS_INHERIT_PRIORITY; + attributes |= RTEMS_MULTIPROCESSOR_RESOURCE_SHARING; + attributes |= RTEMS_PRIORITY; + attributes |= RTEMS_PRIORITY_CEILING; + attributes |= RTEMS_SEMAPHORE_CLASS; + attributes |= RTEMS_SIMPLE_BINARY_SEMAPHORE; + attributes |= RTEMS_SYSTEM_TASK; + checks: + - check: | + T_step_eq_int( ${step}, PopCount( attributes ), 10 ); + description: | + Check that the count of set bits in the calculated value is equal to the + count of non-default attribute constants. Since each non-default + attribute constant is a power of two, this proves that each constant has + a unique value. + links: + - role: validation + uid: ../unique + description: | + Calculate the bitwise or of all non-default attribute constants. + links: [] +- action: | + attributes = 0; + attributes |= RTEMS_BINARY_SEMAPHORE; + attributes |= RTEMS_COUNTING_SEMAPHORE; + attributes |= RTEMS_SIMPLE_BINARY_SEMAPHORE; + checks: + - check: | + T_step_eq_u32( ${step}, RTEMS_SEMAPHORE_CLASS, attributes ); + description: | + Check that the calculated value is equal to RTEMS_SEMAPHORE_CLASS. + links: + - role: validation + uid: ../semaphore-class + description: | + Calculate the bitwise or of the RTEMS_BINARY_SEMAPHORE, + RTEMS_COUNTING_SEMAPHORE, and RTEMS_SIMPLE_BINARY_SEMAPHORE attribute + constants. + links: [] +test-brief: | + Tests the attribute constants of the Classic API. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: +- rtems.h +test-local-includes: [] +test-prologue: | + rtems_attribute attributes; +test-support: | + static bool IsPowerOfTwo( rtems_attribute attribute ) + { + return attribute != 0 && ( attribute & ( attribute - 1 ) ) == 0; + } + + static int PopCount( rtems_attribute attributes ) + { + int count; + + count = 0; + + while ( attributes != 0 ) { + ++count; + attributes &= attributes - 1; + } + + return count; + } +test-target: testsuites/validation/tc-attr.c +type: test-case |