Rev | Line | |
---|
[176] | 1 | /* |
---|
| 2 | * swift_atomic.h |
---|
| 3 | * |
---|
| 4 | * (c) 2009 Ionut Rosoiu <ionut.rosoiu@gmail.com> |
---|
| 5 | * |
---|
| 6 | */ |
---|
| 7 | |
---|
| 8 | #ifndef SWIFT_ATOMIC_H_ |
---|
| 9 | #define SWIFT_ATOMIC_H_ |
---|
| 10 | |
---|
| 11 | #define SWIFT_ATOMIC_READ(x) \ |
---|
| 12 | (x) |
---|
| 13 | |
---|
| 14 | #define SWIFT_ATOMIC_WRITE(x, val) \ |
---|
| 15 | (x) = (val) |
---|
| 16 | |
---|
| 17 | #define SWIFT_ATOMIC_INCR(x) \ |
---|
| 18 | __sync_add_and_fetch(&(x), 1) |
---|
| 19 | |
---|
| 20 | #define SWIFT_ATOMIC_DECR(x) \ |
---|
| 21 | __sync_sub_and_fetch(&(x), 1) |
---|
| 22 | |
---|
| 23 | #define SWIFT_CAS(x, comp, val) \ |
---|
| 24 | __sync_bool_compare_and_swap((int*)&(x), (comp), (val)) |
---|
| 25 | |
---|
| 26 | #endif /* SWIFT_ATOMIC_H_ */ |
---|
Note: See
TracBrowser
for help on using the repository browser.