作者Hoare ()
看板LinuxDev
標題[問題] wait_event_interruptible
時間Sat Apr 30 00:39:20 2011
#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
1F:推 yuskeb:問一下 呼叫schedule()時就有機會把控制權交出去了 是嗎? 04/30 00:55
2F:推 littlejohn:沒錯 05/01 08:33
3F:推 eleghost:不是在prepare_to_wait()就blocking了嗎,cpu就出去了吧 06/10 23:06