Loading...
Searching...
No Matches
 
 
 
 
   12#define SPA_ATOMIC_CAS(v,ov,nv)                                         \ 
   14        __typeof__(v) __ov = (ov);                                      \ 
   15        __atomic_compare_exchange_n(&(v), &__ov, (nv),                  \ 
   16                        0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);         \ 
   19#define SPA_ATOMIC_DEC(s)               __atomic_sub_fetch(&(s), 1, __ATOMIC_SEQ_CST) 
   20#define SPA_ATOMIC_INC(s)               __atomic_add_fetch(&(s), 1, __ATOMIC_SEQ_CST) 
   21#define SPA_ATOMIC_LOAD(s)              __atomic_load_n(&(s), __ATOMIC_SEQ_CST) 
   22#define SPA_ATOMIC_STORE(s,v)           __atomic_store_n(&(s), (v), __ATOMIC_SEQ_CST) 
   23#define SPA_ATOMIC_XCHG(s,v)            __atomic_exchange_n(&(s), (v), __ATOMIC_SEQ_CST) 
   25#define SPA_SEQ_WRITE(s)                SPA_ATOMIC_INC(s) 
   26#define SPA_SEQ_WRITE_SUCCESS(s1,s2)    ((s1) + 1 == (s2) && ((s2) & 1) == 0) 
   28#define SPA_SEQ_READ(s)                 SPA_ATOMIC_LOAD(s) 
   29#define SPA_SEQ_READ_SUCCESS(s1,s2)     ((s1) == (s2) && ((s2) & 1) == 0)