作者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