linux 之 等待队列
来源:互联网 发布:excel标注重复数据 编辑:程序博客网 时间:2024/05/27 00:38
1、等待队列由等待队列头和队列节点构成,当进程要获得某一资源而暂时不能得到时候,进程可以进入睡眠状态
内核为此要生成一个队列节点,并将睡眠的进程挂到等待队列中。
2、等待队列头wait_queue_head_t
struct __wait_queue_head {
spinlock_t lock;
struct list_head task_list;
};
typedef struct __wait_queue_head wait_queue_head_t ;
spinlock lock 是用来在对等待队列访问时做互斥操作的自旋锁。
task_list 是双向链表,用来管理睡眠在此等待队列的进程。
3、等待队列头的初始化
DECLARE_WAIT_QUEUE_HEAD : 完成等待队列头的静态定义和初始化。
init_waitqueue_head :动态初始化一个等待队列头。
4、等待队列节点
typedef struct __wait_queue wait_queue_t;
typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int flags,void *key);
struct __wait_queue {
unsigned int flags;
void *private;
wait_queue_func_t func;
struct list_head task_list;
}
flags : 唤醒等待队列上的进程时,该标志会影响唤醒操作的行为模式。
private : 指向睡眠的进程的task_struct结构体。
func : 该节点上的进程被唤醒时执行的唤醒函数。
task_list : 将个个节点链成链表。
5、等待队列节点的初始化
DECLARE_WAIT_QUEUE(name, tsk) : 静态定义和初始化。
init_waitqueue_entry(wait_queue_t *q , struct task_struct *p) :动态初始化一个队列节点
6、等待队列的操作:
TODO
- linux 之 等待队列
- linux之等待队列
- 内核linux之等待队列
- linux驱动之等待队列
- linux 内核分析之等待队列
- LINUX内核部件之等待队列
- Linux内核机制之等待队列
- Linux内核机制之等待队列
- linux内核机制之等待队列
- Linux内核机制之等待队列
- linux等待队列之wait_event和wake_up
- linux内核数据结构之等待队列
- linux等待队列
- LINUX 等待队列
- LINUX内核-等待队列
- linux等待队列
- linux 内核等待队列
- linux 等待队列
- linux awk 常见用法列举
- 上拉电阻与下拉电阻的作用总结
- js提取页面的图片
- <<深入理解linux内核>>读书笔记 (一): 内存寻址
- 任意进制转换
- linux 之 等待队列
- STL 相关使用
- ASP.NET MVC 3程序(一): 如何绑定JQuery插件JQgrid
- 如果厌倦了ppt的话,就用Impress.js制作演示吧。
- JAVA爱好者---------------接口介绍
- openstack学习资料
- 经典SQL语句资料大全之开发案例
- MyEclipse 8.5 Latest中文汉化教程(强力推荐哦,刚试过,ok)
- 感觉都不会了(2012.09.21)