本文主要是介绍wait_event_interruptible说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
该函数用于在条件成立的情况下等待事件。具体代码如下所示:
#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)
这篇关于wait_event_interruptible说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!