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

Source

  • 查找 指定设备 的设备队列中有没有与 指定块号匹配的缓存块
  • 共传入两个参数 adev 和 blkno
    • adev : 指定设备的设备号
    • blkno : 指定块号
  • 返回值
    • 若找到匹配的缓存块,则返回该缓存块管理结构struct buf的指针
    • 若未找到匹配,返回0

4895

4896 /* See if the block is associated with some buffer

4897  * (mainly to avoid getting hung up on a wait in breada)

4898  */

4899 incore(adev, blkno)

4900 {

4901     register int dev;

4902     register struct buf *bp;

4903     register struct devtab *dp;

4904

4905     dev = adev;

4906     dp = bdevsw[adev.d_major].d_tab;

  • dp指向 adev 的设备缓存管理结构struct devtab
  • 4906 疑为笔误,应为dp = bdevsw[dev.d_major].d_tab;
4907     for (bp=dp->b_forw; bp != dp; bp = bp->b_forw)

4908          if (bp->b_blkno==blkno && bp->b_dev==dev)

4909           return(bp);

  • 遍历设备队列,如有块号和设备号匹配的缓存块,则返回该块
4910     return(0);
  • 遍历设备队列,如没有匹配,则返回0
4911 }

4912 /* ------------------------- */

Ref

Caller

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