Atomic example, used to inspect assembly code..
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user