All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Macros | Typedefs | Functions
as_atomic_win.h File Reference
#include <aerospike/as_std.h>
#include <windows.h>
#include <intrin.h>
+ Include dependency graph for as_atomic_win.h:

Go to the source code of this file.

Macros

#define as_aaf_int32(_target, _value)   InterlockedAdd((LONG volatile*)(_target), _value)
 
#define as_aaf_int32_rls(_target, _value)   InterlockedAdd((LONG volatile*)(_target), _value)
 
#define as_aaf_int64(_target, _value)   InterlockedAdd64((LONGLONG volatile*)(_target), _value)
 
#define as_aaf_int64_rls(_target, _value)   InterlockedAdd64((LONGLONG volatile*)(_target), _value)
 
#define as_aaf_uint32(_target, _value)   (uint32_t)InterlockedAdd((LONG volatile*)(_target), _value)
 
#define as_aaf_uint32_rls(_target, _value)   (uint32_t)InterlockedAdd((LONG volatile*)(_target), _value)
 
#define as_aaf_uint64(_target, _value)   (uint64_t)InterlockedAdd64((LONGLONG volatile*)(_target), _value)
 
#define as_aaf_uint64_rls(_target, _value)   (uint64_t)InterlockedAdd64((LONGLONG volatile*)(_target), _value)
 
#define as_add_int32(_target, _value)   InterlockedExchangeAdd((LONG volatile*)(_target), _value)
 
#define as_add_int64(_target, _value)   InterlockedExchangeAdd64((LONGLONG volatile*)(_target), _value)
 
#define as_add_uint32(_target, _value)   InterlockedExchangeAdd((LONG volatile*)(_target), _value)
 
#define as_add_uint64(_target, _value)   InterlockedExchangeAdd64((LONGLONG volatile*)(_target), _value)
 
#define as_cas_int16(_target, _old_value, _new_value)   (InterlockedCompareExchange16((short volatile*)(_target), (short)(_new_value), (short)(_old_value)) == (short)(_old_value))
 
#define as_cas_int32(_target, _old_value, _new_value)   (InterlockedCompareExchange((LONG volatile*)(_target), (LONG)(_new_value), (LONG)(_old_value)) == (LONG)(_old_value))
 
#define as_cas_int64(_target, _old_value, _new_value)   (InterlockedCompareExchange64((LONGLONG volatile*)(_target), (LONGLONG)(_new_value), (LONGLONG)(_old_value)) == (LONGLONG)(_old_value))
 
#define as_cas_int8(_target, _old_value, _new_value)   (_InterlockedCompareExchange8((char volatile*)(_target), (char)(_new_value), (char)(_old_value)) == (char)(_old_value))
 
#define as_cas_uint16(_target, _old_value, _new_value)   (InterlockedCompareExchange16((short volatile*)(_target), (short)(_new_value), (short)(_old_value)) == (short)(_old_value))
 
#define as_cas_uint32(_target, _old_value, _new_value)   (InterlockedCompareExchange((LONG volatile*)(_target), (LONG)(_new_value), (LONG)(_old_value)) == (LONG)(_old_value))
 
#define as_cas_uint64(_target, _old_value, _new_value)   (InterlockedCompareExchange64((LONGLONG volatile*)(_target), (LONGLONG)(_new_value), (LONGLONG)(_old_value)) == (LONGLONG)(_old_value))
 
#define as_cas_uint8(_target, _old_value, _new_value)   (_InterlockedCompareExchange8((char volatile*)(_target), (char)(_new_value), (char)(_old_value)) == (char)(_old_value))
 
#define as_decr_int16(_target)   InterlockedDecrement16((short volatile*)(_target))
 
#define as_decr_int16_rls(_target)   InterlockedDecrement16((short volatile*)(_target))
 
#define as_decr_int32(_target)   InterlockedDecrement((LONG volatile*)(_target))
 
#define as_decr_int32_rls(_target)   InterlockedDecrement((LONG volatile*)(_target))
 
