wait_event_interruptible_timeout和schedule_timeout区别
2012-04-22 21:17
375 查看
一、适用情况
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 );
}
...
}
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 );
}
...
}
相关文章推荐
- wait_event_interruptible_timeout和schedule_timeout的区别
- wait_event_interruptible_timeout和schedule_timeout的区别
- wait_event_interruptible_timeout和schedule_timeout的区别
- linux内核--wait_event_interruptible_timeout()函数分析
- 【Linux设备驱动程序(第三版)】----延迟:超时(wait_event_interruptible_timeout)
- wait_event_interruptible_timeout
- linux内核--wait_event_interruptible_timeout()函数分析
- wait_event_interruptible_timeout函数分析
- Linux驱动中的 wait_event_interruptible 与 wake_up_interruptible 深度理解
- wait _event_interruptible()函数分析
- 关于 wait_event_interruptible() 和 wake_up()的使用
- 关于函数wait_event_interruptible(wq, condition)
- MySQL中interactive_timeout和wait_timeout的区别
- wait_event_interruptible与wake_up配套使用
- Linux 设备驱动--- 内核等待队列 --- wait_queue_head --- wait_event_interruptible --- 按键驱动程序优化
- wait _event_interruptible()函数分析
- wait_event_interruptible() 分析
- 关于 wait_event_interruptible() 和 wake_up()的使用
- 进程等待-wait_event_interruptible 使用方法
- 有关 等待队列和wait_event_interruptible() 和 wake_up()