事件等待队列一般用于linux驱动的异步通信,也可以叫做申请设备使用权等待队列。当多个进程去操作一个设备时,这个时候一般要用到事件队列。
1、不可中断睡眠:
wait_event(queue, condition)
wait_event_interruptible(queue, condition)
两个函数只有在condition变为true才能唤醒,否则一直睡眠,即是调用wake_up()也不能唤醒。
2、可中断睡眠
wait_event_timeout(queue, condition, timeout)
wait_event_interruptible_timeout(queue, condition, timeout)
两个函数在condition变为true或wake_up_interruptible()被调用都能被唤醒。
3,唤醒函数:
void wake_up(wait_queue_head_t *queue); //唤醒所有
void wake_up_interruptible(wait_queue_head_t *queue); //唤醒interruptible