diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-09-03 11:06:46 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-09-03 11:07:37 +0200 |
commit | 4a8c334fb2b115f45280df84c5283957fdbed858 (patch) | |
tree | d9d9e2460df816b6842c1fdea5ed75562c66d91e /testsuites | |
parent | score: Use void * for some atomic pointer ops (diff) | |
download | rtems-4a8c334fb2b115f45280df84c5283957fdbed858.tar.bz2 |
smptests/smpatomic08: Add initialization test case
Diffstat (limited to 'testsuites')
-rw-r--r-- | testsuites/smptests/smpatomic08/init.c | 42 | ||||
-rw-r--r-- | 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 055a8071df..c047ff0f1a 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 b8878e3f7d..28d46809a0 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 |