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 | 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 |
30 | struct devsw { |
31 | int (*read)(struct inode*, char*, int); |
32 | int (*write)(struct inode*, char*, int); |
33 | }; |
34 | |
35 | extern struct devsw devsw[]; |
36 | |
37 | #define CONSOLE 1 |
38 | |