linux驱动的并发控制和阻塞和非阻塞
来源:互联网 发布:仿真化学实验室软件 编辑:程序博客网 时间:2024/06/05 05:22
Linux设备驱动中的并发控制手段:
中断屏蔽,原子操作,自旋锁,信号量。
中断屏蔽:local_irq_save和local_irq_restore:前者表示禁止中断的操作(还保存当前CPU的中断信息)后者是使能中断
原子操作包括:atomic_set
自旋锁操作:初始化自旋锁spin_lock_init(),获取自旋锁spin_lock,释放自旋锁spin_unlock
为防止中断的干扰,自旋锁结合中断操作,形成了spin_lock_irqsave,spin_unlock_restore。
自旋锁主要用于临界区资源较小,使用资源较少的场合
信号量(semaphore)操作:信号量初始化seam_init(),也可以用init_MUTEX来定义一个互斥的信号量。
down()获取信号量,会导致睡眠(不能再中断中使用),释放信号量up()。
信号量会导致进程的睡眠,所以比起自旋锁的原地等待(CPU一直空转),他的应用场合需要临界资源占用时间较长。
Linux下设备驱动阻塞和非阻塞
等待队列的使用(采用阻塞和非阻塞)
int_waitqueue_head()初始化等待队列头,定义一个等待队列DECLARE_WAITQUEUE()
add_wait_queue()添加一个等待队列到等待队列头中。
等待时间wait_event(),wait_event_interruptible。
唤醒队列wake_up和wake_up_interruptible。
- linux驱动的并发控制和阻塞和非阻塞
- Linux阻塞和非阻塞
- linux设备驱动中的阻塞IO和非阻塞IO
- linux设备驱动中的阻塞和非阻塞I/O
- linux驱动--阻塞和非阻塞 I/O
- linux设备驱动中的阻塞和非阻塞IO
- linux设备驱动中的阻塞和非阻塞I/O
- Linux设备驱动中的阻塞和非阻塞I/0,
- Linux设备驱动中的阻塞和非阻塞I/O
- Linux设备驱动中的阻塞和非阻塞I/O
- Linux学习:驱动层实现阻塞和非阻塞
- linux驱动的阻塞与非阻塞
- Linux设备驱动中的阻塞与非阻塞IO与并发控制
- 阻塞和非阻塞
- 阻塞和非阻塞
- 阻塞和非阻塞
- 阻塞和非阻塞
- 阻塞和非阻塞
- GMF中,删除节点和连线的实现
- 关于javascript中的分号
- 关于把别人给的数据库直接导入成表
- javascript跨域问题小结(转载)
- Firworks 8之旅(二) 利用魔术棒来取图
- linux驱动的并发控制和阻塞和非阻塞
- Linux的rm命令
- Android ListView入门(二)
- 电子邮箱的判定方法
- 算法——穷举
- Windows下搭建QTCreator、minGW
- Powershell - Failed to enumerate SSL bindings, error code 234
- "_OBJC_CLASS_$_Play", referenced from:
- [IPhone开发]发送Http请求(POST GET)的方法 [IPhone开发]发送Http请求(POST GET)的方法