为什么在Linux驱动程序中使用udelay()是不可靠的?

时间:2016-06-11 20:11:03

标签: linux driver scheduler

我的理解是udelay()不会阻止调度程序在压力情况下将CPU分配给更高优先级的任务。

但是,我认为,我对真实原因的了解有点浅薄,并且会对此有所了解。

1 个答案:

答案 0 :(得分:0)

请参阅delays - Information on the various kernel delay / sleep mechanisms

没有说udelay()是不可靠的,相反,它是原子上下文中的推荐方式,也是非原子上下文中微秒的休眠方式。 / p>

虽然你正确地说 udelay()不会阻止调度程序在压力情况下将CPU分配给更高优先级的任务,但它会通过忙等待而不是屈服来创建这样的压力从一开始就将CPU转换为其他(可能是相同的优先级)任务,这就是为什么建议不要延迟更长时间。