X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=urcu%2Fuatomic%2Fgeneric.h;h=bf7cc6aa05172b5072368ae381d60fc1aa31a6d3;hb=14b2b8b8b23d8bf89411ed532cbf9011041981c6;hp=337fe4098bf8337649f9a6bb52af4f9359453091;hpb=a2e7bf9ce5de5113c7f59c380b0087e291cd603d;p=urcu.git diff --git a/urcu/uatomic/generic.h b/urcu/uatomic/generic.h index 337fe40..bf7cc6a 100644 --- a/urcu/uatomic/generic.h +++ b/urcu/uatomic/generic.h @@ -98,20 +98,23 @@ void _uatomic_and(void *addr, unsigned long val, #ifdef UATOMIC_HAS_ATOMIC_BYTE case 1: __sync_and_and_fetch_1(addr, val); + return; #endif #ifdef UATOMIC_HAS_ATOMIC_SHORT case 2: __sync_and_and_fetch_2(addr, val); + return; #endif case 4: __sync_and_and_fetch_4(addr, val); + return; #if (CAA_BITS_PER_LONG == 64) case 8: __sync_and_and_fetch_8(addr, val); + return; #endif } _uatomic_link_error(); - return 0; } #define uatomic_and(addr, v) \ @@ -131,20 +134,24 @@ void _uatomic_or(void *addr, unsigned long val, #ifdef UATOMIC_HAS_ATOMIC_BYTE case 1: __sync_or_and_fetch_1(addr, val); + return; #endif #ifdef UATOMIC_HAS_ATOMIC_SHORT case 2: __sync_or_and_fetch_2(addr, val); + return; #endif case 4: __sync_or_and_fetch_4(addr, val); + return; #if (CAA_BITS_PER_LONG == 64) case 8: __sync_or_and_fetch_8(addr, val); + return; #endif } _uatomic_link_error(); - return 0; + return; } #define uatomic_or(addr, v) \ @@ -269,6 +276,8 @@ void _uatomic_and(void *addr, unsigned long val, int len) old = oldt; oldt = _uatomic_cmpxchg(addr, old, old & val, 1); } while (oldt != old); + + return; } #endif #ifdef UATOMIC_HAS_ATOMIC_SHORT @@ -292,6 +301,8 @@ void _uatomic_and(void *addr, unsigned long val, int len) old = oldt; oldt = _uatomic_cmpxchg(addr, old, old & val, 4); } while (oldt != old); + + return; } #if (CAA_BITS_PER_LONG == 64) case 8: @@ -303,15 +314,16 @@ void _uatomic_and(void *addr, unsigned long val, int len) old = oldt; oldt = _uatomic_cmpxchg(addr, old, old & val, 8); } while (oldt != old); + + return; } #endif } _uatomic_link_error(); - return 0; } #define uatomic_and(addr, v) \ - (uatomic_and((addr), \ + (_uatomic_and((addr), \ (unsigned long)(v), \ sizeof(*(addr)))) #endif /* #ifndef uatomic_and */ @@ -333,6 +345,8 @@ void _uatomic_or(void *addr, unsigned long val, int len) old = oldt; oldt = _uatomic_cmpxchg(addr, old, old | val, 1); } while (oldt != old); + + return; } #endif #ifdef UATOMIC_HAS_ATOMIC_SHORT @@ -345,6 +359,8 @@ void _uatomic_or(void *addr, unsigned long val, int len) old = oldt; oldt = _uatomic_cmpxchg(addr, old, old | val, 2); } while (oldt != old); + + return; } #endif case 4: @@ -356,6 +372,8 @@ void _uatomic_or(void *addr, unsigned long val, int len) old = oldt; oldt = _uatomic_cmpxchg(addr, old, old | val, 4); } while (oldt != old); + + return; } #if (CAA_BITS_PER_LONG == 64) case 8: @@ -367,17 +385,18 @@ void _uatomic_or(void *addr, unsigned long val, int len) old = oldt; oldt = _uatomic_cmpxchg(addr, old, old | val, 8); } while (oldt != old); + + return; } #endif } _uatomic_link_error(); - return 0; } #define uatomic_or(addr, v) \ - (uatomic_or((addr), \ - (unsigned long)(v), \ - sizeof(*(addr)))) + (_uatomic_or((addr), \ + (unsigned long)(v),\ + sizeof(*(addr)))) #endif /* #ifndef uatomic_or */ #ifndef uatomic_add_return