Files
libucore/test/atomic.c
T
2014-09-02 23:17:41 +02:00

51 lines
639 B
C

#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;
}