src/server/util/atomic.h

changeset 162
b169992137a8
parent 161
aadda87bad1b
child 444
96d2ba2f28db
equal deleted inserted replaced
161:aadda87bad1b 162:b169992137a8
31 31
32 #ifdef __cplusplus 32 #ifdef __cplusplus
33 extern "C" { 33 extern "C" {
34 #endif 34 #endif
35 35
36 #if defined(__gnu_linux__) || defined(WINDOWS) 36 #ifdef __gnu_linux__
37 37
38 #define ws_atomic_inc32(intptr) __sync_fetch_and_add(intptr, 1) 38 #define ws_atomic_inc32(intptr) __sync_fetch_and_add(intptr, 1)
39 #define ws_atomic_dec32(intptr) __sync_fetch_and_sub(intptr, 1) 39 #define ws_atomic_dec32(intptr) __sync_fetch_and_sub(intptr, 1)
40 #define ws_atomic_add32(intptr, val) __sync_fetch_and_add(intptr, val) 40 #define ws_atomic_add32(intptr, val) __sync_fetch_and_add(intptr, val)
41 #define ws_atomic_sub32(intptr, val) __sync_fetch_and_sub(intptr, val) 41 #define ws_atomic_sub32(intptr, val) __sync_fetch_and_sub(intptr, val)
49 #elif defined(BSD) 49 #elif defined(BSD)
50 #define ws_atomic_inc32(intptr) __sync_fetch_and_add(intptr, 1) 50 #define ws_atomic_inc32(intptr) __sync_fetch_and_add(intptr, 1)
51 #define ws_atomic_dec32(intptr) __sync_fetch_and_sub(intptr, 1) 51 #define ws_atomic_dec32(intptr) __sync_fetch_and_sub(intptr, 1)
52 #define ws_atomic_add32(intptr, val) __sync_fetch_and_add(intptr, val) 52 #define ws_atomic_add32(intptr, val) __sync_fetch_and_add(intptr, val)
53 #define ws_atomic_sub32(intptr, val) __sync_fetch_and_sub(intptr, va 53 #define ws_atomic_sub32(intptr, val) __sync_fetch_and_sub(intptr, va
54
55 #else 54 #else
56 // use atomic.h 55 // use atomic.h
57 #include <atomic.h> 56 #include <atomic.h>
58 57
59 #define ws_atomic_inc32(intptr) atomic_inc_32_nv(intptr) 58 #define ws_atomic_inc32(intptr) atomic_inc_32_nv(intptr)

mercurial