http://blog.csdn.net/u013686019/article/details/78235624
ARM下的原子操作实现原理
本文的重点是学习C内嵌汇编的语法和ldrex/strex指令。
1、atomic_t类型定义
typedef struct {
int counter;
} atomic_t;
把整型原子操作定义为结构体,让原子函数只接收atomic_t类型的参数进而确保原子操作只与这种特殊类型数据一起使用,同时也保证了该类型的数据不会被传递给非原子函数。
2、定义并初始化一个atomic_t变量
atomic_t v = ATOMIC_INIT(0);#define ATOMIC_INIT(i) { (i) }
3、基本操作
atomic_inc(v); // 原子变量自增1atomic_dec(v); // 原子变量自减1
4、atomic_inc()函数的实现
static inline void atomic_inc(atomic_t *v){
atomic_add_return(1, v);
}
<