#define as_decr_int64(_target)   InterlockedDecrement64((LONGLONG volatile*)(_target))
 
#define as_decr_int64_rls(_target)   InterlockedDecrement64((LONGLONG volatile*)(_target))
 
#define as_decr_uint16(_target)   InterlockedDecrement16((short volatile*)(_target))
 
#define as_decr_uint16_rls(_target)   InterlockedDecrement16((short volatile*)(_target))
 
#define as_decr_uint32(_target)   InterlockedDecrement((LONG volatile*)(_target))
 
#define as_decr_uint32_rls(_target)   InterlockedDecrement((LONG volatile*)(_target))
 
#define as_decr_uint64(_target)   InterlockedDecrement64((LONGLONG volatile*)(_target))
 
#define as_decr_uint64_rls(_target)   InterlockedDecrement64((LONGLONG volatile*)(_target))
 
#define as_faa_int32(_target, _value)   InterlockedExchangeAdd((LONG volatile*)(_target), _value)
 
#define as_faa_int64(_target, _value)   InterlockedExchangeAdd64((LONGLONG volatile*)(_target), _value)
 
#define as_faa_uint32(_target, _value)   (uint32_t)InterlockedExchangeAdd((LONG volatile*)(_target), _value)
 
#define as_faa_uint64(_target, _value)   (uint64_t)InterlockedExchangeAdd64((LONGLONG volatile*)(_target), _value)
 
#define as_fas_int16(_target, _value)   InterlockedExchange16((short volatile*)(_target), (LONG)(_value))
 
#define as_fas_int32(_target, _value)   InterlockedExchange((LONG volatile*)(_target), (LONG)(_value))
 
#define as_fas_int64(_target, _value)   InterlockedExchange64((LONGLONG volatile*)(_target), (LONGLONG)(_value))
 
#define as_fas_uint16(_target, _value)   (uint16_t)InterlockedExchange16((short volatile*)(_target), (LONG)(_value))
 
#define as_fas_uint32(_target, _value)   (uint32_t)InterlockedExchange((LONG volatile*)(_target), (LONG)(_value))
 
#define as_fas_uint64(_target, _value)   (uint64_t)InterlockedExchange64((LONGLONG volatile*)(_target), (LONGLONG)(_value))
 
#define as_fence_acq   MemoryBarrier
 
#define as_fence_rls   MemoryBarrier
 
#define as_fence_rlx   MemoryBarrier
 
#define as_fence_seq   MemoryBarrier
 
#define as_incr_int16(_target)   InterlockedIncrement16((short volatile*)(_target))
 
#define as_incr_int16_rls(_target)   InterlockedIncrement16((short volatile*)(_target))
 
#define as_incr_int32(_target)   InterlockedIncrement((LONG volatile*)(_target))
 
#define as_incr_int32_rls(_target)   InterlockedIncrement((LONG volatile*)(_target))
 
#define as_incr_int64(_target)   InterlockedIncrement64((LONGLONG volatile*)(_target))
 
#define as_incr_int64_rls(_target)   InterlockedIncrement64((LONGLONG volatile*)(_target))
 
#define as_incr_uint16(_target)   InterlockedIncrement16((short volatile*)(_target))
 
#define as_incr_uint16_rls(_target)   InterlockedIncrement16((short volatile*)(_target))
 
#define as_incr_uint32(_target)   InterlockedIncrement((LONG volatile*)(_target))
 
#define as_incr_uint32_rls(_target)   InterlockedIncrement((LONG volatile*)(_target))
 
#define as_incr_uint64(_target)   InterlockedIncrement64((LONGLONG volatile*)(_target))
 
#define as_incr_uint64_rls(_target)   InterlockedIncrement64((LONGLONG volatile*)(_target))
 
#define as_load_int16(_target)   (*(int16_t volatile*)(_target))
 
#define as_load_int16_acq(_target)   (*(int16_t volatile*)(_target))
 
#define as_load_int32(_target)   (*(int32_t volatile*)(_target))
 
