X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=tests%2Ftest_atomic.c;h=102012fe2429008cf28f9736ec1b074f7fa00c8f;hb=0fad128bbcd6f99f2a4ebbc976a76ef1e3155d1c;hp=bf847572815012be866ff9b921c85b97ace1aa0d;hpb=87322fe8f9e201f9018dba7dfcf786b932cd899c;p=urcu.git diff --git a/tests/test_atomic.c b/tests/test_atomic.c index bf84757..102012f 100644 --- a/tests/test_atomic.c +++ b/tests/test_atomic.c @@ -13,21 +13,32 @@ static struct testvals vals; #define do_test(ptr) \ do { \ - __typeof__(*ptr) v; \ + __typeof__(*(ptr)) v; \ \ atomic_add(ptr, 10); \ - assert(*ptr == 10); \ - atomic_add(ptr, -11); \ - assert(*ptr == (__typeof__(*ptr))-1U); \ - v = cmpxchg(ptr, -1, 22); \ - assert(*ptr == 22); \ - assert(v == (__typeof__(*ptr))-1U); \ + assert(atomic_read(ptr) == 10); \ + atomic_add(ptr, -11UL); \ + assert(atomic_read(ptr) == (__typeof__(*(ptr)))-1UL); \ + v = cmpxchg(ptr, -1UL, 22); \ + assert(atomic_read(ptr) == 22); \ + assert(v == (__typeof__(*(ptr)))-1UL); \ v = cmpxchg(ptr, 33, 44); \ - assert(*ptr == 22); \ + assert(atomic_read(ptr) == 22); \ assert(v == 22); \ v = xchg(ptr, 55); \ - assert(*ptr == 55); \ + assert(atomic_read(ptr) == 55); \ assert(v == 22); \ + atomic_set(ptr, 22); \ + atomic_inc(ptr); \ + assert(atomic_read(ptr) == 23); \ + atomic_dec(ptr); \ + assert(atomic_read(ptr) == 22); \ + v = atomic_add_return(ptr, 100); \ + assert(v == 122); \ + assert(atomic_read(ptr) == 122); \ + v = atomic_sub_return(ptr, 1); \ + assert(v == 121); \ + assert(atomic_read(ptr) == 121); \ } while (0) int main(int argc, char **argv)