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

Source

4393

4394 /*

4395  * relinquish use of the shared text segment

4396  * of a process.

4397  */

4398 xfree()

4399 { register *xp, *ip;

4400

4401     if((xp=u.u_procp->p_textp) != NULL) {

4402          u.u_procp->p_textp == NULL;

4403          xccdec(xp);

4404          if(--xp->x_count == 0) {

4405           ip = xp->x_iptr;

4406           if((ip->i_mode&ISVTX) == 0) {

4407                xp->x_iptr = NULL;

4408                mfree(swapmap, (xp->x_size+7)/8,

4409                     xp->x_daddr);

4410                ip->i_flag =& ~ITEXT;

4411                iput(ip);

4412           }

4413          }

  • 释放 共享正文段 的引用
  • 若 释放引用后 引用数为0,且未置ISVTX(inode.h)
    • 释放 盘交换区空间
    • 释放 INODE
4414     }

4415 }

4416 /* ------------------------- */

Ref

Caller

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