#define as_load_int32_acq(_target)   (*(int32_t volatile*)(_target))
 
#define as_load_int64(_target)   (*(int64_t volatile*)(_target))
 
#define as_load_int64_acq(_target)   (*(int64_t volatile*)(_target))
 
#define as_load_int8(_target)   (*(int8_t volatile*)(_target))
 
#define as_load_int8_acq(_target)   (*(int8_t volatile*)(_target))
 
#define as_load_ptr(_target)   (*(void volatile**)(_target))
 
#define as_load_ptr_acq(_target)   (*(void volatile**)(_target))
 
#define as_load_uint16(_target)   (*(uint16_t volatile*)(_target))
 
#define as_load_uint16_acq(_target)   (*(uint16_t volatile*)(_target))
 
#define as_load_uint32(_target)   (*(uint32_t volatile*)(_target))
 
#define as_load_uint32_acq(_target)   (*(uint32_t volatile*)(_target))
 
#define as_load_uint64(_target)   (*(uint64_t volatile*)(_target))
 
#define as_load_uint64_acq(_target)   (*(uint64_t volatile*)(_target))
 
#define as_load_uint8(_target)   (*(uint8_t volatile*)(_target))
 
#define as_load_uint8_acq(_target)   (*(uint8_t volatile*)(_target))
 
#define as_spinlock_destroy(_s)   ((void)_s)
 
#define AS_SPINLOCK_INIT   { 0 }
 
#define as_spinlock_init(_s)   *(_s) = 0
 
#define as_store_int16(_target, _value)   *(int16_t volatile*)(_target) = _value
 
#define as_store_int16_rls(_target, _value)   *(int16_t volatile*)(_target) = _value
 
#define as_store_int32(_target, _value)   *(int32_t volatile*)(_target) = _value
 
#define as_store_int32_rls(_target, _value)   *(int32_t volatile*)(_target) = _value
 
#define as_store_int64(_target, _value)   *(int64_t volatile*)(_target) = _value
 
#define as_store_int64_rls(_target, _value)   *(int64_t volatile*)(_target) = _value
 
#define as_store_int8(_target, _value)   *(int8_t volatile*)(_target) = _value
 
#define as_store_int8_rls(_target, _value)   *(int8_t volatile*)(_target) = _value
 
#define as_store_ptr(_target, _value)   *(void volatile**)(_target) = _value
 
#define as_store_ptr_rls(_target, _value)   *(void volatile**)(_target) = _value
 
#define as_store_uint16(_target, _value)   *(uint16_t volatile*)(_target) = _value
 
#define as_store_uint16_rls(_target, _value)   *(uint16_t volatile*)(_target) = _value
 
#define as_store_uint32(_target, _value)   *(uint32_t volatile*)(_target) = _value
 
#define as_store_uint32_rls(_target, _value)   *(uint32_t volatile*)(_target) = _value
 
#define as_store_uint64(_target, _value)   *(uint64_t volatile*)(_target) = _value
 
#define as_store_uint64_rls(_target, _value)   *(uint64_t volatile*)(_target) = _value
 
#define as_store_uint8(_target, _value)   *(uint8_t volatile*)(_target) = _value
 
#define as_store_uint8_rls(_target, _value)   *(uint8_t volatile*)(_target) = _value
 
#define as_swlock_destroy(_s)   ((void)_s)
 
#define AS_SWLOCK_INIT   { 0 }
 
#define as_swlock_init(_s)   (_s) = 0
 
#define AS_SWLOCK_LATCH_BIT   (1 << 30)
 
#define AS_SWLOCK_READER_MASK   (UINT32_MAX ^ AS_SWLOCK_WRITER_MASK)
 
#define AS_SWLOCK_WRITER_BIT   (1 << 31)
 
#define AS_SWLOCK_WRITER_MASK   (AS_SWLOCK_LATCH_BIT | AS_SWLOCK_WRITER_BIT)
 
#define WIN32_LEAN_AND_MEAN
 

