wait_event()\wake_up order fails?

From: Muni Sekhar
Date: Thu Jun 16 2016 - 08:49:22 EST


Hi All,


I have a kernel thread THREAD_A and it waits for an event by calling
wait_event() API.

Other thread THREAD_B wakes up the THREAD_A by calling wake_up() API.

In a concurrent execution, what if the wake_up() is called before
THREAD_A entering into TASK_UNINTERRUPTIBLE sleep?


I have noticed in running long soak test, THREAD_A enters into
TASK_UNINTERRUPTIBLE sleep and THREAD_Bâs wake_up() not able to wake
the THREAD_A, what might be the reason for this?


I would like to know in which scenario wake_up() fails to wake the
sleeping thread?



--
Thanks,
Sekhar