In the Linux driver design, the blocking and non-blocking wait queues can be used to implement process blocking. The waiting queue can be seen as the container for storing the process. When the process is blocked, put the process into the waiting queue. when the process is awakened, It is retrieved from the waiting queue. Wait queue operation www.2cto.com definition wait queue my_queue initialization wait queue init_waitqueue_head (& my_queue) Definition and initialization wait queue (my_queue) www.2cto.com conditional sleep wait_event (queue, condition) sleep until condition is true, otherwise the Process status is TASK_UNINTERRUPTIBLE sleep mode wait_event_interruptible (queue, condition) and sleep until condition is true, otherwise, the Process status is TASK_INTERRUPTIBLE sleep mode www.2cto.com waiting for the wake-up of the queue wake_up from the waiting queue to the stopped status, TASK_INTERRUPTIBLE, and all worker processes of TASK_KILLABLE wake up from the waiting queue