From 8763059c65b8e32493c777a7a3f170c214a7f2c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20O=2E=20Sel=C3=A5sdal?= Date: Tue, 2 Sep 2014 23:17:41 +0200 Subject: [PATCH] Atomic example, used to inspect assembly code.. --- test/atomic.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 test/atomic.c 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; +} + +