DECLARE_WAITQUEUE
来源:互联网 发布:gps卫星定位软件 编辑:程序博客网 时间:2024/05/18 07:00
原文:http://blog.csdn.net/hzn407487204/article/details/5489507
#define DECLARE_WAITQUEUE(name, tsk) /
wait_queue_t name =__WAITQUEUE_INITIALIZER(name, tsk)#define __WAITQUEUE_INITIALIZER(name, tsk) { task: tsk, task_list: { NULL, NULL }, __WAITQUEUE_DEBUG_INI(name)}
它的解释是:
通过DECLARE_WAITQUEUE宏将等待队列项初始化成对应的任务结构,并且用于连接的相关指针均设置为空。其中加入了调试相关代码。
进程通过执行下面步骤将自己加入到一个等待队列中:
1) 调用DECLARE_WAITQUEUE()创建一个等待队列的项;
2) 调用add_wait_queue()把自己加入到等待队列中。该队列会在进程等待的条件满足时唤醒它。在其他地方写相关代码,在事件发生时,对等的队列执行wake_up()操作。
3) 将进程状态变更为: TASK_INTERRUPTIBLE or TASK_UNINTERRUPTIBLE。
4) 如果状态被置为TASK_INTERRUPTIBLE ,则信号唤醒进程。即为伪唤醒(唤醒不是因为事件的发生),因此检查并处理信号。
5) 检查condition是否为真,为真则没必要休眠,如果不为真,则调用scheduled()。
6) 当进程被唤醒的时候,它会再次检查条件是否为真。真就退出循环,否则再次调用scheduled()并一直重复这步操作。
7) condition满足后,进程将自己设置为TASK_RUNNING 并通过remove_wait_queue()退出。
- DECLARE_WAITQUEUE
- DECLARE_WAITQUEUE
- DECLARE_WAITQUEUE()
- DECLARE_WAITQUEUE()
- DECLARE_WAITQUEUE(wait, current)的分析
- DECLARE_WAITQUEUE 将进程加入等待队列
- DECLARE_WAITQUEUE 将进程加入等待队列
- SQL Azure Index was outside the bounds of the array Microsoft.SqlServer.Smo
- ArrayList Vector LinkedList 区别与用法
- 编程判断两个链表是都相交
- 数据类型 -- uint32_t 等类型
- Android开发环境的搭建之三 下载android2.2源码
- DECLARE_WAITQUEUE
- 手动配置Apache,PHP,mysql
- yuv测试序列下载地址
- 投资理财
- 使用vim时按了CTRL+S键怎么办?
- android apk 文件的反编译
- android获取网络上的图片
- Hibernate三种状态详解
- 地球两点 由经纬度测算实际距离