src/server/util/atomic.h

changeset 69
4a10bc0ee80d
parent 61
c858850f3d3a
child 109
8a0a7754f123
equal deleted inserted replaced
68:f5102a892ed4 69:4a10bc0ee80d
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)
42 42
43 #elif defined(OSX)
44 #include <libkern/OSAtomic.h>
45
46 #define ws_atomic_inc32(intptr) OSAtomicIncrement32((volatile int32_t *)intptr)
47 #define ws_atomic_dec32(intptr) OSAtomicDecrement32((volatile int32_t *)intptr)
48
49
43 #else 50 #else
44 // use atomic.h 51 // use atomic.h
45 #include <atomic.h> 52 #include <atomic.h>
46 53
47 #define ws_atomic_inc32(intptr) atomic_inc_32_nv(intptr) 54 #define ws_atomic_inc32(intptr) atomic_inc_32_nv(intptr)

mercurial