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

Source

  • 解锁 一个INODE结构 / pipe结构
  • 共传入一个参数 ip

7875

7876 /* Unlock a pipe.

7877  * If WANT bit is on,

7878  * wakeup.

7879  * This routine is also used

7880  * to ulock inodes in general.

7881  */

7882 prele(ip)

7883 int *ip;

7884 {

7885     register *rp;

7886

7887     rp = ip;

7888     rp->i_flag =& ~ILOCK;

  • 清除锁标志
7889     if(rp->i_flag&IWANT) {

7890          rp->i_flag =& ~IWANT;

7891          wakeup(rp);

7892     }

  • 如果有进程在等待该INODE,则
    • 清除IWANT标志
    • 唤醒因等待该块而睡眠的进程
    • 参看睡眠原因
7893 }

7894 /* ------------------------- */

7895

7896

7897

7898

7899

Ref

Caller

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