static void test_static_and_dynamic_initialization(void) { #if (__SIZEOF_INT__ == 2) #define UINT_CONSTANT 0xc0feU #else #define UINT_CONSTANT 0xc01dc0feU #endif static Atomic_Uint static_uint = ATOMIC_INITIALIZER_UINT(UINT_CONSTANT); static Atomic_Ulong static_ulong = ATOMIC_INITIALIZER_ULONG(0xdeadbeefUL); static Atomic_Uintptr static_uintptr = ATOMIC_INITIALIZER_UINTPTR((uintptr_t) &static_uintptr); static Atomic_Flag static_flag = ATOMIC_INITIALIZER_FLAG; Atomic_Uint stack_uint; Atomic_Ulong stack_ulong; Atomic_Uintptr stack_uintptr; Atomic_Flag stack_flag; puts("=== static and dynamic initialization test case ==="); _Atomic_Init_uint(&stack_uint, UINT_CONSTANT); _Atomic_Init_ulong(&stack_ulong, 0xdeadbeefUL); _Atomic_Init_uintptr(&stack_uintptr, (uintptr_t) &static_uintptr); _Atomic_Flag_clear(&stack_flag, ATOMIC_ORDER_RELAXED); rtems_test_assert( memcmp(&stack_uint, &static_uint, sizeof(stack_uint)) == 0 ); rtems_test_assert( memcmp(&stack_ulong, &static_ulong, sizeof(stack_ulong)) == 0 ); rtems_test_assert( memcmp(&stack_uintptr, &static_uintptr, sizeof(stack_uintptr)) == 0 ); rtems_test_assert( memcmp(&stack_flag, &static_flag, sizeof(stack_flag)) == 0 ); rtems_test_assert( _Atomic_Load_uint(&stack_uint, ATOMIC_ORDER_RELAXED) == 0xc01dc0feU ); rtems_test_assert( _Atomic_Load_ulong(&stack_ulong, ATOMIC_ORDER_RELAXED) == 0xdeadbeefUL ); rtems_test_assert( _Atomic_Load_uintptr(&stack_uintptr, ATOMIC_ORDER_RELAXED) == (uintptr_t) &static_uintptr ); rtems_test_assert( !_Atomic_Flag_test_and_set(&stack_flag, ATOMIC_ORDER_RELAXED) ); }
* The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at * http://www.rtems.org/license/LICENSE. */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include <rtems/score/smplock.h> #if defined( RTEMS_PROFILING ) SMP_lock_Stats_control _SMP_lock_Stats_control = { .Lock = { .ticket_lock = { .next_ticket = ATOMIC_INITIALIZER_UINT( 0U ), .now_serving = ATOMIC_INITIALIZER_UINT( 0U ), .Stats = { .Node = CHAIN_NODE_INITIALIZER_ONE_NODE_CHAIN( &_SMP_lock_Stats_control.Stats_chain ), .name = "SMP lock stats" } } }, .Stats_chain = CHAIN_INITIALIZER_ONE_NODE( &_SMP_lock_Stats_control.Lock.ticket_lock.Stats.Node ), .Iterator_chain = CHAIN_INITIALIZER_EMPTY( _SMP_lock_Stats_control.Iterator_chain )