原子变量:
arch/arm/include/asm/atomic.h
定义并初始化
atomic_t v = ATOMIC_INIT(0);
写
void atomic_set(atomic_t *v, int i);
读
int atomic_read(atomic_t *v);
自增, 并返回新值是否为0
int atomic_inc_and_test(atomic_t *v);
自减, 并返回新值是否为0
int atomic_dec_and_test(atomic_t *v);
==========================================================
原子位:
arch/arm/include/asm/bitops.h:204
操作从地址p开始下标为nr(0 --> 0xffffffff)的位
void set_bit(unsigned int nr, unsigned long *p);
void clear_bit(unsigned int nr, unsigned long *p);
void change_bit(unsigned int nr, unsigned long *p);
int test_and_set_bit(unsigned int nr, unsigned long *p);
int test_and_clear_bit(unsigned int nr, unsigned long *p);
int test_and_change_bit(unsigned int nr, unsigned long *p);
test函数返回旧值
linux内核原子变量与原子位操作API
最新推荐文章于 2024-06-29 22:53:54 发布