QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1209|回复: 2

哪位能帮我分析一些wake_up的代码吗?

[复制链接]
发表于 2003-10-6 12:03:34 | 显示全部楼层 |阅读模式
哪位能帮我分析一些wake_up的代码吗?
因为刚接触源码,所以看起来比较困难那:
void wake_up (struct wait_queue **q)
{
       struct wait_queue *next;
       struct wait_queue *head;
       if(!q||!(next=*q))
           return;
  head=WAIT_QUEUE_HEAD(q);
  while (next!=head) {
          struct task_struct *p=next->task;
          next=next->next;
          if(p!=NULL)  {
                    if((p->state==TASK_UNINTERRUPTIBLE)||
                       (p->state==TASK_INTERRUPTIBLE))
                        wait_up_process(p);
                          }
           if(!next)
               goto bad:
             }
          return;
bad:
           printk("wait_queue is bad (eip=%p)\n",
                    _builtin_return_address(0));
           printk("              q=%p\n",q);
           printk("              *q=%p\n",*q);
}
发表于 2003-10-6 14:32:16 | 显示全部楼层
while循环遍历等待队列,
由wake_up_process唤醒state是TASK_UNINTERRUPTIBLE和TASK_INTERRUPTIBLE的进程吧?

这是哪个版本的代码?
回复

使用道具 举报

发表于 2003-10-7 21:35:23 | 显示全部楼层
os course homework?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 06:19 , Processed in 0.062260 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表