16 #ifndef INSIDE_ATOMICS_H 17 # error "should be included via atomics.h" 20 #ifndef pg_memory_barrier_impl 32 #define PG_HAVE_MEMORY_BARRIER_EMULATION 35 #define pg_memory_barrier_impl pg_spinlock_barrier 38 #ifndef pg_compiler_barrier_impl 48 #define PG_HAVE_COMPILER_BARRIER_EMULATION 50 #define pg_compiler_barrier_impl pg_extern_compiler_barrier 65 #if !defined(PG_HAVE_ATOMIC_FLAG_SUPPORT) && !defined(PG_HAVE_ATOMIC_U32_SUPPORT) 67 #define PG_HAVE_ATOMIC_FLAG_SIMULATION 68 #define PG_HAVE_ATOMIC_FLAG_SUPPORT 78 #if defined(__hppa) || defined(__hppa__) 88 #if !defined(PG_HAVE_ATOMIC_U32_SUPPORT) 90 #define PG_HAVE_ATOMIC_U32_SIMULATION 92 #define PG_HAVE_ATOMIC_U32_SUPPORT 96 #if defined(__hppa) || defined(__hppa__) 106 #if !defined(PG_HAVE_ATOMIC_U64_SUPPORT) 108 #define PG_HAVE_ATOMIC_U64_SIMULATION 110 #define PG_HAVE_ATOMIC_U64_SUPPORT 114 #if defined(__hppa) || defined(__hppa__) 124 #ifdef PG_HAVE_ATOMIC_FLAG_SIMULATION 126 #define PG_HAVE_ATOMIC_INIT_FLAG 129 #define PG_HAVE_ATOMIC_TEST_SET_FLAG 132 #define PG_HAVE_ATOMIC_CLEAR_FLAG 135 #define PG_HAVE_ATOMIC_UNLOCKED_TEST_FLAG 140 #ifdef PG_HAVE_ATOMIC_U32_SIMULATION 142 #define PG_HAVE_ATOMIC_INIT_U32 145 #define PG_HAVE_ATOMIC_WRITE_U32 148 #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32 152 #define PG_HAVE_ATOMIC_FETCH_ADD_U32 158 #ifdef PG_HAVE_ATOMIC_U64_SIMULATION 160 #define PG_HAVE_ATOMIC_INIT_U64 163 #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64 165 uint64 *expected, uint64
newval);
167 #define PG_HAVE_ATOMIC_FETCH_ADD_U64 struct pg_atomic_flag pg_atomic_flag
bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval)
void pg_atomic_init_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val_)
struct pg_atomic_uint32 pg_atomic_uint32
void pg_atomic_init_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val_)
struct pg_atomic_uint64 pg_atomic_uint64
uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_)
void pg_atomic_init_flag_impl(volatile pg_atomic_flag *ptr)
bool pg_atomic_unlocked_test_flag_impl(volatile pg_atomic_flag *ptr)
void pg_spinlock_barrier(void)
bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr)
void pg_atomic_write_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val)
void pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr)
uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_)
void pg_extern_compiler_barrier(void)
bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval)