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: ../req/bit-set - role: validation uid: ../if/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: ../req/bit-set - role: validation uid: ../if/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: ../req/bit-set - role: validation uid: ../if/floating-point - check: | T_step_true( ${step}, IsPowerOfTwo( RTEMS_GLOBAL ) ); description: | Check that RTEMS_GLOBAL is a power of two. links: - role: validation uid: ../req/bit-set - role: validation uid: ../if/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: ../req/bit-set - role: validation uid: ../if/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: ../req/bit-set - role: validation uid: ../if/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: ../req/bit-set - role: validation uid: ../if/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: ../req/bit-set - role: validation uid: ../if/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: ../req/bit-set - role: validation uid: ../if/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: ../req/bit-set - role: validation uid: ../if/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: ../req/default - role: validation uid: ../if/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: ../req/default - role: validation uid: ../if/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: ../req/default - role: validation uid: ../if/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: ../req/default - role: validation uid: ../if/default - check: | T_step_eq_u32( ${step}, RTEMS_FIFO, 0 ); description: | Check that RTEMS_FIFO is equal to zero. links: - role: validation uid: ../req/default - role: validation uid: ../if/fifo - check: | T_step_eq_u32( ${step}, RTEMS_LOCAL, 0 ); description: | Check that RTEMS_LOCAL is equal to zero. links: - role: validation uid: ../req/default - role: validation uid: ../if/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: ../req/default - role: validation uid: ../if/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: ../req/default - role: validation uid: ../if/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: ../req/default - role: validation uid: ../if/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: ../req/default - role: validation uid: ../if/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: ../req/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: ../req/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