wait_event_interruptible_timeout和schedule_timeout的區別

來源:互聯網
上載者:User

一、適用情況
wait_event_interruptible_timeout和schedule_timeout的區別
當在某個硬體驅動程式中使用wait_event_interruptible_timeout時,執行的繼續可以通過以下兩種方式獲得:
1.其他人在等待隊列上調用了wake_up
2.逾時到期。
而調用schedule_timeout的進程始終會在逾時到期時被喚醒。
二、函數原型
wait_event_interruptible_timeout(queue, condition, timeout)
傳回值:
大於零:剩餘時間(以jiffy計)
零:給定的時間到期。
signed long schedule_timeout(signed long timeout);
傳回值:
零:正常傳回值
大於零:函數提前返回(比如響應某個訊號),傳回值為剩餘時間
三、使用執行個體
1.wait_event_interrruptible_timeout
(1)初始化等待隊列
int flags = 0;
wait_queue_head_t    select_wait;
init_waitqueue_head(&select_wait);
(2)等待事件的發生(條件滿足)
{
...
    wait_event_interruptible_timeout(select_wait, flags != 0, HZ/10);
...
}
(3)喚醒等待隊列
{
...
   if(waitqueue_active(&select_wait))
   {
       flags = 1;
       wake_up_interruptible( &nd->select_in_wait );
   }
...
}   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.