內核中,等待佇列怎么實作阻塞,求流程?
uj5u.com熱心網友回復:
1. 定義wait_queue_head_t資料結構a) struct __wait_queue_head
2. 初始化wait_queue_head_t
a) init_waitqueue_head(q);引數 q 是指標
3. 在需要阻塞的地方阻塞
wait_event(wq, condition);將行程切換為不可中斷的睡眠態
wait_event_interruptible(wq, condition) 將行程切換為可中斷的睡眠態
wait_event_timeout(wq, condition, timeout) 超時自動喚醒
wait_event_interruptible_timeout(wq, condition, timeout)
timeout 是jiffies的該變數
引數 wq 是wait_queue_head_t變數名
condition 條件碼 條件為真時,不阻塞 條件為假時實作阻塞
4. 在需要喚醒的地方喚醒
a) wake_up(x) 實作喚醒 條件為真時
b) wake_up_interruptible (x)
c) 引數x 為指標
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/102292.html
標籤:Qualcomm開發
下一篇:410c有幾種方式進行供電
