diff --git a/test/atomic.c b/test/atomic.c new file mode 100644 index 0000000..6232ae0 --- /dev/null +++ b/test/atomic.c @@ -0,0 +1,50 @@ +#include "ucore/atomic.h" +UC_ATOMIC(unsigned int) i; + + +unsigned int get_i(void) +{ + return UC_ATOMIC_GET(&i); +} + +unsigned int inc_i(void) +{ + return UC_ATOMIC_INC(&i); +} + +unsigned int dec_i(void) +{ + return UC_ATOMIC_DEC(&i); +} + +unsigned int sub_i(unsigned int v) +{ + return UC_ATOMIC_SUB(&i, v); +} + +unsigned int add_i(unsigned int v) +{ + return UC_ATOMIC_ADD(&i, v); +} + +unsigned int get_i_membar() +{ + unsigned int r; + UC_MEM_BARRIER(); + r = i; + UC_MEM_BARRIER(); + + return r; +} + +unsigned int get_i_compbar() +{ + unsigned int r; + UC_COMPILER_BARRIER(); + r = i; + UC_COMPILER_BARRIER(); + + return r; +} + +