您的位置:首页 > 运维架构 > Linux

linux内核原子变量与原子位操作API

2016-04-29 10:53 661 查看
原子变量:
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函数返回旧值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: