---
# System prepended metadata

title: irq_disable v.s. preemt_disable

---

irq_disable v.s. preemt_disable
===

ref: kernel doc
https://www.kernel.org/doc/Documentation/preempt-locking.txt

ref: case study
http://www.ipshop.xyz/8279.html


1. 其實是可以用irq disable來隱含禁止搶佔，但要小心code path 不要去設置任何的搶佔event 或做sleep
2. 只使用preemt_disable，並不會關閉調度，所以中間還是可以睡眠
3. 有些lock實作中，會連續使用preemt_disable+irq_disable，順序很重要，因為在解lock的時候，要確保preemt_enable在irq enable的狀態下，這樣才能確保執行欲搶佔的task