2009-01-15 68 views
1

我有一個內核模塊,通過read()向用戶態進程提供數據。該進程會阻止讀取,直到數據可用。我通過read方法中的wait_event_interruptible()來實現此目的。從tasklet中wake_up_interruptible()安全嗎?

數據來自一箇中斷處理程序,它將其吸收到內存中,然後調度一個tasklet來處理它。原始代碼調度tasklet,然後調用wake_up_interruptible()重新激活阻塞的讀取。但是,這會導致爭用條件,因爲在讀取嘗試將數據提供給用戶進程之前,可能無法處理數據。

所以問題是,將我的調用wake_up_interruptible()移動到tasklet的末尾是否安全?

回答