EpcTools
An event based multi-threaded C++ development framework.
Macros
eatomic.h File Reference

Macros for performing CPU atomic/interlaced operations. More...

Go to the source code of this file.

Macros

#define atomic_dec(a)   __sync_sub_and_fetch(&a, 1)
 atomic decrement - decrements a by 1 More...
 
#define atomic_inc(a)   __sync_add_and_fetch(&a, 1)
 atomic increment - increments a by 1 More...
 
#define atomic_dec_fetch(a)   __sync_sub_and_fetch(&a, 1)
 atomic decrement - decrements a by 1 More...
 
#define atomic_inc_fetch(a)   __sync_add_and_fetch(&a, 1)
 atomic increment - increments a by 1 More...
 
#define atomic_fetch_dec(a)   __sync_fetch_and_sub(&a, 1)
 atomic decrement - decrements a by 1 More...
 
#define atomic_fetch_inc(a)   __sync_fetch_and_add(&a, 1)
 atomic increment - increments a by 1 More...
 
#define atomic_cas(a, b, c)   __sync_val_compare_and_swap(&a, b, c)
 atomic compare and swap - if a equals b then a is replaced with c More...
 
#define atomic_swap(a, b)   __sync_lock_test_and_set(&a, b)
 atomic swap - replaces a with b More...
 
#define atomic_and(a, b)   __sync_fetch_and_and(&a, b)
 atomic and - performs a logical and between a and b putting the result in a More...
 
#define atomic_or(a, b)   __sync_fetch_and_or(&a, b)
 atomic or - performs a logical or between a and b putting the result in a More...
 
#define atomic_set(a, b)   __sync_lock_test_and_set(&a, b)
 atomic set - replaces a with b More...
 

Detailed Description

Macros for performing CPU atomic/interlaced operations.

Macro Definition Documentation

◆ atomic_and

#define atomic_and (   a,
 
)    __sync_fetch_and_and(&a, b)

atomic and - performs a logical and between a and b putting the result in a

◆ atomic_cas

#define atomic_cas (   a,
  b,
 
)    __sync_val_compare_and_swap(&a, b, c)

atomic compare and swap - if a equals b then a is replaced with c

◆ atomic_dec

#define atomic_dec (   a)    __sync_sub_and_fetch(&a, 1)

atomic decrement - decrements a by 1

◆ atomic_dec_fetch

#define atomic_dec_fetch (   a)    __sync_sub_and_fetch(&a, 1)

atomic decrement - decrements a by 1

◆ atomic_fetch_dec

#define atomic_fetch_dec (   a)    __sync_fetch_and_sub(&a, 1)

atomic decrement - decrements a by 1

◆ atomic_fetch_inc

#define atomic_fetch_inc (   a)    __sync_fetch_and_add(&a, 1)

atomic increment - increments a by 1

◆ atomic_inc

#define atomic_inc (   a)    __sync_add_and_fetch(&a, 1)

atomic increment - increments a by 1

◆ atomic_inc_fetch

#define atomic_inc_fetch (   a)    __sync_add_and_fetch(&a, 1)

atomic increment - increments a by 1

◆ atomic_or

#define atomic_or (   a,
 
)    __sync_fetch_and_or(&a, b)

atomic or - performs a logical or between a and b putting the result in a

◆ atomic_set

#define atomic_set (   a,
 
)    __sync_lock_test_and_set(&a, b)

atomic set - replaces a with b

◆ atomic_swap

#define atomic_swap (   a,
 
)    __sync_lock_test_and_set(&a, b)

atomic swap - replaces a with b