设为首页 加入收藏

TOP

Linux 设备驱动 ====> 并发控制 --- 原子操作
2015-02-03 01:35:28 来源: 作者: 【 】 浏览:29
Tags:Linux 设备驱动 > 并发 控制 --- 原子 操作

原子操作


原子的操作指的就是在执行过程中不会被别的代码所中断的操作。


在Linux中原子操作的方法有很多,有整型原子和位原子,他们在任何情况下操作都是原子的,这些原子操作的实现都是依赖CPU来实现的,因此这些函数都与CPU架构密切相关。


整型原子


我们arm架构的原子实现在kernel/arch/arm/include/asm/atomic.h


1. 设置源自变量的值



上述操作对原子变量执行自增、自减和减操作后测试其是否为0,为-则返回true,否则返回false。


5. 操作并返回




位原子操作与整型雷同




举个例子---使用原子变量实现设备只能被一个进程打开。


我们写一个小小的应用程序,打开之前我们的字符设备,然后sleep 10秒钟,然后再close,



修改驱动代码如下



我们重新编译驱动,然后加载,并跟之前一样来测试,发现在打开之后还没关闭的时候,我们去cat会发生错误,提示设备忙。



原子的操作介绍到这里,结束。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux中的2>&1使用学习 下一篇Linux 设备驱动 ====> 字符驱动

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: