Linux设备驱动程序 之 原子操作

Posted Alex

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux设备驱动程序 之 原子操作相关的知识,希望对你有一定的参考价值。

原子整数操作

当共享资源是一个简单的整数值时,可以使用内核提供的一种原子的整数类型,称为atomic_t,定义在<linux/types.h>中,操作定义在<linux/atomic.h>中;

 

技术图片

技术图片

原子位操作

内核提供了一组针对原子位进行操作的函数,它们与体系结构相关,定义在文件<asm/bitops.h>;即使是在SMP计算机上,这些函数均尅确保为原子的,因此能提供夸处理器的一致性;

真正的原子操作需要的是-所有中间结果都正确无误;假设有两个位操作,先对某位置位,然后清0,如果没有原子操作,那么这一位可能的确清0了,但是也可能根本没有置位;置位操作可能与清除操作同时发生,但是没有成功;清除操作可能成功了,这一位如愿呈现为清0;但是,有了原子操作,置位会真正的发生,可能有那么一刻,该操作显示所有置位,然后清除操作才执行,该位变为0了;

这种行为可能是重要的,尤其当顺序性开始起作用的时候,或者当操作寄存器的时候;

技术图片

以上是关于Linux设备驱动程序 之 原子操作的主要内容,如果未能解决你的问题,请参考以下文章

016_linux驱动之_原子操作

Linux设备驱动程序 之 休眠

同步互斥按键驱动

Linux 设备驱动的并发控

Linux 设备驱动的并发控

Linux 设备驱动的并发控