进程调度 中断

34 篇文章 0 订阅

BUG:scheduling while atomic

 

通过学习,发现在中断的回调中,如果调用msleep函数,会引起进程调度,这时就会警告:scheduling while atomic

 

其实如果调用其他可能导致中断进程睡眠的函数如:down_interruptible(),也会出现这样的问题。

 

内核检测到了这个问题,便给出了警告。

 

============================================

参考:http://ecdav.cuc.edu.cn/bbs/viewthread.php?tid=145

 

          在spin lock 期间,调用了可以睡眠的 down_interruptible()函数。内核检测到了这个问题,便给出了警告。

 

参考:http://bbs.chinaunix.net/thread-1939737-1-1.html

 

 

顾名思义,kmap_atomic和kunmap_atmoic之间是不允许调度的,而f_op->read()是有可能引起调度的。一旦发生调度的话就可能发生问题:
scheduling while atomic有几种case,比如:
1. 如果你抓了一把spinlock,然后被调度出去了,就可能会引起死锁的问题。
2. 就kmap_atomic和kunmap_atomic之间,不允许被调度出去,防止别的process也去调用kmap_atomic,如果交叉调用的话,就会出现问题了。

kernel打出warning只是提醒你,这样做可能会有问题,但是问题不一定现在就会发生。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值