免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 28879 | 回复: 5

spin_lock_irqsave和spin_lock [复制链接]

论坛徽章:
0
发表于 2011-09-13 14:00 |显示全部楼层
始终没搞明白spin_lock_irqsave和spin_lock区别 ,谁能讲一下,谢谢

论坛徽章:
17
水瓶座
日期:2013-08-29 12:09:27白羊座
日期:2014-08-07 12:36:42丑牛
日期:2014-07-24 12:44:41寅虎
日期:2014-04-16 16:15:33寅虎
日期:2014-03-12 09:28:43摩羯座
日期:2014-03-06 13:22:04技术图书徽章
日期:2014-03-06 11:34:50天蝎座
日期:2014-01-09 11:31:44寅虎
日期:2013-12-27 17:01:44双子座
日期:2013-12-27 12:32:29双子座
日期:2013-12-25 09:03:33丑牛
日期:2013-12-24 16:18:44
发表于 2011-09-13 16:19 |显示全部楼层
个人理解,不一定正确:
spin_lock和spin_lock_irqsave的区别是是否关闭中断:spin_lock是直接获取锁,没拿到锁直接开始忙等;spin_lock_irqsave则是关闭中断,然后获取锁!
理解不足的地方希望高人补充排错:)

论坛徽章:
0
发表于 2011-09-13 17:41 |显示全部楼层
如果自旋锁在中断处理函数中被用到,那么在获取该锁之前需要关闭本地中断,spin_lock_irqsave 只是下列动作的一个便利接口:
1 保存本地中断状态
2 关闭本地中断
3 获取自旋锁

解锁时通过 spin_unlock_irqrestore完成释放锁、恢复本地中断到之前的状态等工作

还有一对 spin_lock_irq 和 spin_unlock_irq
如果你确定在获取锁之前本地中断是开启的,那么就不需要保存中断状态,解锁的时候直接将本地中断启用就可以啦

论坛徽章:
0
发表于 2011-09-21 16:50 |显示全部楼层
本帖最后由 vonnyfly 于 2011-09-21 16:56 编辑

回复 3# anbutu
恩,谢了。
还有一对 spin_lock_irq 和 spin_unlock_irq
如果你确定在获取锁之前本地中断是开启的,那么就不需要保存中断状态,解锁的时候直接将本地中断启用就可以啦

没看懂,本地中断开启,不保存状态,如果此时,还没来及处理怎么办呢。按照你的意思,本地中断关闭时才保存中断状态?

谢谢。

论坛徽章:
0
发表于 2011-09-21 19:44 |显示全部楼层
回复 2# asuka2001
spin_lock在忙等时候,如果被中断了,中断处理完成后,会接着忙等???

论坛徽章:
1
双子座
日期:2013-10-30 14:48:40
发表于 2011-09-21 23:05 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP