35 uint32_t
compare_and_swap(
volatile uint32_t *p, uint32_t oldval, uint32_t newval);
36 uint64_t
compare_and_swap(
volatile uint64_t *p, uint64_t oldval, uint64_t newval);
54 #include "md-atomic.hpp"
82 template<
class T>
class CAS {
87 (
typename S::value_type) o,
88 (
typename S::value_type) n);
101 #endif // _ATOMIC_HPP
void write_memory_barrier(void)
uint32_t compare_and_swap(volatile uint32_t *p, uint32_t oldval, uint32_t newval)
An atomic compare and swap for 32-bit integer values.
T compare_and_swap(T *p, T o, T n)
static value_type compare_and_swap(value_type *p, value_type o, value_type n)
void memory_barrier(void)
A memory barrier.
static value_type compare_and_swap(value_type *p, value_type o, value_type n)
void write_memory_barrier(void)
A write memory barrier.
void instruction_barrier(void)
An instruction barrier.
void memory_barrier(void)
static T compare_and_swap(T *p, T o, T n)
uint64_t compare_and_swap(volatile uint64_t *p, uint64_t oldval, uint64_t newval)
An atomic compare and swap for 64-bit integer values.
void generic_memory_barrier(void)
A generic memory barrier.
CAS_chooser< sizeof(T)>::the_type S
uint32_t generic_compare_and_swap(volatile uint32_t *p, uint32_t oldval, uint32_t newval)
A generic atomic compare and swap for 32-bit integer values.
void instruction_barrier(void)