linux驱动中的等待队列头
来源:互联网 发布:linux内核开发流程 编辑:程序博客网 时间:2024/05/01 05:01
在有的时候,驱动程序需要(缺省地)阻塞进程,使它进入等
待(睡眠)状态,直到请求可以得到满足。
内核等待队列
(1)定义等待队列
wait_queue_head_t my_queue
(2)初始化等待队列
init_waitqueue_head(&my_queue)
(3)定义和初始化等待队列
DECLARE_WAIT_QUEUE_HEAD(my_queue);
(4)进入等待队列、睡眠
<1>wait_event(queue, condition)
当condition(布尔表达式)为真时,立即返回;否则让进程进入
TASK_UNINTERRUPTIBLE模式的睡眠,并挂在queue参数所指定的
等待队列上。
<2>wait_event_interruptible(queue, condition)
当condition(布尔表达式)为真时,立即返回;否则让进程进入
TASK_INTERRUPTIBLE的睡眠,并挂在queue参数所指定的等待队
列上。
<3>int wait_event_killable(queue, condition)
当condition(布尔表达式)为真时,立即返回;否则让进程进入
TASK_KILLABLE的睡眠,并挂在queue参数所指定的等待队
列上。
(5)从等待队列中唤醒进程
<1>wake_up(wait_queue_t *q)
从等待队列q中唤醒状态TASK_UNINTERRUPTIBLE,TASK_INTERRUPTIBLE,
TASK_KILLABLE的所有进程。
<2>wake_up_interruptible(wait_queue_t *q);
从等待队列q中唤醒状态TASK_INTERRUPTIBLE,的所有进程。
待(睡眠)状态,直到请求可以得到满足。
内核等待队列
(1)定义等待队列
wait_queue_head_t my_queue
(2)初始化等待队列
init_waitqueue_head(&my_queue)
(3)定义和初始化等待队列
DECLARE_WAIT_QUEUE_HEAD(my_queue);
(4)进入等待队列、睡眠
<1>wait_event(queue, condition)
当condition(布尔表达式)为真时,立即返回;否则让进程进入
TASK_UNINTERRUPTIBLE模式的睡眠,并挂在queue参数所指定的
等待队列上。
<2>wait_event_interruptible(queue, condition)
当condition(布尔表达式)为真时,立即返回;否则让进程进入
TASK_INTERRUPTIBLE的睡眠,并挂在queue参数所指定的等待队
列上。
<3>int wait_event_killable(queue, condition)
当condition(布尔表达式)为真时,立即返回;否则让进程进入
TASK_KILLABLE的睡眠,并挂在queue参数所指定的等待队
列上。
(5)从等待队列中唤醒进程
<1>wake_up(wait_queue_t *q)
从等待队列q中唤醒状态TASK_UNINTERRUPTIBLE,TASK_INTERRUPTIBLE,
TASK_KILLABLE的所有进程。
<2>wake_up_interruptible(wait_queue_t *q);
从等待队列q中唤醒状态TASK_INTERRUPTIBLE,的所有进程。
0 0
- linux驱动中的等待队列头
- linux 等待队列 与linux 等待队列头关系-不懂linux驱动阻塞操作可以看看
- linux 等待队列 与linux 等待队列头关系-不懂linux驱动阻塞操作可以看看
- Linux设备驱动,等待队列
- linux驱动的等待队列
- linux驱动之等待队列
- linux 等待队列 PK linux 等待队列头
- linux驱动---等待队列、工作队列、Tasklets
- Linux内核中的等待队列
- Linux内核中的等待队列
- linux驱动编程--等待队列浅析
- 《Linux设备驱动开发详解》-- 等待队列
- Linux驱动学习——等待队列
- linux设备驱动--等待队列实现
- Linux 设备驱动--- 内核等待队列
- Linux设备驱动六 (1)等待队列
- 等待队列头init_waitqueue_head
- Linux设备驱动中的阻塞与非阻塞I/O 及 等待队列的使用说明
- 无法确定表达式的类型,因为<null>和int之间没有隐式转换
- 学习jquery小测试 自娱自乐
- null和""的区别详解
- 【第四章】 资源 之 4.3 访问Resource ——跟我学spring3
- 信号量的初始值
- linux驱动中的等待队列头
- UVa - 156 Ananagrams(STL)
- 关于Ping和Tracert命令原理详解
- 1-2 Fibonacci sequence
- UVa - 10474 Where is the Marble?(STL)
- Android开发本地及网络Mp3音乐播放器(十五)网络音乐及歌词下载功能实现
- UVa - 10815 Andy's First Dictionary(STL)
- linux的内核定时器
- poj 1692 Crossed Matchings(DP)