code:incore - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki
- 查找 指定设备 的设备队列中有没有与 指定块号匹配的缓存块
- 共传入两个参数 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;
4907 for (bp=dp->b_forw; bp != dp; bp = bp->b_forw)
- dp指向 adev 的设备缓存管理结构struct devtab
- 4906 疑为笔误,应为dp = bdevsw[dev.d_major].d_tab;
4908 if (bp->b_blkno==blkno && bp->b_dev==dev)
4909 return(bp);
4910 return(0);
- 遍历设备队列,如有块号和设备号匹配的缓存块,则返回该块
4911 }
- 遍历设备队列,如没有匹配,则返回0
4912 /* ------------------------- */