annotate src/file.h @ 125:f103beea19f4

tweak
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Tue, 03 Dec 2019 09:32:33 +0900
parents e45b8d57b9e8
children 8e93917ce4be
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
116
e45b8d57b9e8 tweak context.pm
anatofuz
parents: 113
diff changeset
1 typedef struct file {
e45b8d57b9e8 tweak context.pm
anatofuz
parents: 113
diff changeset
2 enum { FD_NONE, FD_PIPE, FD_INODE } type;
e45b8d57b9e8 tweak context.pm
anatofuz
parents: 113
diff changeset
3 int ref; // reference count
e45b8d57b9e8 tweak context.pm
anatofuz
parents: 113
diff changeset
4 char readable;
e45b8d57b9e8 tweak context.pm
anatofuz
parents: 113
diff changeset
5 char writable;
e45b8d57b9e8 tweak context.pm
anatofuz
parents: 113
diff changeset
6 struct pipe *pipe;
e45b8d57b9e8 tweak context.pm
anatofuz
parents: 113
diff changeset
7 struct inode *ip;
e45b8d57b9e8 tweak context.pm
anatofuz
parents: 113
diff changeset
8 uint off;
e45b8d57b9e8 tweak context.pm
anatofuz
parents: 113
diff changeset
9 } file;
0
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 // in-memory copy of an inode
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 struct inode {
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 uint dev; // Device number
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 uint inum; // Inode number
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 int ref; // Reference count
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 int flags; // I_BUSY, I_VALID
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 short type; // copy of disk inode
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 short major;
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 short minor;
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 short nlink;
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 uint size;
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 uint addrs[NDIRECT+1];
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 };
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 #define I_BUSY 0x1
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 #define I_VALID 0x2
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 // table mapping major device number to
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 // device functions
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 struct devsw {
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 int (*read) (struct inode*, char*, int);
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 int (*write)(struct inode*, char*, int);
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 };
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
27
mir3636
parents: 0
diff changeset
34 struct cbc_devsw {
33
7a63dacab7f8 fix cbc_read
mir3636
parents: 31
diff changeset
35 __code (*read) (struct inode*, char*, int, __code (*)(int));
29
mir3636
parents: 27
diff changeset
36 //__code (*write)(struct inode*, char*, int, __code (*)(int));
27
mir3636
parents: 0
diff changeset
37 };
mir3636
parents: 0
diff changeset
38
0
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 extern struct devsw devsw[];
27
mir3636
parents: 0
diff changeset
40 extern struct cbc_devsw cbc_devsw[];
0
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 #define CONSOLE 1