linux原子操作

原创 2012年03月27日 17:34:28

原子操作指的是在执行过程中不会被别的代码路径所中断的操作,下面列出原子操作相关的函数

1.void atomic_set(atomic_t  *v,int  i); //设置原子变量的值为i

2.atomic_t  v = ATOMIC_INIT(0); //定义原子变量V并初始化为0

3.atomic_read(atomic_t  *v); //返回原子变量的值

4.void  atomic_add(int  i,atomic_t  *v); //原子变量增加i

5.void  atomic_sub(int  i,atomic_t  *v); //原子变量减少i

6.void  atomic_inc(atomic_t  *v); //原子变量增加1

7.void  atomic_idec(atomic_t  *v); //原子变量减少1

8.int  atomic_inc_and_test(atomic_t  *v); //原子变量执行自增后测试其是否为0,0则返回true

9.int  atomic_dec_and_test(atomic_t  *v); //原子变量执行自减后测试其是否为0,0则返回true

10.int  atomic_sub_and_test(int  i,atomic_t  *v); //原子变量执行减i后测试其是否为0,0则返回true

11.int  atomic_add_return(int  i,atomic_t  *v); //原子变量执行加i,并返回新值

12.int  atomic_sub_return(int  i,atomic_t  *v); //原子变量执行减i,并返回新值

13.int  atomic_inc_return(atomic_t  *v); //原子变量执行自增,并返回新值

14.int  atomic_dec_return(atomic_t  *v); //原子变量执行自减,并返回新值

 

15.void  set_bit(nr,void  *addr); //设置addr地址的第nr位(写1)

16.void  clear_bit(nr,void  *addr); //清除addr地址的第nr位(写0)

17.void  change_bit(nr,void  *addr); //对addr地址的第nr位进行反置

18.test_bit(nr,void  *addr); //返回addr地址的第nr位

19.int  test_and_set_bit(nr,void  *addr);  //18+15

20.int  test_and_clear_bit(nr,void  *addr);  //18+16

21.int  test_and_change_bit(nr,void  *addr);  //18+17

 

Linux 互斥锁、原子操作实现原理

futex(快速用户区互斥的简称)是一个在Linux上实现锁定和构建高级抽象锁如信号量和POSIX互斥的基本工具。它们第一次出现在内核开发的2 5 7版;其语义在2 5 40固定下来,然后在2 6 x...

07-S3C2440驱动学习(一)嵌入式linux字符设备驱动-按键驱动程序之异步通知机制+原子操作+互斥信号量+阻塞与非阻塞+定时器去抖

一、异步通知机制 从按键的实现方式来说,可以分为以下几种方式 查询方式,极度耗费CPU资源中断方式,平时休眠,按键按下,唤醒休眠poll机制,不需要一直read,根据poll返回值来决定是否rea...

linux 中的原子操作和内存屏蔽

很多人会问这样的问题,Linux内核中提供了各式各样的同步锁机制到底有何作用?追根到底其实是由于操作系统中存在多进程对共享资源的并发访问,从而引起了进程间的竞态。这其中包括了我们所熟知的SMP系统,多...

[Linux]互斥机制(中断屏蔽、原子操作、自旋锁、信号量)

基本概念 临界区 互斥机制 用户空间和内核空间 互斥机制 中断屏蔽、原子操作、自旋锁、信号量...
  • dearsq
  • dearsq
  • 2016年08月10日 19:16
  • 1268

linux内核部件之---原子性操作atomic_t

在任何处理器平台下,都会有一些原子性操作,供操作系统使用,我们这里只讲x86下面的。在单处理器情况下,每条指令的执行都是原子性的,但在多处理器情况下,只有那些单独的读操作或写操作才是原子性的。为了弥补...

Linux内核与驱动开发学习总结:原子操作实现(六)

处理器如何实现原子操作 32位IA-32处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。 1 处理器自动保证基本内存操作的原子性 首先处理器会自动保证基本的内存...
  • fenggui
  • fenggui
  • 2015年06月07日 11:59
  • 617

Linux原子操作及函数

所谓的原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就是说,它的最小的执行单位,不能有比它更小的执行单元,因此这里的原子实际是使用了物理学里物质微粒的概念。 原子操作需要...

Linux原子操作--Atomic Operations

转载自:高手进阶必读:Linux内核的同步机制-->原子操作 http://soft.yesky.com/os/lin/10/2303010.shtml        所谓原子操作,就是该操作绝不会...

学习笔记——操作系统_Linux原子操作

这篇摘录有关原子操作的说明,参考了以下的文章,并添加我的说明  http://blog.csdn.net/vividonly/article/details/6599502(针对原子操作解释的很全面...

arm驱动程序——按键程序6_互斥1—原子操作(韦东山的视频总结及针对linux-2.6.30)

互斥:指一个执行单元在访问共享资源的时候,其他的执行单元被禁止。 所谓的原子操作一般是由多步组成的操作,执行过程中不会被其它的代码操作打断,从而实现互斥。 用到的函数,结构体及其他: /*用于设置原...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux原子操作
举报原因:
原因补充:

(最多只允许输入30个字)