Linux Device Drivers 3rd Edition bookの例に従っています。
if (temp = = 0)
wake_up_interruptible_sync(&scull_w_wait); /* awake other uid's */
return 0;
著者は次のように述べています。
以下は、wake_up_interruptible_sync の呼び出しが理にかなっている例です。ウェイクアップを行うと、システムの自然なスケジューリング ポイントであるユーザー空間に戻ろうとしています。ウェイクアップを行うときに潜在的に再スケジュールするよりも、「同期」バージョンを呼び出してジョブを終了する方がよいでしょう。
wake_up_interruptible_sync
この状況で使用する方が良い理由がわかりません。著者は、この呼び出しが再スケジュールを防止することを示唆していますが (これは呼び出し内で防止されます)、リターンの後、別のスレッドがラインwake_up_interruptible_sync
の前にとにかく CPU を制御することはできませんでしたか?return 0
では、各呼び出しの後でスレッドが CPU を制御できる場合wake_up_interruptible_sync
、通常の呼び出しとの違いは何ですか?wake_up_interruptible