スリープのルール
- スリープをさせてはいけないタイミングがある - スリープの最中に外で何があったかは仮定できない - スリープを誰が起こしてくれるのかを確認する
1. スリープをさせてはいけないタイミング
アトミックなコンテクストの実行中 割り込みを無効にしているとき
2. スリープの最中に何があったかは仮定できない
すべての待っていた条件(起きる条件)は起きた時点でチェックすること
3. スリープを誰が起こしてくれるのかを確認する
誰も起こしてくれなければ寝たまま
スリープの手順
1. 待ち列の初期化
DECLARE_WAIT_QUEUE_HEAD(name);
2. スリープ
wait_event_xxx(上記で指定した待ち列)
3. 起床
wake_up(上記で指定した待ち列)