linux内核原子变量与原子位操作API-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

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

简介: 原子变量: 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); ...
原子变量:
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函数返回旧值

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章
最新文章
相关文章