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