xref: /xv6-public/fs.h (revision e958c538)
111a9947fSrtm // on-disk file system format
211a9947fSrtm 
324111398Skaashoek #define BSIZE 512  // block size
424111398Skaashoek 
524111398Skaashoek // sector 1 (2nd sector)
611a9947fSrtm struct superblock{
724111398Skaashoek   uint size;
824111398Skaashoek   uint nblocks;
924111398Skaashoek   uint ninodes;
1011a9947fSrtm };
1111a9947fSrtm 
12e8d11c2eSkaashoek #define NDIRECT 13
1311a9947fSrtm 
1411a9947fSrtm struct dinode {
1511a9947fSrtm   short type;
16e8d11c2eSkaashoek   short major;
17e8d11c2eSkaashoek   short minor;
1811a9947fSrtm   short nlink;
1911a9947fSrtm   uint size;
2011a9947fSrtm   uint addrs[NDIRECT];
2111a9947fSrtm };
22e8d11c2eSkaashoek 
2311a9947fSrtm #define T_DIR 1
2411a9947fSrtm #define T_FILE 2
25e8d11c2eSkaashoek #define T_DEV 3
2611a9947fSrtm 
2724111398Skaashoek // sector 0 is unused, sector 1 is superblock, inodes start at sector 2
2824111398Skaashoek #define IPB (BSIZE / sizeof(struct dinode))
2924111398Skaashoek #define IBLOCK(inum) (inum / IPB + 2)   // start of inode
3024111398Skaashoek #define BPB (BSIZE*8)
3124111398Skaashoek #define BBLOCK(b,ninodes) (b/BPB + (ninodes/IPB) + 3)  // start of bitmap
3211a9947fSrtm 
339d3fb671Srtm #define DIRSIZ 14
349d3fb671Srtm 
3511a9947fSrtm struct dirent {
3611a9947fSrtm   ushort inum;
379d3fb671Srtm   char name[DIRSIZ];
3811a9947fSrtm };
39*e958c538Skaashoek 
40*e958c538Skaashoek 
41