Typedefs

typedef uint32_t as_spinlock
 
typedef uint32_t as_swlock
 

Functions

static bool as_setmax_uint32 (uint32_t *target, uint32_t x)
 
static bool as_setmax_uint64 (uint64_t *target, uint64_t x)
 
static void as_spinlock_lock (as_spinlock *lock)
 
static void as_spinlock_unlock (as_spinlock *lock)
 
static void as_swlock_read_lock (as_swlock *lock)
 
static void as_swlock_read_unlock (as_swlock *lock)
 
static void as_swlock_write_lock (as_swlock *lock)
 
static void as_swlock_write_unlock (as_swlock *lock)
 

Macro Definition Documentation

#define as_aaf_int32 (   _target,
  _value 
)    InterlockedAdd((LONG volatile*)(_target), _value)

Definition at line 196 of file as_atomic_win.h.

#define as_aaf_int32_rls (   _target,
  _value 
)    InterlockedAdd((LONG volatile*)(_target), _value)

Definition at line 210 of file as_atomic_win.h.

#define as_aaf_int64 (   _target,
  _value 
)    InterlockedAdd64((LONGLONG volatile*)(_target), _value)

Definition at line 190 of file as_atomic_win.h.

#define as_aaf_int64_rls (   _target,
  _value 
)    InterlockedAdd64((LONGLONG volatile*)(_target), _value)

Definition at line 204 of file as_atomic_win.h.

#define as_aaf_uint32 (   _target,
  _value 
)    (uint32_t)InterlockedAdd((LONG volatile*)(_target), _value)

Definition at line 193 of file as_atomic_win.h.

#define as_aaf_uint32_rls (   _target,
  _value 
)    (uint32_t)InterlockedAdd((LONG volatile*)(_target), _value)

Definition at line 207 of file as_atomic_win.h.

#define as_aaf_uint64 (   _target,
  _value 
)    (uint64_t)InterlockedAdd64((LONGLONG volatile*)(_target), _value)

Definition at line 187 of file as_atomic_win.h.

#define as_aaf_uint64_rls (   _target,
  _value 
)    (uint64_t)InterlockedAdd64((LONGLONG volatile*)(_target), _value)

Definition at line 201 of file as_atomic_win.h.

#define as_add_int32 (   _target,
  _value 
)    InterlockedExchangeAdd((LONG volatile*)(_target), _value)

Definition at line 232 of file as_atomic_win.h.

#define as_add_int64 (   _target,
  _value 
)    InterlockedExchangeAdd64((LONGLONG volatile*)(_target), _value)

Definition at line 226 of file as_atomic_win.h.

#define as_add_uint32 (   _target,
  _value 
)    InterlockedExchangeAdd((LONG volatile*)(_target), _value)

Definition at line 229 of file as_atomic_win.h.

#define as_add_uint64 (   _target,
  _value 
)    InterlockedExchangeAdd64((LONGLONG volatile*)(_target), _value)

Definition at line 223 of file as_atomic_win.h.

#define as_cas_int16 (   _target,
  _old_value,
  _new_value 
)    (InterlockedCompareExchange16((short volatile*)(_target), (short)(_new_value), (short)(_old_value)) == (short)(_old_value))

Definition at line 364 of file as_atomic_win.h.

#define as_cas_int32 (   _target,
  _old_value,
  _new_value 
)    (InterlockedCompareExchange((LONG volatile*)(_target), (LONG)(_new_value), (LONG)(_old_value)) == (LONG)(_old_value))

Definition at line 358 of file as_atomic_win.h.

#define as_cas_int64 (   _target,
  _old_value,
  _new_value 
)    (InterlockedCompareExchange64((LONGLONG volatile*)(_target), (LONGLONG)(_new_value), (LONGLONG)(_old_value)) == (LONGLONG)(_old_value))

Definition at line 352 of file as_atomic_win.h.

