ip 34 kernel/exec.c struct inode *ip; ip 42 kernel/exec.c if ((ip = namei(path)) == 0) { ip 46 kernel/exec.c ilock(ip); ip 49 kernel/exec.c if (readi(ip, 0, (uint64)&elf, 0, sizeof(elf)) != sizeof(elf)) ip 61 kernel/exec.c if (readi(ip, 0, (uint64)&ph, off, sizeof(ph)) != sizeof(ph)) ip 76 kernel/exec.c if (loadseg(pagetable, ph.vaddr, ip, ph.off, ph.filesz) < 0) ip 79 kernel/exec.c iunlockput(ip); ip 81 kernel/exec.c ip = 0; ip 145 kernel/exec.c if (ip) { ip 146 kernel/exec.c iunlockput(ip); ip 157 kernel/exec.c loadseg(pagetable_t pagetable, uint64 va, struct inode *ip, uint offset, ip 171 kernel/exec.c if (readi(ip, 0, (uint64)pa, offset + i, n) != n) ip 80 kernel/file.c iput(ff.ip); ip 94 kernel/file.c ilock(f->ip); ip 95 kernel/file.c stati(f->ip, &st); ip 96 kernel/file.c iunlock(f->ip); ip 121 kernel/file.c ilock(f->ip); ip 122 kernel/file.c if ((r = readi(f->ip, 1, addr, f->off, n)) > 0) ip 124 kernel/file.c iunlock(f->ip); ip 161 kernel/file.c ilock(f->ip); ip 162 kernel/file.c if ((r = writei(f->ip, 1, addr + i, f->off, n1)) > 0) ip 164 kernel/file.c iunlock(f->ip); ip 7 kernel/file.h struct inode *ip; // FD_INODE and FD_DEVICE ip 228 kernel/fs.c iupdate(struct inode *ip) ip 233 kernel/fs.c bp = bread(ip->dev, IBLOCK(ip->inum, sb)); ip 234 kernel/fs.c dip = (struct dinode *)bp->data + ip->inum % IPB; ip 235 kernel/fs.c dip->type = ip->type; ip 236 kernel/fs.c dip->major = ip->major; ip 237 kernel/fs.c dip->minor = ip->minor; ip 238 kernel/fs.c dip->nlink = ip->nlink; ip 239 kernel/fs.c dip->size = ip->size; ip 240 kernel/fs.c memmove(dip->addrs, ip->addrs, sizeof(ip->addrs)); ip 251 kernel/fs.c struct inode *ip, *empty; ip 257 kernel/fs.c for (ip = &itable.inode[0]; ip < &itable.inode[NINODE]; ip++) { ip 258 kernel/fs.c if (ip->ref > 0 && ip->dev == dev && ip->inum == inum) { ip 259 kernel/fs.c ip->ref++; ip 261 kernel/fs.c return ip; ip 263 kernel/fs.c if (empty == 0 && ip->ref == 0) // Remember empty slot. ip 264 kernel/fs.c empty = ip; ip 271 kernel/fs.c ip = empty; ip 272 kernel/fs.c ip->dev = dev; ip 273 kernel/fs.c ip->inum = inum; ip 274 kernel/fs.c ip->ref = 1; ip 275 kernel/fs.c ip->valid = 0; ip 278 kernel/fs.c return ip; ip 284 kernel/fs.c idup(struct inode *ip) ip 287 kernel/fs.c ip->ref++; ip 289 kernel/fs.c return ip; ip 295 kernel/fs.c ilock(struct inode *ip) ip 300 kernel/fs.c if (ip == 0 || ip->ref < 1) ip 303 kernel/fs.c acquiresleep(&ip->lock); ip 305 kernel/fs.c if (ip->valid == 0) { ip 306 kernel/fs.c bp = bread(ip->dev, IBLOCK(ip->inum, sb)); ip 307 kernel/fs.c dip = (struct dinode *)bp->data + ip->inum % IPB; ip 308 kernel/fs.c ip->type = dip->type; ip 309 kernel/fs.c ip->major = dip->major; ip 310 kernel/fs.c ip->minor = dip->minor; ip 311 kernel/fs.c ip->nlink = dip->nlink; ip 312 kernel/fs.c ip->size = dip->size; ip 313 kernel/fs.c memmove(ip->addrs, dip->addrs, sizeof(ip->addrs)); ip 315 kernel/fs.c ip->valid = 1; ip 316 kernel/fs.c if (ip->type == 0) ip 323 kernel/fs.c iunlock(struct inode *ip) ip 325 kernel/fs.c if (ip == 0 || !holdingsleep(&ip->lock) || ip->ref < 1) ip 328 kernel/fs.c releasesleep(&ip->lock); ip 350 kernel/fs.c iput(struct inode *ip) ip 357 kernel/fs.c int last = (ip->ref == 1 && ip->valid && ip->nlink == 0); ip 358 kernel/fs.c uint dev = ip->dev, inum = ip->inum; ip 362 kernel/fs.c acquiresleep(&ip->lock); ip 365 kernel/fs.c itrunc(ip); // free the data blocks (type stays nonzero on disk) ip 366 kernel/fs.c ip->valid = 0; ip 368 kernel/fs.c releasesleep(&ip->lock); ip 373 kernel/fs.c ip->ref--; ip 382 kernel/fs.c iunlockput(struct inode *ip) ip 384 kernel/fs.c iunlock(ip); ip 385 kernel/fs.c iput(ip); ip 392 kernel/fs.c struct inode *ip = 0; ip 397 kernel/fs.c ip = iget(dev, inum); ip 400 kernel/fs.c if (ip) { ip 402 kernel/fs.c ilock(ip); ip 403 kernel/fs.c iunlock(ip); ip 404 kernel/fs.c iput(ip); ip 421 kernel/fs.c bmap(struct inode *ip, uint bn) ip 427 kernel/fs.c if ((addr = ip->addrs[bn]) == 0) { ip 428 kernel/fs.c addr = balloc(ip->dev); ip 431 kernel/fs.c ip->addrs[bn] = addr; ip 439 kernel/fs.c if ((addr = ip->addrs[NDIRECT]) == 0) { ip 440 kernel/fs.c addr = balloc(ip->dev); ip 443 kernel/fs.c ip->addrs[NDIRECT] = addr; ip 445 kernel/fs.c bp = bread(ip->dev, addr); ip 448 kernel/fs.c addr = balloc(ip->dev); ip 464 kernel/fs.c itrunc(struct inode *ip) ip 471 kernel/fs.c if (ip->addrs[i]) { ip 472 kernel/fs.c bfree(ip->dev, ip->addrs[i]); ip 473 kernel/fs.c ip->addrs[i] = 0; ip 477 kernel/fs.c if (ip->addrs[NDIRECT]) { ip 478 kernel/fs.c bp = bread(ip->dev, ip->addrs[NDIRECT]); ip 482 kernel/fs.c bfree(ip->dev, a[j]); ip 485 kernel/fs.c bfree(ip->dev, ip->addrs[NDIRECT]); ip 486 kernel/fs.c ip->addrs[NDIRECT] = 0; ip 489 kernel/fs.c ip->size = 0; ip 490 kernel/fs.c iupdate(ip); ip 496 kernel/fs.c stati(struct inode *ip, struct stat *st) ip 498 kernel/fs.c st->dev = ip->dev; ip 499 kernel/fs.c st->ino = ip->inum; ip 500 kernel/fs.c st->type = ip->type; ip 501 kernel/fs.c st->nlink = ip->nlink; ip 502 kernel/fs.c st->size = ip->size; ip 510 kernel/fs.c readi(struct inode *ip, int user_dst, uint64 dst, uint off, uint n) ip 515 kernel/fs.c if (off > ip->size || off + n < off) ip 517 kernel/fs.c if (off + n > ip->size) ip 518 kernel/fs.c n = ip->size - off; ip 521 kernel/fs.c uint addr = bmap(ip, off / BSIZE); ip 524 kernel/fs.c bp = bread(ip->dev, addr); ip 544 kernel/fs.c writei(struct inode *ip, int user_src, uint64 src, uint off, uint n) ip 549 kernel/fs.c if (off > ip->size || off + n < off) ip 555 kernel/fs.c uint addr = bmap(ip, off / BSIZE); ip 558 kernel/fs.c bp = bread(ip->dev, addr); ip 570 kernel/fs.c if (off > ip->size) ip 571 kernel/fs.c ip->size = off; ip 576 kernel/fs.c iupdate(ip); ip 624 kernel/fs.c struct inode *ip; ip 627 kernel/fs.c if ((ip = dirlookup(dp, name, 0)) != 0) { ip 628 kernel/fs.c iput(ip); ip 694 kernel/fs.c struct inode *ip, *next; ip 697 kernel/fs.c ip = iget(ROOTDEV, ROOTINO); ip 699 kernel/fs.c ip = idup(myproc()->cwd); ip 702 kernel/fs.c ilock(ip); ip 703 kernel/fs.c if (ip->type != T_DIR) { ip 704 kernel/fs.c iunlockput(ip); ip 707 kernel/fs.c if (ip->nlink == 0) { ip 708 kernel/fs.c iunlockput(ip); ip 713 kernel/fs.c iunlock(ip); ip 714 kernel/fs.c return ip; ip 716 kernel/fs.c if ((next = dirlookup(ip, name, 0)) == 0) { ip 717 kernel/fs.c iunlockput(ip); ip 720 kernel/fs.c iunlockput(ip); ip 721 kernel/fs.c ip = next; ip 724 kernel/fs.c iput(ip); ip 727 kernel/fs.c return ip; ip 12 kernel/syscall.c fetchaddr(uint64 addr, uint64 *ip) ip 18 kernel/syscall.c if (copyin(p->pagetable, p->sz, (char *)ip, addr, sizeof(*ip)) != 0) ip 58 kernel/syscall.c argint(int n, int *ip) ip 60 kernel/syscall.c *ip = argraw(n); ip 67 kernel/syscall.c argaddr(int n, uint64 *ip) ip 69 kernel/syscall.c *ip = argraw(n); ip 127 kernel/sysfile.c struct inode *dp, *ip; ip 133 kernel/sysfile.c if ((ip = namei(old)) == 0) { ip 138 kernel/sysfile.c ilock(ip); ip 139 kernel/sysfile.c if (ip->type == T_DIR) { ip 140 kernel/sysfile.c iunlockput(ip); ip 145 kernel/sysfile.c if (ip->nlink >= NLINK_MAX) { ip 146 kernel/sysfile.c iunlockput(ip); ip 151 kernel/sysfile.c ip->nlink++; ip 152 kernel/sysfile.c iupdate(ip); ip 153 kernel/sysfile.c iunlock(ip); ip 165 kernel/sysfile.c if (dp->dev != ip->dev || dirlink(dp, name, ip->inum) < 0) { ip 170 kernel/sysfile.c iput(ip); ip 177 kernel/sysfile.c ilock(ip); ip 178 kernel/sysfile.c ip->nlink--; ip 179 kernel/sysfile.c iupdate(ip); ip 180 kernel/sysfile.c iunlockput(ip); ip 204 kernel/sysfile.c struct inode *ip, *dp; ip 224 kernel/sysfile.c if ((ip = dirlookup(dp, name, &off)) == 0) ip 226 kernel/sysfile.c ilock(ip); ip 228 kernel/sysfile.c if (ip->nlink < 1) ip 230 kernel/sysfile.c if (ip->type == T_DIR && !isdirempty(ip)) { ip 231 kernel/sysfile.c iunlockput(ip); ip 238 kernel/sysfile.c if (ip->type == T_DIR) { ip 244 kernel/sysfile.c ip->nlink--; ip 245 kernel/sysfile.c iupdate(ip); ip 246 kernel/sysfile.c iunlockput(ip); ip 261 kernel/sysfile.c struct inode *ip, *dp; ip 280 kernel/sysfile.c if ((ip = dirlookup(dp, name, 0)) != 0) { ip 282 kernel/sysfile.c ilock(ip); ip 283 kernel/sysfile.c if (type == T_FILE && (ip->type == T_FILE || ip->type == T_DEVICE)) ip 284 kernel/sysfile.c return ip; ip 285 kernel/sysfile.c iunlockput(ip); ip 289 kernel/sysfile.c if ((ip = ialloc(dp->dev, type)) == 0) { ip 294 kernel/sysfile.c ilock(ip); ip 295 kernel/sysfile.c ip->major = major; ip 296 kernel/sysfile.c ip->minor = minor; ip 297 kernel/sysfile.c ip->nlink = 1; ip 298 kernel/sysfile.c iupdate(ip); ip 302 kernel/sysfile.c if (dirlink(ip, ".", ip->inum) < 0 || dirlink(ip, "..", dp->inum) < 0) ip 306 kernel/sysfile.c if (dirlink(dp, name, ip->inum) < 0) ip 317 kernel/sysfile.c return ip; ip 321 kernel/sysfile.c ip->nlink = 0; ip 322 kernel/sysfile.c iupdate(ip); ip 323 kernel/sysfile.c iunlockput(ip); ip 334 kernel/sysfile.c struct inode *ip; ip 344 kernel/sysfile.c ip = create(path, T_FILE, 0, 0); ip 345 kernel/sysfile.c if (ip == 0) { ip 350 kernel/sysfile.c if ((ip = namei(path)) == 0) { ip 354 kernel/sysfile.c ilock(ip); ip 355 kernel/sysfile.c if (ip->type == T_DIR && omode != O_RDONLY) { ip 356 kernel/sysfile.c iunlockput(ip); ip 362 kernel/sysfile.c if (ip->type == T_DEVICE && (ip->major < 0 || ip->major >= NDEV)) { ip 363 kernel/sysfile.c iunlockput(ip); ip 371 kernel/sysfile.c iunlockput(ip); ip 376 kernel/sysfile.c if (ip->type == T_DEVICE) { ip 378 kernel/sysfile.c f->major = ip->major; ip 383 kernel/sysfile.c f->ip = ip; ip 387 kernel/sysfile.c if ((omode & O_TRUNC) && ip->type == T_FILE) { ip 388 kernel/sysfile.c itrunc(ip); ip 391 kernel/sysfile.c iunlock(ip); ip 401 kernel/sysfile.c struct inode *ip; ip 404 kernel/sysfile.c if (argstr(0, path, MAXPATH) < 0 || (ip = create(path, T_DIR, 0, 0)) == 0) { ip 408 kernel/sysfile.c iunlockput(ip); ip 416 kernel/sysfile.c struct inode *ip; ip 424 kernel/sysfile.c (ip = create(path, T_DEVICE, major, minor)) == 0) { ip 428 kernel/sysfile.c iunlockput(ip); ip 437 kernel/sysfile.c struct inode *ip; ip 441 kernel/sysfile.c if (argstr(0, path, MAXPATH) < 0 || (ip = namei(path)) == 0) { ip 445 kernel/sysfile.c ilock(ip); ip 446 kernel/sysfile.c if (ip->type != T_DIR) { ip 447 kernel/sysfile.c iunlockput(ip); ip 451 kernel/sysfile.c iunlock(ip); ip 454 kernel/sysfile.c p->cwd = ip; ip 43 mkfs/mkfs.c void rinode(uint inum, struct dinode *ip); ip 191 mkfs/mkfs.c winode(uint inum, struct dinode *ip) ip 200 mkfs/mkfs.c *dip = *ip; ip 205 mkfs/mkfs.c rinode(uint inum, struct dinode *ip) ip 214 mkfs/mkfs.c *ip = *dip;