[rtems commit] smptests/smpatomic08: Add initialization test case

Sebastian Huber sebh at rtems.org
Tue Sep 3 09:02:55 UTC 2013


Module:    rtems
Branch:    master
Commit:    4a8c334fb2b115f45280df84c5283957fdbed858
Changeset: http://git.rtems.org/rtems/commit/?id=4a8c334fb2b115f45280df84c5283957fdbed858

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Sep  3 11:06:46 2013 +0200

smptests/smpatomic08: Add initialization test case

---

 testsuites/smptests/smpatomic08/init.c          |   42 +++++++++++++++++++++++
 testsuites/smptests/smpatomic08/smpatomic08.scn |    1 +
 2 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/testsuites/smptests/smpatomic08/init.c b/testsuites/smptests/smpatomic08/init.c
index 055a807..c047ff0 100644
--- a/testsuites/smptests/smpatomic08/init.c
+++ b/testsuites/smptests/smpatomic08/init.c
@@ -18,6 +18,7 @@
 
 #include <rtems/score/atomic.h>
 #include <rtems.h>
+#include <string.h>
 
 #include "tmacros.h"
 
@@ -378,12 +379,53 @@ static void worker_task(size_t worker_index)
   rtems_test_assert(0);
 }
 
+static void test_static_and_dynamic_initialization(void)
+{
+  static Atomic_Ulong static_ulong =
+    ATOMIC_INITIALIZER_ULONG(0xdeadbeefUL);
+  static Atomic_Pointer static_ptr =
+    ATOMIC_INITIALIZER_PTR(&static_ptr);
+  static Atomic_Flag static_flag = ATOMIC_INITIALIZER_FLAG;
+
+  Atomic_Ulong stack_ulong;
+  Atomic_Pointer stack_ptr;
+  Atomic_Flag stack_flag;
+
+  puts("=== static and dynamic initialization test case ===");
+
+  _Atomic_Init_ulong(&stack_ulong, 0xdeadbeefUL);
+  _Atomic_Init_ptr(&stack_ptr, &static_ptr);
+  _Atomic_Flag_clear(&stack_flag, ATOMIC_ORDER_RELAXED);
+
+  rtems_test_assert(
+    memcmp(&stack_ulong, &static_ulong, sizeof(stack_ulong)) == 0
+  );
+  rtems_test_assert(
+    memcmp(&stack_ptr, &static_ptr, sizeof(stack_ptr)) == 0
+  );
+  rtems_test_assert(
+    memcmp(&stack_flag, &static_flag, sizeof(stack_flag)) == 0
+  );
+
+  rtems_test_assert(
+    _Atomic_Load_ulong(&stack_ulong, ATOMIC_ORDER_RELAXED) == 0xdeadbeefUL
+  );
+  rtems_test_assert(
+    _Atomic_Load_ptr(&stack_ptr, ATOMIC_ORDER_RELAXED) == &static_ptr
+  );
+  rtems_test_assert(
+    !_Atomic_Flag_test_and_set(&stack_flag, ATOMIC_ORDER_RELAXED)
+  );
+}
+
 static void test(void)
 {
   test_context *ctx = &test_instance;
   rtems_status_code sc;
   size_t worker_index;
 
+  test_static_and_dynamic_initialization();
+
   ctx->worker_count = rtems_smp_get_processor_count();
 
   sc = rtems_timer_create(
diff --git a/testsuites/smptests/smpatomic08/smpatomic08.scn b/testsuites/smptests/smpatomic08/smpatomic08.scn
index b8878e3..28d4680 100644
--- a/testsuites/smptests/smpatomic08/smpatomic08.scn
+++ b/testsuites/smptests/smpatomic08/smpatomic08.scn
@@ -1,4 +1,5 @@
 *** TEST SMPATOMIC 8 ***
+=== static and dynamic initialization test case ===
 === atomic add test case ==
 worker 0 value: 16686
 worker 1 value: 36405




More information about the vc mailing list