msleep() 與mdelay()

在Linux Driver開發中,經常要用到延遲函數:msleep,mdelay/udelay.

雖然msleep和mdelay都有延遲的作用,但他們是有區別的.

mdelay是忙等待函數,在延遲過程中無法運行其他任務.這個延遲的時間是準確的.是需要等待多少時間就會真正等待多少時間.而msleep是休眠函數,它不涉及忙等待.你如果是msleep(10),那實際上延遲的時間,大部分時候是要多於10ms的,是個不定的時間值.

他們的差異,平時我也講的出來,可是真正用起來的時候,就忘記了.曾在兩個driver的i2c的code中,需要用到delay函數,而我用了msleep函數,一直I2C速度超慢.而我又不知道哪裏出了問題,我潛意識中,認爲我只delay了1ms,可是,實際上是十幾毫秒.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章