免费注册 查看新帖 |

Chinaunix

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

[中断] printk实现疑惑 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-22 22:22 |只看该作者 |倒序浏览
截取printk的一段实现代码:
  1.     preempt_disable();
  2.     /* This stops the holder of console_sem just where we want him */
  3.     raw_local_irq_save(flags);
  4.     this_cpu = smp_processor_id();

  5.     /*
  6.      * Ouch, printk recursed into itself!
  7.      */
  8.     if (unlikely(printk_cpu == this_cpu)) {
  9.         /*
  10.          * If a crash is occurring during printk() on this CPU,
  11.          * then try to get the crash message out but make sure
  12.          * we can't deadlock. Otherwise just return to avoid the
  13.          * recursion and return - but flag the recursion so that
  14.          * it can be printed at the next appropriate moment:
  15.          */
  16.         if (!oops_in_progress) {
  17.             recursion_bug = 1;
  18.             goto out_restore_irqs;
  19.         }
  20.         zap_locks();
  21.     }
复制代码
里面有检测printk嵌套的判断。  但我比较疑惑这在什么情况下会发生? 因为一开始已经禁用了抢占和本地中断,printk如何嵌套?
我尝试了在printk中访问非法内存, 可惜串口直接挂死, 并未打印出   BUG: recent printk recursion!

论坛徽章:
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
2 [报告]
发表于 2014-07-23 08:04 |只看该作者
可以直接往串口写东西

论坛徽章:
0
3 [报告]
发表于 2014-07-23 13:02 |只看该作者
比如pirntk 触发串口写,串口驱动l里面又printk。

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
4 [报告]
发表于 2014-07-23 19:02 |只看该作者
同一个流程中的嵌套,不涉及调度。。。

论坛徽章:
0
5 [报告]
发表于 2016-07-12 10:52 |只看该作者
1. printk内部发生异常(比如bug或者内存硬件错误,关中断时异常还是可以响应的),bug后续代码又调用到了printk。
2. printk过程中(printk过程中会关中断的)发生fiq,比如有的系统的watchdog中断,后续也可能会调用到printk
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP