src/server/util/atomic.h

changeset 444
96d2ba2f28db
parent 162
b169992137a8
equal deleted inserted replaced
443:ef3c8a0e1fee 444:96d2ba2f28db
34 #endif 34 #endif
35 35
36 #ifdef __gnu_linux__ 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) - 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)
42 42
43 #elif defined(OSX) 43 #elif defined(OSX)
44 #include <libkern/OSAtomic.h> 44 #include <libkern/OSAtomic.h>
46 #define ws_atomic_inc32(intptr) OSAtomicIncrement32((volatile int32_t *)intptr) 46 #define ws_atomic_inc32(intptr) OSAtomicIncrement32((volatile int32_t *)intptr)
47 #define ws_atomic_dec32(intptr) OSAtomicDecrement32((volatile int32_t *)intptr) 47 #define ws_atomic_dec32(intptr) OSAtomicDecrement32((volatile int32_t *)intptr)
48 48
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) - 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 #else 54 #else
55 // use atomic.h 55 // use atomic.h
56 #include <atomic.h> 56 #include <atomic.h>

mercurial