xref: /xv6-public/file.h (revision a5fbfe41)
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
39