summaryrefslogtreecommitdiff
path: root/kernel/file.h
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2019-06-11 09:57:14 -0400
committerRobert Morris <[email protected]>2019-06-11 09:57:14 -0400
commit5753553213df8f9de851adb68377db43faecb91f (patch)
tree3b629ff54897fca414146677532cb459a2ed11ba /kernel/file.h
parent91ba81110acd3163f7de3580b677eece0c57f5e7 (diff)
downloadxv6-labs-5753553213df8f9de851adb68377db43faecb91f.tar.gz
xv6-labs-5753553213df8f9de851adb68377db43faecb91f.tar.bz2
xv6-labs-5753553213df8f9de851adb68377db43faecb91f.zip
separate source into kernel/ user/ mkfs/
Diffstat (limited to 'kernel/file.h')
-rw-r--r--kernel/file.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/kernel/file.h b/kernel/file.h
new file mode 100644
index 0000000..f28018f
--- /dev/null
+++ b/kernel/file.h
@@ -0,0 +1,37 @@
+struct file {
+ enum { FD_NONE, FD_PIPE, FD_INODE } type;
+ int ref; // reference count
+ char readable;
+ char writable;
+ struct pipe *pipe;
+ struct inode *ip;
+ uint off;
+};
+
+
+// in-memory copy of an inode
+struct inode {
+ uint dev; // Device number
+ uint inum; // Inode number
+ int ref; // Reference count
+ struct sleeplock lock; // protects everything below here
+ int valid; // inode has been read from disk?
+
+ short type; // copy of disk inode
+ short major;
+ short minor;
+ short nlink;
+ uint size;
+ uint addrs[NDIRECT+1];
+};
+
+// table mapping major device number to
+// device functions
+struct devsw {
+ int (*read)(struct inode*, int, uint64, int);
+ int (*write)(struct inode*, int, uint64, int);
+};
+
+extern struct devsw devsw[];
+
+#define CONSOLE 1