您的位置:首页 > 大数据 > 人工智能

wait_event_interruptible_timeout和schedule_timeout区别

2012-04-22 21:17 288 查看
一、适用情况

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 );

}

...

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: