wait_event_interruptible说明

来源:互联网 发布:阿里云搭梯子 编辑:程序博客网 时间:2024/06/05 17:48

该函数用于在条件成立的情况下等待事件。具体代码如下所示:

#define wait_event_interruptible(wq, condition)\({\int __ret = 0;\if (!(condition))\__wait_event_interruptible(wq, condition, __ret);\__ret;\})


显然,只有条件conidtion不成立的情况下才会进入实际的事件等待。

之后将调用函数__wait_event_interruptible,该函数宏定义,其源代码如下所示:

#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)


该宏定义的核心是调用的线程调度函数schedule。该函数将阻塞调度线程,知道条件condition满足时。

0 0
原创粉丝点击