linux驱动之自旋锁(spinlock)
来源:互联网 发布:徐志雷ti7知乎 编辑:程序博客网 时间:2024/05/01 03:59
自旋锁是类似于信号量的,同样是对设备的访问进行干预,自旋锁是一个互斥的,只能是上锁后设备不可用,解锁后可用。当某一个设备被自旋锁锁定时,其他的进程需要访问设备时会进入一个忙循环的等待状态,知道设备的自旋锁释放后方可对设备进行访问。
在自旋锁锁住设备进行操作时,这些个操作一般都是比较简单,费时少,而且做到不要休眠,拥有自旋锁时禁止当前所用处理器上的CPU的中断。
具体用法是
1.包含
Spinlock.h (include\linux)2.初始化spinlock,当然你得先定义一个自旋锁,spinlock_t lock
#define spin_lock_init(_lock)\do {\spinlock_check(_lock);\raw_spin_lock_init(&(_lock)->rlock);\} while (0)3.上锁spin_lock_irqsave(lock, flags),其中flags是你定义的一个变量,这个函数会关闭当前处理器上(单核)所有的中断
#define spin_lock_irqsave(lock, flags)\do {\raw_spin_lock_irqsave(spinlock_check(lock), flags);\} while (0)4.解锁spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags)
static inline void spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags){<span style="white-space:pre"></span>raw_spin_unlock_irqrestore(&lock->rlock, flags);}这个是一般的用法,当然在tasklet中,需要我们将 spin_lock_irqsave(lock, flags),替换成spin_unlock_bh(spinlock_t *lock),以及解锁用spin_unlock_bh(&gact->tcf_lock);
0 0
- linux驱动之自旋锁(spinlock)
- 《Linux设备驱动开发详解》-- 自旋锁(spinlock)
- 线程同步之自旋锁(SpinLock)
- windows 多线程 之自旋锁(spinlock)
- Linux驱动之自旋锁、读写自旋锁
- 自旋锁spinlock
- 自旋锁 SpinLock
- 自旋锁spinlock
- 自旋锁 spinlock 理解
- 自旋锁(spinlock)
- Spinlock编程(自旋锁)
- 自旋锁(spinlock)
- 自旋锁spinlock
- 自旋锁spinlock
- 自旋锁(spinlock)
- spinlock自旋锁
- spinlock自旋锁
- 自旋锁(spinlock)
- CSU 1642 Problem B
- Convolutional neural network
- Java集合概述Set、List、Map
- eclipse在资源管理器中打开文件
- 数据存储&&文件读写
- linux驱动之自旋锁(spinlock)
- 结构型模式总结
- 数据结构 实践项目——数据结构、算法、程序设计
- Oracle11完全卸载方法
- python笔记9
- 3D图形渲染管线
- Cannot start server. Server instance is not configured.
- SIFT特征提取分析
- Hibernate懒加载异常的解决与深刻分析