[問題] wait_event_interruptible

看板LinuxDev作者時間14年前 (2011/04/30 00:39), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串1/1
#define __wait_event_interruptible (wq, condition, ret) \ do { \ DEFINE_WAIT (__wait); \ for (;;) { \ prepare_to_wait (&wq, &__wait, TASK_INTERRUPTIBLE); \ if (condition) \ break; \ if (!signal_pending(current)) { \ schedule (); \ continue; \ } \ ret = -ERESTARTSYS; \ break; \ } \ finish_wait(&wq, &__wait); \ } while (0) ----------------------------------------------------------------- 以上是wait_event_interruptible的原型, 這看起來是個無限迴圈,如果是處於單CPU 上的環境,而linux kernel是不可被搶先 (non-preemptive)的,所以迴圈會一直執行下去? 什麼時候cpu的控制權才會交出去? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.108.65

04/30 00:55, , 1F
問一下 呼叫schedule()時就有機會把控制權交出去了 是嗎?
04/30 00:55, 1F

05/01 08:33, , 2F
沒錯
05/01 08:33, 2F

06/10 23:06, , 3F
不是在prepare_to_wait()就blocking了嗎,cpu就出去了吧
06/10 23:06, 3F
文章代碼(AID): #1DkkcyU3 (LinuxDev)
文章代碼(AID): #1DkkcyU3 (LinuxDev)