免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: cuibixiong_cu
打印 上一主题 下一主题

[中断] printk在执行过程中如果发生了NMI中断,并在NMI中也调用了printk,那会怎样?? [复制链接]

论坛徽章:
2
射手座
日期:2014-09-03 00:18:022015年辞旧岁徽章
日期:2015-03-03 16:54:15
11 [报告]
发表于 2014-08-27 12:05 |只看该作者
回复 10# Tinnal

static void zap_locks(void)
{
        static unsigned long oops_timestamp;

        if (time_after_eq(jiffies, oops_timestamp) &&
                        !time_after(jiffies, oops_timestamp + 30 * HZ))
                return;

        oops_timestamp = jiffies;

        /* If a crash is occurring, make sure we can't deadlock */
        spin_lock_init(&logbuf_lock);
        /* And make sure that we print immediately */
        init_MUTEX(&console_sem)
}
这段逻辑处理用意是:
如果发生了递归,而且是Oops的话,因为Oops打印信息比较重要,优先保证打印Oops信息,所以这里会重新初始化锁,保证后面可以拿到锁,
因为Oops打印的东西比较多,打印又比较慢,所以这里给Oops打印预留了30s时间,如果在30s内再次发生Oops且递归了,那么这里直接返回,不初始化锁;

如果上面理解正确,有2个问题
1,这里比较时间,如果满足了就直接return了,出去后会照样拿锁,绝对死锁;
2,oops_timestamp static类型不初始化时,默认值应该是0吧,第一次Oops进来时,如果jiffies刚好是0~30一个值,也是直接退出,死锁;


   

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
12 [报告]
发表于 2014-08-27 12:57 |只看该作者
从代码来看,是的。

论坛徽章:
2
射手座
日期:2014-09-03 00:18:022015年辞旧岁徽章
日期:2015-03-03 16:54:15
13 [报告]
发表于 2014-08-27 13:52 |只看该作者
回复 12# Tinnal

Tinny兄,请教一下,你每次都能找到问题相关的很多文章和讨论,怎么找到的,传授一下经验;谢谢


   

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
14 [报告]
发表于 2014-08-27 14:20 |只看该作者
google呀。把语言编好设为英文,关键字用英文。就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP