Appearance
file.h
struct file {
enum { FD_NONE, FD_PIPE, FD_INODE, FD_DEVICE } type;
int ref;
char readable;
char writable;
struct pipe *pipe;
struct inode *ip;
uint off;
short major;
};
#define major(dev) ((dev) >> 16 & 0xFFFF)
#define minor(dev) ((dev) & 0xFFFF)
#define mkdev(m,n) ((uint)((m)<<16| (n)))
TIP
in-memory copy of an inode
struct inode {
uint dev;
uint inum;
int ref;
struct sleeplock lock;
int valid;
short type;
short major;
short minor;
short nlink;
uint size;
uint addrs[NDIRECT+1];
};
TIP
map major device number to device functions.
struct devsw {
int (*read)(int, uint64, int);
int (*write)(int, uint64, int);
};
extern struct devsw devsw[];
#define CONSOLE 1