atomic_sub_return 不仅执行减操作,而且把相减的结果返回。它是通过atomic_add_return实现的。[cpp] view plaincopyprint? static inline int atomic_cmpxchg(atomic_t *v, int old, int new) { return cmpxchg(&v->counter, old, new); } #define cmpxchg(ptr, o, n) \ ((__typeof__(*(...
int atomic_add_negative(int i, atomic_t *v); 该函数对原子类型的变量v原子地增加I,并判断结果是否为负数,如果是,返回真,否则返回假。 int atomic_add_return(int i, atomic_t *v); 该函数对原子类型的变量v原子地增加i,并且返回指向v的指针。 int atomic_sub_return(int i, atomic_t *v); 该函...
static inline int atomic_add_return(int i, atomic_t *v) { unsigned long flags; int val; raw_local_irq_save(flags); val = v->counter; v->counter = val += i; raw_local_irq_restore(flags); return val; } #define atomic_add(i, v) (void) atomic_add_return(i, v) #endif (1)...
int atomic_add_negative(int i, atomic_t *v); 该函数对原子类型的变量v原子地增加I,并判断结果是否为负数,如果是,返回真,否则返回假。 int atomic_add_return(int i, atomic_t *v); 该函数对原子类型的变量v原子地增加i,并且返回指向v的指针。 int atomic_sub_return(int i, atomic_t *v); 该函...
int atomic_add_return(int i, atomic_t *v); 该函数对原子类型的变量v原子地增加i,并且返回指向v的指针。 int atomic_sub_return(int i, atomic_t *v); 该函数从原子类型的变量v中减去i,并且返回指向v的指针。 int atomic_inc_return(atomic_t * v); 该函数对原子类型的变量v原子地增加1并且返回指...
atomic_inc_return(); atomic_long_inc_return(); atomic_dec_return(); atomic_long_dec_return(); atomic_add_return(); atomic_long_add_return(); atomic_sub_return(); atomic_long_sub_return(); atomic_inc_and_test(); atomic_long_inc_and_test(); ...
int atomic_dec_and_test(atomic_t *v); int atomic_sub_and_test(int i, atomic_t *v); /*上述操作对原子变量执行自增、自减和减操作后(注意没有加),测试其是否为0,为0返回true,否 则返回false。*/ int atomic_add_return(int i, atomic_t *v); ...
在arm的指令集中,不存在指令前缀lock,那如何完成原子操作呢? Linux的源码中arm体系结构原子操作的定义文件为。 linux2.6/include/asm-arm/atomic.h 其中自加原子操作由函数atomic_add_return实现。 staticinline intatomic_add_return(int i,atomic_t*v){unsigned long tmp;int result;__asm___volatile__("@ ...
int atomic_sub_and_test(int i, atomic_t *v); 1. 2. 3. 上述操作对原子变量执行自增、自减和减操作后(注意没有加),测试其是否为0,为0返回true,否则返回false。 操作并返回: int atomic_add_return(int i, atomic_t *v); int atomic_sub_return(int i, atomic_t *v); ...
int atomic_add_return(int i, atomic_t *v);该函数对原子类型的变量v原子地增加i,并且返回指向v的指针。 int atomic_sub_return(int i, atomic_t *v);该函数从原子类型的变量v中减去i,并且返回指向v的指针。 int atomic_inc_return(atomic_t * v);该函数对原子类型的变量v原子地增加1并且返回指向v的...