Atomic example, used to inspect assembly code..

This commit is contained in:
Nils O. Selåsdal
2014-09-02 23:17:41 +02:00
parent f686c299a3
commit a27711e3bd
+50
View File
@@ -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;
}