root/fs.h

/* [previous][next][first][last][top][bottom][index][help]  */

INCLUDED FROM


   1 // On-disk file system format.
   2 // Both the kernel and user programs use this header file.
   3 
   4 
   5 #define ROOTINO 1  // root i-number
   6 #define BSIZE 512  // block size
   7 
   8 // Disk layout:
   9 // [ boot block | super block | log | inode blocks |
  10 //                                          free bit map | data blocks]
  11 //
  12 // mkfs computes the super block and builds an initial file system. The
  13 // super block describes the disk layout:
  14 struct superblock {
  15   uint size;         // Size of file system image (blocks)
  16   uint nblocks;      // Number of data blocks
  17   uint ninodes;      // Number of inodes.
  18   uint nlog;         // Number of log blocks
  19   uint logstart;     // Block number of first log block
  20   uint inodestart;   // Block number of first inode block
  21   uint bmapstart;    // Block number of first free map block
  22 };
  23 
  24 #define NDIRECT 12
  25 #define NINDIRECT (BSIZE / sizeof(uint))
  26 #define MAXFILE (NDIRECT + NINDIRECT)
  27 
  28 // On-disk inode structure
  29 struct dinode {
  30   short type;           // File type
  31   short major;          // Major device number (T_DEV only)
  32   short minor;          // Minor device number (T_DEV only)
  33   short nlink;          // Number of links to inode in file system
  34   uint size;            // Size of file (bytes)
  35   uint addrs[NDIRECT+1];   // Data block addresses
  36 };
  37 
  38 // Inodes per block.
  39 #define IPB           (BSIZE / sizeof(struct dinode))
  40 
  41 // Block containing inode i
  42 #define IBLOCK(i, sb)     ((i) / IPB + sb.inodestart)
  43 
  44 // Bitmap bits per block
  45 #define BPB           (BSIZE*8)
  46 
  47 // Block of free map containing bit for block b
  48 #define BBLOCK(b, sb) (b/BPB + sb.bmapstart)
  49 
  50 // Directory is a file containing a sequence of dirent structures.
  51 #define DIRSIZ 14
  52 
  53 struct dirent {
  54   ushort inum;
  55   char name[DIRSIZ];
  56 };
  57 

/* [previous][next][first][last][top][bottom][index][help]  */