免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2208 | 回复: 9
打印 上一主题 下一主题

[内核同步] 为何seqlock有irq版本? [复制链接]

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-03 17:48 |只看该作者 |倒序浏览
5可用积分
seqlock有irq版本,这样会导致问题吧?

因为可能还得try!

请大家指点,谢谢!

最佳答案

查看完整内容

回复 4# chishanmingshen (1)try与是否禁止中断没有直接的关系。(2)spin的trylock有irq版本

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
2 [报告]
发表于 2013-03-03 17:48 |只看该作者
回复 4# chishanmingshen
spin的trylock就没有irq版本,所以我觉得得try的都不能有irq版本!

(1)try与是否禁止中断没有直接的关系。
(2)spin的trylock有irq版本
  1. #define spin_trylock_irq(lock) \
  2. ({ \
  3.         local_irq_disable(); \
  4.         spin_trylock(lock) ? \
  5.         1 : ({ local_irq_enable(); 0;  }); \
  6. })
复制代码

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
3 [报告]
发表于 2013-03-03 20:09 |只看该作者
这些函数就像工具一样,怎么用是对的,怎么用是错的。那就看使用者了。一般的加锁都带有irq版本,就是为了方便

论坛徽章:
0
4 [报告]
发表于 2013-03-04 13:49 |只看该作者
为啥spinlock有带锁的版本?什么情况下用的上?呵呵。

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2013-03-04 15:49 |只看该作者
spin的trylock就没有irq版本,所以我觉得得try的都不能有irq版本!

请指点,没明白。。。

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2013-03-08 11:31 |只看该作者
请指点。。。啊。。。

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2013-03-08 14:24 |只看该作者
多谢!

看来ldd3过时了。。。

from ldd3:
There is also a set of nonblocking spinlock operations:
int spin_trylock(spinlock_t *lock);
int spin_trylock_bh(spinlock_t *lock);
These functions return nonzero on success (the lockwas obtained), 0 otherwise.
There is no “try” version that disables interrupts.



回复 6# 瀚海书香


   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
8 [报告]
发表于 2013-03-08 14:43 |只看该作者
回复 7# chishanmingshen
看来ldd3过时了。。。

书还是要看的,这是最基本的东西。大体上了解后(第一次不建议深究每一行代码),再结合最新的代码看你关注的部分。
   

论坛徽章:
0
9 [报告]
发表于 2013-03-08 15:43 |只看该作者
灌水菜鸟 发表于 2013-03-04 13:49
为啥spinlock有带锁的版本?什么情况下用的上?呵呵。

带锁是什么意思呢?请教~
spinlock是可以在中断上下文中使用的。

论坛徽章:
0
10 [报告]
发表于 2013-03-08 15:50 |只看该作者
本帖最后由 灌水菜鸟 于 2013-03-08 15:56 编辑

正如你所说:“spinlock是可以在中断上下文中使用的”。

设想:如果你这边普通上下文上锁了,还没等解锁呢中断触发了,然后中断上下文又要上同一把锁...

更正一下,不是“带锁“的版本,应该是带“中断”的版本,呵呵。本来就是锁,不能再带一把锁了,呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP