file.h (767B)
1 struct file { 2 enum { FD_NONE, FD_PIPE, FD_INODE } type; 3 int ref; // reference count 4 char readable; 5 char writable; 6 struct pipe *pipe; 7 struct inode *ip; 8 uint off; 9 }; 10 11 12 // in-memory copy of an inode 13 struct inode { 14 uint dev; // Device number 15 uint inum; // Inode number 16 int ref; // Reference count 17 int flags; // I_BUSY, I_VALID 18 19 short type; // copy of disk inode 20 short major; 21 short minor; 22 short nlink; 23 uint size; 24 uint addrs[NDIRECT+1]; 25 }; 26 #define I_BUSY 0x1 27 #define I_VALID 0x2 28 29 // table mapping major device number to 30 // device functions 31 struct devsw { 32 int (*read)(struct inode*, char*, int); 33 int (*write)(struct inode*, char*, int); 34 }; 35 36 extern struct devsw devsw[]; 37 38 #define CONSOLE 1