1struct 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
13struct inode {
14 uint dev; // Device number
15 uint inum; // Inode number
16 int ref; // Reference count
17 struct sleeplock lock; // protects everything below here
18 int valid; // inode has been read from disk?
19
20 short type; // copy of disk inode
21 short major;
22 short minor;
23 short nlink;
24 uint size;
25 uint addrs[NDIRECT+1];
26};
27
28// table mapping major device number to
29// device functions
30struct devsw {
31 int (*read)(struct inode*, char*, int);
32 int (*write)(struct inode*, char*, int);
33};
34
35extern struct devsw devsw[];
36
37#define CONSOLE 1
38