#define as_cas_int8 (   _target,
  _old_value,
  _new_value 
)    (_InterlockedCompareExchange8((char volatile*)(_target), (char)(_new_value), (char)(_old_value)) == (char)(_old_value))

Definition at line 370 of file as_atomic_win.h.

#define as_cas_uint16 (   _target,
  _old_value,
  _new_value 
)    (InterlockedCompareExchange16((short volatile*)(_target), (short)(_new_value), (short)(_old_value)) == (short)(_old_value))

Definition at line 361 of file as_atomic_win.h.

#define as_cas_uint32 (   _target,
  _old_value,
  _new_value 
)    (InterlockedCompareExchange((LONG volatile*)(_target), (LONG)(_new_value), (LONG)(_old_value)) == (LONG)(_old_value))

Definition at line 355 of file as_atomic_win.h.

#define as_cas_uint64 (   _target,
  _old_value,
  _new_value 
)    (InterlockedCompareExchange64((LONGLONG volatile*)(_target), (LONGLONG)(_new_value), (LONGLONG)(_old_value)) == (LONGLONG)(_old_value))

Definition at line 349 of file as_atomic_win.h.

#define as_cas_uint8 (   _target,
  _old_value,
  _new_value 
)    (_InterlockedCompareExchange8((char volatile*)(_target), (char)(_new_value), (char)(_old_value)) == (char)(_old_value))

Definition at line 367 of file as_atomic_win.h.

#define as_decr_int16 (   _target)    InterlockedDecrement16((short volatile*)(_target))

Definition at line 300 of file as_atomic_win.h.

#define as_decr_int16_rls (   _target)    InterlockedDecrement16((short volatile*)(_target))

Definition at line 320 of file as_atomic_win.h.

#define as_decr_int32 (   _target)    InterlockedDecrement((LONG volatile*)(_target))

Definition at line 294 of file as_atomic_win.h.

#define as_decr_int32_rls (   _target)    InterlockedDecrement((LONG volatile*)(_target))

Definition at line 314 of file as_atomic_win.h.

#define as_decr_int64 (   _target)    InterlockedDecrement64((LONGLONG volatile*)(_target))

Definition at line 288 of file as_atomic_win.h.

#define as_decr_int64_rls (   _target)    InterlockedDecrement64((LONGLONG volatile*)(_target))

Definition at line 308 of file as_atomic_win.h.

#define as_decr_uint16 (   _target)    InterlockedDecrement16((short volatile*)(_target))

Definition at line 297 of file as_atomic_win.h.

#define as_decr_uint16_rls (   _target)    InterlockedDecrement16((short volatile*)(_target))

Definition at line 317 of file as_atomic_win.h.

#define as_decr_uint32 (   _target)    InterlockedDecrement((LONG volatile*)(_target))

Definition at line 291 of file as_atomic_win.h.

#define as_decr_uint32_rls (   _target)    InterlockedDecrement((LONG volatile*)(_target))

Definition at line 311 of file as_atomic_win.h.

#define as_decr_uint64 (   _target)    InterlockedDecrement64((LONGLONG volatile*)(_target))

Definition at line 285 of file as_atomic_win.h.

#define as_decr_uint64_rls (   _target)    InterlockedDecrement64((LONGLONG volatile*)(_target))

Definition at line 305 of file as_atomic_win.h.

#define as_faa_int32 (   _target,
  _value 
)    InterlockedExchangeAdd((LONG volatile*)(_target), _value)

Definition at line 176 of file as_atomic_win.h.

#define as_faa_int64 (   _target,
  _value 
)    InterlockedExchangeAdd64((LONGLONG volatile*)(_target), _value)

Definition at line 170 of file as_atomic_win.h.

#define as_faa_uint32 (   _target,
  _value 
)    (uint32_t)InterlockedExchangeAdd((LONG volatile*)(_target), _value)

Definition at line 173 of file as_atomic_win.h.

#define as_faa_uint64 (   _target,
  _value 
)    (uint64_t)InterlockedExchangeAdd64((LONGLONG volatile*)(_target), _value)

