kernel/file.h
40 lines
1struct file {2 enum { FD_NONE, FD_PIPE, FD_INODE, FD_DEVICE } type;3 int ref; // reference count4 char readable;5 char writable;6 struct pipe *pipe; // FD_PIPE7 struct inode *ip; // FD_INODE and FD_DEVICE8 uint off; // FD_INODE9 short major; // FD_DEVICE10};1112#define major(dev) ((dev) >> 16 & 0xFFFF)13#define minor(dev) ((dev) & 0xFFFF)14#define mkdev(m,n) ((uint)((m)<<16| (n)))1516// in-memory copy of an inode17struct inode {18 uint dev; // Device number19 uint inum; // Inode number20 int ref; // Reference count21 struct sleeplock lock; // protects everything below here22 int valid; // inode has been read from disk?2324 short type; // copy of disk inode25 short major;26 short minor;27 short nlink;28 uint size;29 uint addrs[NDIRECT+1];30};3132// map major device number to device functions.33struct devsw {34 int (*read)(int, uint64, int);35 int (*write)(int, uint64, int);36};3738extern struct devsw devsw[];3940#define CONSOLE 141