ip                228 console.c      consoleread(struct inode *ip, char *dst, int n)
ip                233 console.c        iunlock(ip);
ip                240 console.c              ilock(ip);
ip                260 console.c        ilock(ip);
ip                266 console.c      consolewrite(struct inode *ip, char *buf, int n)
ip                270 console.c        iunlock(ip);
ip                275 console.c        ilock(ip);
ip                 17 exec.c           struct inode *ip;
ip                 22 exec.c           if((ip = namei(path)) == 0){
ip                 26 exec.c           ilock(ip);
ip                 30 exec.c           if(readi(ip, (char*)&elf, 0, sizeof(elf)) < sizeof(elf))
ip                 41 exec.c             if(readi(ip, (char*)&ph, off, sizeof(ph)) != sizeof(ph))
ip                 49 exec.c             if(loaduvm(pgdir, (char*)ph.vaddr, ip, ph.off, ph.filesz) < 0)
ip                 52 exec.c           iunlockput(ip);
ip                 54 exec.c           ip = 0;
ip                102 exec.c           if(ip){
ip                103 exec.c             iunlockput(ip);
ip                 76 file.c             iput(ff.ip);
ip                 86 file.c             ilock(f->ip);
ip                 87 file.c             stati(f->ip, st);
ip                 88 file.c             iunlock(f->ip);
ip                105 file.c             ilock(f->ip);
ip                106 file.c             if((r = readi(f->ip, addr, f->off, n)) > 0)
ip                108 file.c             iunlock(f->ip);
ip                140 file.c               ilock(f->ip);
ip                141 file.c               if ((r = writei(f->ip, addr + i, f->off, n1)) > 0)
ip                143 file.c               iunlock(f->ip);
ip                  7 file.h           struct inode *ip;
ip                200 fs.c           iupdate(struct inode *ip)
ip                205 fs.c             bp = bread(ip->dev, IBLOCK(ip->inum, sb));
ip                206 fs.c             dip = (struct dinode*)bp->data + ip->inum%IPB;
ip                207 fs.c             dip->type = ip->type;
ip                208 fs.c             dip->major = ip->major;
ip                209 fs.c             dip->minor = ip->minor;
ip                210 fs.c             dip->nlink = ip->nlink;
ip                211 fs.c             dip->size = ip->size;
ip                212 fs.c             memmove(dip->addrs, ip->addrs, sizeof(ip->addrs));
ip                223 fs.c             struct inode *ip, *empty;
ip                229 fs.c             for(ip = &icache.inode[0]; ip < &icache.inode[NINODE]; ip++){
ip                230 fs.c               if(ip->ref > 0 && ip->dev == dev && ip->inum == inum){
ip                231 fs.c                 ip->ref++;
ip                233 fs.c                 return ip;
ip                235 fs.c               if(empty == 0 && ip->ref == 0)    // Remember empty slot.
ip                236 fs.c                 empty = ip;
ip                243 fs.c             ip = empty;
ip                244 fs.c             ip->dev = dev;
ip                245 fs.c             ip->inum = inum;
ip                246 fs.c             ip->ref = 1;
ip                247 fs.c             ip->flags = 0;
ip                250 fs.c             return ip;
ip                256 fs.c           idup(struct inode *ip)
ip                259 fs.c             ip->ref++;
ip                261 fs.c             return ip;
ip                267 fs.c           ilock(struct inode *ip)
ip                272 fs.c             if(ip == 0 || ip->ref < 1)
ip                276 fs.c             while(ip->flags & I_BUSY)
ip                277 fs.c               sleep(ip, &icache.lock);
ip                278 fs.c             ip->flags |= I_BUSY;
ip                281 fs.c             if(!(ip->flags & I_VALID)){
ip                282 fs.c               bp = bread(ip->dev, IBLOCK(ip->inum, sb));
ip                283 fs.c               dip = (struct dinode*)bp->data + ip->inum%IPB;
ip                284 fs.c               ip->type = dip->type;
ip                285 fs.c               ip->major = dip->major;
ip                286 fs.c               ip->minor = dip->minor;
ip                287 fs.c               ip->nlink = dip->nlink;
ip                288 fs.c               ip->size = dip->size;
ip                289 fs.c               memmove(ip->addrs, dip->addrs, sizeof(ip->addrs));
ip                291 fs.c               ip->flags |= I_VALID;
ip                292 fs.c               if(ip->type == 0)
ip                299 fs.c           iunlock(struct inode *ip)
ip                301 fs.c             if(ip == 0 || !(ip->flags & I_BUSY) || ip->ref < 1)
ip                305 fs.c             ip->flags &= ~I_BUSY;
ip                306 fs.c             wakeup(ip);
ip                318 fs.c           iput(struct inode *ip)
ip                321 fs.c             if(ip->ref == 1 && (ip->flags & I_VALID) && ip->nlink == 0){
ip                323 fs.c               if(ip->flags & I_BUSY)
ip                325 fs.c               ip->flags |= I_BUSY;
ip                327 fs.c               itrunc(ip);
ip                328 fs.c               ip->type = 0;
ip                329 fs.c               iupdate(ip);
ip                331 fs.c               ip->flags = 0;
ip                332 fs.c               wakeup(ip);
ip                334 fs.c             ip->ref--;
ip                340 fs.c           iunlockput(struct inode *ip)
ip                342 fs.c             iunlock(ip);
ip                343 fs.c             iput(ip);
ip                357 fs.c           bmap(struct inode *ip, uint bn)
ip                363 fs.c               if((addr = ip->addrs[bn]) == 0)
ip                364 fs.c                 ip->addrs[bn] = addr = balloc(ip->dev);
ip                371 fs.c               if((addr = ip->addrs[NDIRECT]) == 0)
ip                372 fs.c                 ip->addrs[NDIRECT] = addr = balloc(ip->dev);
ip                373 fs.c               bp = bread(ip->dev, addr);
ip                376 fs.c                 a[bn] = addr = balloc(ip->dev);
ip                392 fs.c           itrunc(struct inode *ip)
ip                399 fs.c               if(ip->addrs[i]){
ip                400 fs.c                 bfree(ip->dev, ip->addrs[i]);
ip                401 fs.c                 ip->addrs[i] = 0;
ip                405 fs.c             if(ip->addrs[NDIRECT]){
ip                406 fs.c               bp = bread(ip->dev, ip->addrs[NDIRECT]);
ip                410 fs.c                   bfree(ip->dev, a[j]);
ip                413 fs.c               bfree(ip->dev, ip->addrs[NDIRECT]);
ip                414 fs.c               ip->addrs[NDIRECT] = 0;
ip                417 fs.c             ip->size = 0;
ip                418 fs.c             iupdate(ip);
ip                423 fs.c           stati(struct inode *ip, struct stat *st)
ip                425 fs.c             st->dev = ip->dev;
ip                426 fs.c             st->ino = ip->inum;
ip                427 fs.c             st->type = ip->type;
ip                428 fs.c             st->nlink = ip->nlink;
ip                429 fs.c             st->size = ip->size;
ip                435 fs.c           readi(struct inode *ip, char *dst, uint off, uint n)
ip                440 fs.c             if(ip->type == T_DEV){
ip                441 fs.c               if(ip->major < 0 || ip->major >= NDEV || !devsw[ip->major].read)
ip                443 fs.c               return devsw[ip->major].read(ip, dst, n);
ip                446 fs.c             if(off > ip->size || off + n < off)
ip                448 fs.c             if(off + n > ip->size)
ip                449 fs.c               n = ip->size - off;
ip                452 fs.c               bp = bread(ip->dev, bmap(ip, off/BSIZE));
ip                463 fs.c           writei(struct inode *ip, char *src, uint off, uint n)
ip                468 fs.c             if(ip->type == T_DEV){
ip                469 fs.c               if(ip->major < 0 || ip->major >= NDEV || !devsw[ip->major].write)
ip                471 fs.c               return devsw[ip->major].write(ip, src, n);
ip                474 fs.c             if(off > ip->size || off + n < off)
ip                480 fs.c               bp = bread(ip->dev, bmap(ip, off/BSIZE));
ip                487 fs.c             if(n > 0 && off > ip->size){
ip                488 fs.c               ip->size = off;
ip                489 fs.c               iupdate(ip);
ip                537 fs.c             struct inode *ip;
ip                540 fs.c             if((ip = dirlookup(dp, name, 0)) != 0){
ip                541 fs.c               iput(ip);
ip                608 fs.c             struct inode *ip, *next;
ip                611 fs.c               ip = iget(ROOTDEV, ROOTINO);
ip                613 fs.c               ip = idup(proc->cwd);
ip                616 fs.c               ilock(ip);
ip                617 fs.c               if(ip->type != T_DIR){
ip                618 fs.c                 iunlockput(ip);
ip                623 fs.c                 iunlock(ip);
ip                624 fs.c                 return ip;
ip                626 fs.c               if((next = dirlookup(ip, name, 0)) == 0){
ip                627 fs.c                 iunlockput(ip);
ip                630 fs.c               iunlockput(ip);
ip                631 fs.c               ip = next;
ip                634 fs.c               iput(ip);
ip                637 fs.c             return ip;
ip                 39 mkfs.c         void rinode(uint inum, struct dinode *ip);
ip                184 mkfs.c         winode(uint inum, struct dinode *ip)
ip                193 mkfs.c           *dip = *ip;
ip                198 mkfs.c         rinode(uint inum, struct dinode *ip)
ip                207 mkfs.c           *ip = *dip;
ip                 18 syscall.c      fetchint(uint addr, int *ip)
ip                 22 syscall.c        *ip = *(int*)(addr);
ip                 46 syscall.c      argint(int n, int *ip)
ip                 48 syscall.c        return fetchint(proc->tf->esp + 4 + 4*n, ip);
ip                119 sysfile.c        struct inode *dp, *ip;
ip                125 sysfile.c        if((ip = namei(old)) == 0){
ip                130 sysfile.c        ilock(ip);
ip                131 sysfile.c        if(ip->type == T_DIR){
ip                132 sysfile.c          iunlockput(ip);
ip                137 sysfile.c        ip->nlink++;
ip                138 sysfile.c        iupdate(ip);
ip                139 sysfile.c        iunlock(ip);
ip                144 sysfile.c        if(dp->dev != ip->dev || dirlink(dp, name, ip->inum) < 0){
ip                149 sysfile.c        iput(ip);
ip                156 sysfile.c        ilock(ip);
ip                157 sysfile.c        ip->nlink--;
ip                158 sysfile.c        iupdate(ip);
ip                159 sysfile.c        iunlockput(ip);
ip                184 sysfile.c        struct inode *ip, *dp;
ip                204 sysfile.c        if((ip = dirlookup(dp, name, &off)) == 0)
ip                206 sysfile.c        ilock(ip);
ip                208 sysfile.c        if(ip->nlink < 1)
ip                210 sysfile.c        if(ip->type == T_DIR && !isdirempty(ip)){
ip                211 sysfile.c          iunlockput(ip);
ip                218 sysfile.c        if(ip->type == T_DIR){
ip                224 sysfile.c        ip->nlink--;
ip                225 sysfile.c        iupdate(ip);
ip                226 sysfile.c        iunlockput(ip);
ip                242 sysfile.c        struct inode *ip, *dp;
ip                249 sysfile.c        if((ip = dirlookup(dp, name, &off)) != 0){
ip                251 sysfile.c          ilock(ip);
ip                252 sysfile.c          if(type == T_FILE && ip->type == T_FILE)
ip                253 sysfile.c            return ip;
ip                254 sysfile.c          iunlockput(ip);
ip                258 sysfile.c        if((ip = ialloc(dp->dev, type)) == 0)
ip                261 sysfile.c        ilock(ip);
ip                262 sysfile.c        ip->major = major;
ip                263 sysfile.c        ip->minor = minor;
ip                264 sysfile.c        ip->nlink = 1;
ip                265 sysfile.c        iupdate(ip);
ip                271 sysfile.c          if(dirlink(ip, ".", ip->inum) < 0 || dirlink(ip, "..", dp->inum) < 0)
ip                275 sysfile.c        if(dirlink(dp, name, ip->inum) < 0)
ip                280 sysfile.c        return ip;
ip                289 sysfile.c        struct inode *ip;
ip                297 sysfile.c          ip = create(path, T_FILE, 0, 0);
ip                298 sysfile.c          if(ip == 0){
ip                303 sysfile.c          if((ip = namei(path)) == 0){
ip                307 sysfile.c          ilock(ip);
ip                308 sysfile.c          if(ip->type == T_DIR && omode != O_RDONLY){
ip                309 sysfile.c            iunlockput(ip);
ip                318 sysfile.c          iunlockput(ip);
ip                322 sysfile.c        iunlock(ip);
ip                326 sysfile.c        f->ip = ip;
ip                337 sysfile.c        struct inode *ip;
ip                340 sysfile.c        if(argstr(0, &path) < 0 || (ip = create(path, T_DIR, 0, 0)) == 0){
ip                344 sysfile.c        iunlockput(ip);
ip                352 sysfile.c        struct inode *ip;
ip                361 sysfile.c           (ip = create(path, T_DEV, major, minor)) == 0){
ip                365 sysfile.c        iunlockput(ip);
ip                374 sysfile.c        struct inode *ip;
ip                377 sysfile.c        if(argstr(0, &path) < 0 || (ip = namei(path)) == 0){
ip                381 sysfile.c        ilock(ip);
ip                382 sysfile.c        if(ip->type != T_DIR){
ip                383 sysfile.c          iunlockput(ip);
ip                387 sysfile.c        iunlock(ip);
ip                390 sysfile.c        proc->cwd = ip;
ip                197 vm.c           loaduvm(pde_t *pgdir, char *addr, struct inode *ip, uint offset, uint sz)
ip                212 vm.c               if(readi(ip, p2v(pa), offset+i, n) != n)