Linux 原子操作使用

原子操作就是指不能再进一步分割的操作,一般原子操作用于变量或者位操作。
 

1.包含头文件

#include <linux/atomic.h>

2.定义一个原子操作的全局变量

atomic_t lock;  /* 原子操作 */

3. 初始化原子变量 
    atomic_set(&gpioled.lock, 1); //向gpioled.lock写入数据1

4.原子操作使用

    /* 判断lock  
       ---使用atomic_dec_and_test函数从gpioled.lock减1,如果结果为0,就返回真;否则返回假
     */
    if(!atomic_dec_and_test(&gpioled.lock))  { /* 不能使用驱动 */
        atomic_inc(&gpioled.lock);  //给gpioled.lock加 1,也就是自增
        return -EBUSY;
    }
#if 0
    if(atomic_read(&gpioled.lock) <= 0) {  //读取gpioled.lock的值,并且返回。
        return -EBUSY;
    } else {
        atomic_dec(&gpioled.lock);
    }
#endif

5. 使用完释放原子操作

atomic_inc(&dev->lock);  /* 加一,释放驱动 */

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值