summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-02-02 15:51:36 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-02-08 08:05:33 +0100
commit11b65c59f9387dbe4e322ee8bd08f8f8847fc6f3 (patch)
tree9e690449139166f7b41f3b7505bea7ca70c02a96
parentspec: Document barrier directives (diff)
downloadrtems-central-11b65c59f9387dbe4e322ee8bd08f8f8847fc6f3.tar.bz2
spec: Specify rtems_build_name()
-rw-r--r--spec/rtems/object/req/build-name-macro.yml18
-rw-r--r--spec/rtems/object/val/object.yml92
2 files changed, 110 insertions, 0 deletions
diff --git a/spec/rtems/object/req/build-name-macro.yml b/spec/rtems/object/req/build-name-macro.yml
new file mode 100644
index 00000000..3472c421
--- /dev/null
+++ b/spec/rtems/object/req/build-name-macro.yml
@@ -0,0 +1,18 @@
+SPDX-License-Identifier: CC-BY-SA-4.0
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: interface-function
+ uid: ../if/build-name-macro
+functional-type: function
+rationale: null
+references: []
+requirement-type: functional
+text: |
+ The result of ${../if/build-name-macro:/name} shall be equal to
+ (${../if/build-name-macro:/params[0]/name} modulo 256) * 16777216 +
+ (${../if/build-name-macro:/params[1]/name} modulo 256) * 65536 +
+ (${../if/build-name-macro:/params[2]/name} modulo 256) * 256 +
+ (${../if/build-name-macro:/params[3]/name} modulo 256).
+type: requirement
diff --git a/spec/rtems/object/val/object.yml b/spec/rtems/object/val/object.yml
new file mode 100644
index 00000000..792206b7
--- /dev/null
+++ b/spec/rtems/object/val/object.yml
@@ -0,0 +1,92 @@
+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
+links: []
+test-actions:
+- action-brief: |
+ Validate the results of rtems_build_name() for a sample set of parameters.
+ action-code: |
+ static const uint16_t chars[] = { 0, 255, 257 };
+ rtems_name accumulated_name;
+ size_t i;
+ size_t j;
+ size_t k;
+ size_t r;
+
+ accumulated_name = 0;
+
+ for ( i = 0; i < RTEMS_ARRAY_SIZE( chars ); ++i ) {
+ for ( j = 0; j < RTEMS_ARRAY_SIZE( chars ); ++j ) {
+ for ( k = 0; k < RTEMS_ARRAY_SIZE( chars ); ++k ) {
+ for ( r = 0; r < RTEMS_ARRAY_SIZE( chars ); ++r ) {
+ unsigned char u1;
+ unsigned char u2;
+ unsigned char u3;
+ unsigned char u4;
+ signed char s1;
+ signed char s2;
+ signed char s3;
+ signed char s4;
+ rtems_name expected_name;
+ rtems_name actual_name;
+
+ expected_name = ( chars[ i ] % 256 ) * UINT32_C( 16777216 ) +
+ ( chars[ j ] % 256 ) * UINT32_C( 65536 ) +
+ ( chars[ k ] % 256 ) * UINT32_C( 256 ) +
+ ( chars[ r ] % 256 );
+
+ u1 = (unsigned char) chars[ i ];
+ u2 = (unsigned char) chars[ j ];
+ u3 = (unsigned char) chars[ k ];
+ u4 = (unsigned char) chars[ r ];
+ actual_name = rtems_build_name( u1, u2, u3, u4 );
+ T_quiet_eq_u32( actual_name, expected_name )
+ accumulated_name += actual_name;
+
+ s1 = (signed char) u1;
+ s2 = (signed char) u2;
+ s3 = (signed char) u3;
+ s4 = (signed char) u4;
+ actual_name = rtems_build_name( s1, s2, s3, s4 );
+ T_quiet_eq_u32( actual_name, expected_name )
+ accumulated_name += actual_name;
+
+ actual_name = rtems_build_name(
+ chars[ i ],
+ chars[ j ],
+ chars[ k ],
+ chars[ r ]
+ );
+ T_quiet_eq_u32( actual_name, expected_name );
+ accumulated_name += actual_name;
+ }
+ }
+ }
+ }
+ checks:
+ - brief: |
+ Check that the accumulated name has the expected value.
+ code: |
+ T_step_eq_u32( ${step}, accumulated_name, 0x51515100 );
+ links:
+ - role: validation
+ uid: ../req/build-name-macro
+ links:
+ - role: validation
+ uid: ../req/build-name-macro
+test-brief: |
+ Tests the rtems_build_name() macro.
+test-context: []
+test-context-support: null
+test-description: null
+test-header: null
+test-includes:
+- rtems.h
+test-local-includes: []
+test-setup: null
+test-stop: null
+test-support: null
+test-target: testsuites/validation/tc-object.c
+test-teardown: null
+type: test-case