X-Git-Url: http://git.liburcu.org/?p=userspace-rcu.git;a=blobdiff_plain;f=urcu%2Fuatomic%2Fgeneric.h;h=4ef71c77604eb4b96ba7913b4268aef6a3618250;hp=04f4afd715800dd02446183d183c4f896de142c1;hb=121a3305861b8fd69e664e2914e854f3e4853687;hpb=ecf2edf639926ad2a7842ebe1e6c456cc106e4c0 diff --git a/urcu/uatomic/generic.h b/urcu/uatomic/generic.h index 04f4afd..4ef71c7 100644 --- a/urcu/uatomic/generic.h +++ b/urcu/uatomic/generic.h @@ -122,6 +122,9 @@ void _uatomic_and(void *addr, unsigned long val, (_uatomic_and((addr), \ caa_cast_long_keep_sign(v), \ sizeof(*(addr)))) +#define cmm_smp_mb__before_and() cmm_barrier() +#define cmm_smp_mb__after_and() cmm_barrier() + #endif /* uatomic_or */ @@ -159,8 +162,12 @@ void _uatomic_or(void *addr, unsigned long val, (_uatomic_or((addr), \ caa_cast_long_keep_sign(v), \ sizeof(*(addr)))) +#define cmm_smp_mb__before_or() cmm_barrier() +#define cmm_smp_mb__after_or() cmm_barrier() + #endif + /* uatomic_add_return */ #ifndef uatomic_add_return @@ -328,6 +335,9 @@ void _uatomic_and(void *addr, unsigned long val, int len) (_uatomic_and((addr), \ caa_cast_long_keep_sign(v), \ sizeof(*(addr)))) +#define cmm_smp_mb__before_and() cmm_barrier() +#define cmm_smp_mb__after_and() cmm_barrier() + #endif /* #ifndef uatomic_and */ #ifndef uatomic_or @@ -399,6 +409,9 @@ void _uatomic_or(void *addr, unsigned long val, int len) (_uatomic_or((addr), \ caa_cast_long_keep_sign(v), \ sizeof(*(addr)))) +#define cmm_smp_mb__before_or() cmm_barrier() +#define cmm_smp_mb__after_or() cmm_barrier() + #endif /* #ifndef uatomic_or */ #ifndef uatomic_add_return @@ -559,19 +572,27 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len) #ifndef uatomic_add #define uatomic_add(addr, v) (void)uatomic_add_return((addr), (v)) +#define cmm_smp_mb__before_add() cmm_barrier() +#define cmm_smp_mb__after_add() cmm_barrier() #endif #define uatomic_sub_return(addr, v) \ uatomic_add_return((addr), -(caa_cast_long_keep_sign(v))) #define uatomic_sub(addr, v) \ uatomic_add((addr), -(caa_cast_long_keep_sign(v))) +#define cmm_smp_mb__before_sub() cmm_smp_mb__before_add() +#define cmm_smp_mb__after_sub() cmm_smp_mb__after_add() #ifndef uatomic_inc #define uatomic_inc(addr) uatomic_add((addr), 1) +#define cmm_smp_mb__before_inc() cmm_smp_mb__before_add() +#define cmm_smp_mb__after_inc() cmm_smp_mb__after_add() #endif #ifndef uatomic_dec #define uatomic_dec(addr) uatomic_add((addr), -1) +#define cmm_smp_mb__before_dec() cmm_smp_mb__before_add() +#define cmm_smp_mb__after_dec() cmm_smp_mb__after_add() #endif #ifdef __cplusplus