一、适用情况
wait_event_interruptible_timeout和schedule_timeout的区别 当在某个硬件驱动程序中使用wait_event_interruptible_timeout时,执行的继续可以通过以下两种方式获得: 1.其他人在等待队列上调用了wake_up 2.超时到期。 而调用schedule_timeout的进程始终会在超时到期时被唤醒。 二、函数原型 wait_event_interruptible_timeout(queue, condition, timeout) 返回值: 大于零:剩余时间(以jiffy计) 零:给定的时间到期。 signed long schedule_timeout(signed long timeout); 返回值: 零:正常返回值 大于零:函数提前返回(比如响应某个信号),返回值为剩余时间 三、使用实例 1.wait_event_interrruptible_timeout (1)初始化等待队列 int flags = 0; wait_queue_head_t select_wait; init_waitqueue_head(&select_wait); (2)等待事件的发生(条件满足) { ... wait_event_interruptible_timeout(select_wait, flags != 0, HZ/10); ... } (3)唤醒等待队列 { ... if(waitqueue_active(&select_wait)) { flags = 1; wake_up_interruptible( &nd->select_in_wait ); } ... } |
|
来自: lifei_szdz > 《linux内核》