code:wakeup - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki

Source

  • 唤醒所有因某原因睡眠的进程
  • 传入一个参数chan
    • chan:进程睡眠原因

2109

2110 /*

2111 * Wake up all processes sleeping on chan.

2112 */

2113 wakeup(chan)

2114 {

2115     register struct proc *p;

2116     register c, i;

2117

2118     c = chan;

2119     p = &proc[0];

2120     i = NPROC;

2121     do {

2122               if(p->p_wchan == c) {

2123                    setrun(p);

2124               }

2125               p++;

2126     } while(--i);

2127 }

  • 遍历proc数组,遇到因为chan而睡眠的进程时将其置为就绪状态
2128 /* -------------------------*/

Ref

Caller

⚠️ **GitHub.com Fallback** ⚠️