xv6

port of xv6 to x86-64
git clone http://frotz.net/git/xv6.git
Log | Files | Refs | README | LICENSE

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