问大家个 easy 问题?
在 spin_lock 执行 [lock] 到 [unlock] 期间,是不是不能执行 printk 啊?
我以前貌似在哪看过这样的论点,特来此确认一下.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在 spin_lock 执行 [lock] 到 [unlock] 期间,是不是不能执行 printk 啊?
我以前貌似在哪看过这样的论点,特来此确认一下.
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
我说得不一定对哈
1.原则上,spinlock保护的临界区代码都是短小的,比如操作一个链表,不过这是站在设计的角度来说
2.printk或许会引起睡眠.printk是把要打印的东西写到一个缓冲区中,然后看console_sem空不空闲,如果不空闲倒是直接返回了事,如果空闲的话就会调console driver去真正的'print',但是console是多种多样的,比如framebuffer console, serial console, network console等,不保证这些console driver不会有导致blocking call的地方.一旦blocking sleep,那么问题就来了,因为新调度起来的process或许又要去拿这把spinlock,肯定会死锁.
大家说话啊.
楼上能够说说原因么?
显然