Definition at line 167 of file as_atomic_win.h.

#define as_fas_int16 (   _target,
  _value 
)    InterlockedExchange16((short volatile*)(_target), (LONG)(_value))

Definition at line 342 of file as_atomic_win.h.

#define as_fas_int32 (   _target,
  _value 
)    InterlockedExchange((LONG volatile*)(_target), (LONG)(_value))

Definition at line 336 of file as_atomic_win.h.

#define as_fas_int64 (   _target,
  _value 
)    InterlockedExchange64((LONGLONG volatile*)(_target), (LONGLONG)(_value))

Definition at line 330 of file as_atomic_win.h.

#define as_fas_uint16 (   _target,
  _value 
)    (uint16_t)InterlockedExchange16((short volatile*)(_target), (LONG)(_value))

Definition at line 339 of file as_atomic_win.h.

#define as_fas_uint32 (   _target,
  _value 
)    (uint32_t)InterlockedExchange((LONG volatile*)(_target), (LONG)(_value))

Definition at line 333 of file as_atomic_win.h.

#define as_fas_uint64 (   _target,
  _value 
)    (uint64_t)InterlockedExchange64((LONGLONG volatile*)(_target), (LONGLONG)(_value))

Definition at line 327 of file as_atomic_win.h.

#define as_fence_acq   MemoryBarrier

Definition at line 381 of file as_atomic_win.h.

#define as_fence_rls   MemoryBarrier

Definition at line 384 of file as_atomic_win.h.

#define as_fence_rlx   MemoryBarrier

Definition at line 387 of file as_atomic_win.h.

#define as_fence_seq   MemoryBarrier

Definition at line 390 of file as_atomic_win.h.

#define as_incr_int16 (   _target)    InterlockedIncrement16((short volatile*)(_target))

Definition at line 258 of file as_atomic_win.h.

#define as_incr_int16_rls (   _target)    InterlockedIncrement16((short volatile*)(_target))

Definition at line 278 of file as_atomic_win.h.

#define as_incr_int32 (   _target)    InterlockedIncrement((LONG volatile*)(_target))

Definition at line 252 of file as_atomic_win.h.

#define as_incr_int32_rls (   _target)    InterlockedIncrement((LONG volatile*)(_target))

Definition at line 272 of file as_atomic_win.h.

#define as_incr_int64 (   _target)    InterlockedIncrement64((LONGLONG volatile*)(_target))

Definition at line 246 of file as_atomic_win.h.

#define as_incr_int64_rls (   _target)    InterlockedIncrement64((LONGLONG volatile*)(_target))

Definition at line 266 of file as_atomic_win.h.

#define as_incr_uint16 (   _target)    InterlockedIncrement16((short volatile*)(_target))

Definition at line 255 of file as_atomic_win.h.

#define as_incr_uint16_rls (   _target)    InterlockedIncrement16((short volatile*)(_target))

Definition at line 275 of file as_atomic_win.h.

#define as_incr_uint32 (   _target)    InterlockedIncrement((LONG volatile*)(_target))

Definition at line 249 of file as_atomic_win.h.

#define as_incr_uint32_rls (   _target)    InterlockedIncrement((LONG volatile*)(_target))

Definition at line 269 of file as_atomic_win.h.

#define as_incr_uint64 (   _target)    InterlockedIncrement64((LONGLONG volatile*)(_target))

Definition at line 243 of file as_atomic_win.h.

#define as_incr_uint64_rls (   _target)    InterlockedIncrement64((LONGLONG volatile*)(_target))

Definition at line 263 of file as_atomic_win.h.

#define as_load_int16 (   _target)    (*(int16_t volatile*)(_target))

Definition at line 65 of file as_atomic_win.h.

#define as_load_int16_acq (   _target)    (*(int16_t volatile*)(_target))

Definition at line 94 of file as_atomic_win.h.

#define as_load_int32 (   _target)    (*(int32_t volatile*)(_target))

Definition at line 59 of file as_atomic_win.h.

#define as_load_int32_acq (   _target)    (*(int32_t volatile*)(_target))

Definition at line 88 of file as_atomic_win.h.

#define as_load_int64 (   _target)    (*(int64_t volatile*)(_target))

Definition at line 53 of file as_atomic_win.h.

#define as_load_int64_acq (   _target)    (*(int64_t volatile*)(_target))

Definition at line 82 of file as_atomic_win.h.

#define as_load_int8 (   _target)    (*(int8_t volatile*)(_target))

Definition at line 71 of file as_atomic_win.h.

#define as_load_int8_acq (   _target)    (*(int8_t volatile*)(_target))

Definition at line 100 of file as_atomic_win.h.

#define as_load_ptr (   _target)    (*(void volatile**)(_target))

Definition at line 47 of file as_atomic_win.h.

#define as_load_ptr_acq (   _target)    (*(void volatile**)(_target))

Definition at line 76 of file as_atomic_win.h.

#define as_load_uint16 (   _target)    (*(uint16_t volatile*)(_target))

Definition at line 62 of file as_atomic_win.h.

#define as_load_uint16_acq (   _target)    (*(uint16_t volatile*)(_target))

Definition at line 91 of file as_atomic_win.h.

#define as_load_uint32 (   _target)    (*(uint32_t volatile*)(_target))

Definition at line 56 of file as_atomic_win.h.

#define as_load_uint32_acq (   _target)    (*(uint32_t volatile*)(_target))

Definition at line 85 of file as_atomic_win.h.

#define as_load_uint64 (   _target)    (*(uint64_t volatile*)(_target))

Definition at line 50 of file as_atomic_win.h.

#define as_load_uint64_acq (   _target)    (*(uint64_t volatile*)(_target))

Definition at line 79 of file as_atomic_win.h.

#define as_load_uint8 (   _target)    (*(uint8_t volatile*)(_target))

Definition at line 68 of file as_atomic_win.h.

#define as_load_uint8_acq (   _target)    (*(uint8_t volatile*)(_target))

Definition at line 97 of file as_atomic_win.h.

#define as_spinlock_destroy (   _s)    ((void)_s)

Definition at line 400 of file as_atomic_win.h.

#define AS_SPINLOCK_INIT   { 0 }

Definition at line 398 of file as_atomic_win.h.

#define as_spinlock_init (   _s)    *(_s) = 0

Definition at line 399 of file as_atomic_win.h.

#define as_store_int16 (   _target,
  _value 
)    *(int16_t volatile*)(_target) = _value

Definition at line 125 of file as_atomic_win.h.

#define as_store_int16_rls (   _target,
  _value 
)    *(int16_t volatile*)(_target) = _value

Definition at line 154 of file as_atomic_win.h.

#define as_store_int32 (   _target,
  _value 
)    *(int32_t volatile*)(_target) = _value

Definition at line 119 of file as_atomic_win.h.

#define as_store_int32_rls (   _target,
  _value 
)    *(int32_t volatile*)(_target) = _value

Definition at line 148 of file as_atomic_win.h.

#define as_store_int64 (   _target,
  _value 
)    *(int64_t volatile*)(_target) = _value

Definition at line 113 of file as_atomic_win.h.

#define as_store_int64_rls (   _target,
  _value 
)    *(int64_t volatile*)(_target) = _value

Definition at line 142 of file as_atomic_win.h.

#define as_store_int8 (   _target,
  _value 
)    *(int8_t volatile*)(_target) = _value

Definition at line 131 of file as_atomic_win.h.

#define as_store_int8_rls (   _target,
  _value 
)    *(int8_t volatile*)(_target) = _value

Definition at line 160 of file as_atomic_win.h.

#define as_store_ptr (   _target,
  _value 
)    *(void volatile**)(_target) = _value

Definition at line 107 of file as_atomic_win.h.

#define as_store_ptr_rls (   _target,
  _value 
)    *(void volatile**)(_target) = _value

Definition at line 136 of file as_atomic_win.h.

#define as_store_uint16 (   _target,
  _value 
)    *(uint16_t volatile*)(_target) = _value

Definition at line 122 of file as_atomic_win.h.

#define as_store_uint16_rls (   _target,
  _value 
)    *(uint16_t volatile*)(_target) = _value

Definition at line 151 of file as_atomic_win.h.

#define as_store_uint32 (   _target,
  _value 
)    *(uint32_t volatile*)(_target) = _value

Definition at line 116 of file as_atomic_win.h.

#define as_store_uint32_rls (   _target,
  _value 
)    *(uint32_t volatile*)(_target) = _value

Definition at line 145 of file as_atomic_win.h.

#define as_store_uint64 (   _target,
  _value 
)    *(uint64_t volatile*)(_target) = _value

Definition at line 110 of file as_atomic_win.h.

#define as_store_uint64_rls (   _target,
  _value 
)    *(uint64_t volatile*)(_target) = _value

Definition at line 139 of file as_atomic_win.h.

#define as_store_uint8 (   _target,
  _value 
)    *(uint8_t volatile*)(_target) = _value

Definition at line 128 of file as_atomic_win.h.

#define as_store_uint8_rls (   _target,
  _value 
)    *(uint8_t volatile*)(_target) = _value

Definition at line 157 of file as_atomic_win.h.

#define as_swlock_destroy (   _s)    ((void)_s)

Definition at line 428 of file as_atomic_win.h.

#define AS_SWLOCK_INIT   { 0 }

Definition at line 426 of file as_atomic_win.h.

#define as_swlock_init (   _s)    (_s) = 0

Definition at line 427 of file as_atomic_win.h.

#define AS_SWLOCK_LATCH_BIT   (1 << 30)

Definition at line 431 of file as_atomic_win.h.

#define AS_SWLOCK_READER_MASK   (UINT32_MAX ^ AS_SWLOCK_WRITER_MASK)

Definition at line 433 of file as_atomic_win.h.

#define AS_SWLOCK_WRITER_BIT   (1 << 31)

Definition at line 430 of file as_atomic_win.h.

#define AS_SWLOCK_WRITER_MASK   (AS_SWLOCK_LATCH_BIT | AS_SWLOCK_WRITER_BIT)

Definition at line 432 of file as_atomic_win.h.

#define WIN32_LEAN_AND_MEAN

Definition at line 25 of file as_atomic_win.h.

Typedef Documentation

typedef uint32_t as_spinlock

Definition at line 396 of file as_atomic_win.h.

typedef uint32_t as_swlock

Definition at line 424 of file as_atomic_win.h.

Function Documentation

static bool as_setmax_uint32 ( uint32_t *  target,
uint32_t  x 
)
inlinestatic

Definition at line 513 of file as_atomic_win.h.

References as_load_uint32.

static bool as_setmax_uint64 ( uint64_t *  target,
uint64_t  x 
)
inlinestatic

Definition at line 488 of file as_atomic_win.h.

References as_load_uint64.

static void as_spinlock_lock ( as_spinlock lock)
inlinestatic

Definition at line 403 of file as_atomic_win.h.

References as_fas_uint32, and as_load_uint32.

static void as_spinlock_unlock ( as_spinlock lock)
inlinestatic

Definition at line 414 of file as_atomic_win.h.

References as_store_uint32.

static void as_swlock_read_lock ( as_swlock lock)
inlinestatic
static void as_swlock_read_unlock ( as_swlock lock)
inlinestatic

Definition at line 477 of file as_atomic_win.h.

References as_decr_uint32.

static void as_swlock_write_lock ( as_swlock lock)
inlinestatic

Definition at line 436 of file as_atomic_win.h.

References as_load_uint32, AS_SWLOCK_READER_MASK, and AS_SWLOCK_WRITER_BIT.

static void as_swlock_write_unlock ( as_swlock lock)
inlinestatic

Definition at line 448 of file as_atomic_win.h.

References AS_SWLOCK_READER_MASK.