Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐: 强烈推荐:Ylmf OS 3.0 正式版发布附迅雷高 XP系统下硬盘安装Fedora 14图文教程
搜索:
您的位置: Linux安全网 > Linux入门 > » 正文

DECLARE_WAITQUEUE()

来源: 黑曼巴snake 分享至:

DECLARE_WAITQUEUE()

标签:

杂谈

分类: 信息技术
#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()退出。

Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史