diff options
Diffstat (limited to 'src/include/linux/fs.h')
-rw-r--r-- | src/include/linux/fs.h | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/src/include/linux/fs.h b/src/include/linux/fs.h new file mode 100644 index 0000000..7a90b10 --- /dev/null +++ b/src/include/linux/fs.h | |||
@@ -0,0 +1,202 @@ | |||
1 | /* | ||
2 | * This file has definitions for some important file table | ||
3 | * structures etc. | ||
4 | */ | ||
5 | |||
6 | #ifndef _FS_H | ||
7 | #define _FS_H | ||
8 | |||
9 | #include <sys/types.h> | ||
10 | |||
11 | /* devices are as follows: (same as minix, so we can use the minix | ||
12 | * file system. These are major numbers.) | ||
13 | * | ||
14 | * 0 - unused (nodev) | ||
15 | * 1 - /dev/mem | ||
16 | * 2 - /dev/fd | ||
17 | * 3 - /dev/hd | ||
18 | * 4 - /dev/ttyx | ||
19 | * 5 - /dev/tty | ||
20 | * 6 - /dev/lp | ||
21 | * 7 - unnamed pipes | ||
22 | */ | ||
23 | |||
24 | #define IS_SEEKABLE(x) ((x)>=1 && (x)<=3) | ||
25 | |||
26 | #define READ 0 | ||
27 | #define WRITE 1 | ||
28 | #define READA 2 /* read-ahead - don't pause */ | ||
29 | #define WRITEA 3 /* "write-ahead" - silly, but somewhat useful */ | ||
30 | |||
31 | void buffer_init(long buffer_end); | ||
32 | |||
33 | #define MAJOR(a) (((unsigned)(a))>>8) | ||
34 | #define MINOR(a) ((a)&0xff) | ||
35 | |||
36 | #define NAME_LEN 14 | ||
37 | #define ROOT_INO 1 | ||
38 | |||
39 | #define I_MAP_SLOTS 8 | ||
40 | #define Z_MAP_SLOTS 8 | ||
41 | #define SUPER_MAGIC 0x137F | ||
42 | |||
43 | #define NR_OPEN 20 | ||
44 | #define NR_INODE 32 | ||
45 | #define NR_FILE 64 | ||
46 | #define NR_SUPER 8 | ||
47 | #define NR_HASH 307 | ||
48 | #define NR_BUFFERS nr_buffers | ||
49 | #define BLOCK_SIZE 1024 | ||
50 | #define BLOCK_SIZE_BITS 10 | ||
51 | #ifndef NULL | ||
52 | #define NULL ((void *) 0) | ||
53 | #endif | ||
54 | |||
55 | #define INODES_PER_BLOCK ((BLOCK_SIZE)/(sizeof (struct d_inode))) | ||
56 | #define DIR_ENTRIES_PER_BLOCK ((BLOCK_SIZE)/(sizeof (struct dir_entry))) | ||
57 | |||
58 | #define PIPE_HEAD(inode) ((inode).i_zone[0]) | ||
59 | #define PIPE_TAIL(inode) ((inode).i_zone[1]) | ||
60 | #define PIPE_SIZE(inode) ((PIPE_HEAD(inode)-PIPE_TAIL(inode))&(PAGE_SIZE-1)) | ||
61 | #define PIPE_EMPTY(inode) (PIPE_HEAD(inode)==PIPE_TAIL(inode)) | ||
62 | #define PIPE_FULL(inode) (PIPE_SIZE(inode)==(PAGE_SIZE-1)) | ||
63 | #define INC_PIPE(head) \ | ||
64 | __asm__("incl %0\n\tandl $4095,%0"::"m" (head)) | ||
65 | |||
66 | typedef char buffer_block[BLOCK_SIZE]; | ||
67 | |||
68 | struct buffer_head { | ||
69 | char * b_data; /* pointer to data block (1024 bytes) */ | ||
70 | unsigned long b_blocknr; /* block number */ | ||
71 | unsigned short b_dev; /* device (0 = free) */ | ||
72 | unsigned char b_uptodate; | ||
73 | unsigned char b_dirt; /* 0-clean,1-dirty */ | ||
74 | unsigned char b_count; /* users using this block */ | ||
75 | unsigned char b_lock; /* 0 - ok, 1 -locked */ | ||
76 | struct task_struct * b_wait; | ||
77 | struct buffer_head * b_prev; | ||
78 | struct buffer_head * b_next; | ||
79 | struct buffer_head * b_prev_free; | ||
80 | struct buffer_head * b_next_free; | ||
81 | }; | ||
82 | |||
83 | struct d_inode { | ||
84 | unsigned short i_mode; | ||
85 | unsigned short i_uid; | ||
86 | unsigned long i_size; | ||
87 | unsigned long i_time; | ||
88 | unsigned char i_gid; | ||
89 | unsigned char i_nlinks; | ||
90 | unsigned short i_zone[9]; | ||
91 | }; | ||
92 | |||
93 | struct m_inode { | ||
94 | unsigned short i_mode; | ||
95 | unsigned short i_uid; | ||
96 | unsigned long i_size; | ||
97 | unsigned long i_mtime; | ||
98 | unsigned char i_gid; | ||
99 | unsigned char i_nlinks; | ||
100 | unsigned short i_zone[9]; | ||
101 | /* these are in memory also */ | ||
102 | struct task_struct * i_wait; | ||
103 | unsigned long i_atime; | ||
104 | unsigned long i_ctime; | ||
105 | unsigned short i_dev; | ||
106 | unsigned short i_num; | ||
107 | unsigned short i_count; | ||
108 | unsigned char i_lock; | ||
109 | unsigned char i_dirt; | ||
110 | unsigned char i_pipe; | ||
111 | unsigned char i_mount; | ||
112 | unsigned char i_seek; | ||
113 | unsigned char i_update; | ||
114 | }; | ||
115 | |||
116 | struct file { | ||
117 | unsigned short f_mode; | ||
118 | unsigned short f_flags; | ||
119 | unsigned short f_count; | ||
120 | struct m_inode * f_inode; | ||
121 | off_t f_pos; | ||
122 | }; | ||
123 | |||
124 | struct super_block { | ||
125 | unsigned short s_ninodes; | ||
126 | unsigned short s_nzones; | ||
127 | unsigned short s_imap_blocks; | ||
128 | unsigned short s_zmap_blocks; | ||
129 | unsigned short s_firstdatazone; | ||
130 | unsigned short s_log_zone_size; | ||
131 | unsigned long s_max_size; | ||
132 | unsigned short s_magic; | ||
133 | /* These are only in memory */ | ||
134 | struct buffer_head * s_imap[8]; | ||
135 | struct buffer_head * s_zmap[8]; | ||
136 | unsigned short s_dev; | ||
137 | struct m_inode * s_isup; | ||
138 | struct m_inode * s_imount; | ||
139 | unsigned long s_time; | ||
140 | struct task_struct * s_wait; | ||
141 | unsigned char s_lock; | ||
142 | unsigned char s_rd_only; | ||
143 | unsigned char s_dirt; | ||
144 | }; | ||
145 | |||
146 | struct d_super_block { | ||
147 | unsigned short s_ninodes; | ||
148 | unsigned short s_nzones; | ||
149 | unsigned short s_imap_blocks; | ||
150 | unsigned short s_zmap_blocks; | ||
151 | unsigned short s_firstdatazone; | ||
152 | unsigned short s_log_zone_size; | ||
153 | unsigned long s_max_size; | ||
154 | unsigned short s_magic; | ||
155 | }; | ||
156 | |||
157 | struct dir_entry { | ||
158 | unsigned short inode; | ||
159 | char name[NAME_LEN]; | ||
160 | }; | ||
161 | |||
162 | extern struct m_inode inode_table[NR_INODE]; | ||
163 | extern struct file file_table[NR_FILE]; | ||
164 | extern struct super_block super_block[NR_SUPER]; | ||
165 | extern struct buffer_head * start_buffer; | ||
166 | extern int nr_buffers; | ||
167 | |||
168 | extern void check_disk_change(int dev); | ||
169 | extern int floppy_change(unsigned int nr); | ||
170 | extern int ticks_to_floppy_on(unsigned int dev); | ||
171 | extern void floppy_on(unsigned int dev); | ||
172 | extern void floppy_off(unsigned int dev); | ||
173 | extern void truncate(struct m_inode * inode); | ||
174 | extern void sync_inodes(void); | ||
175 | extern void wait_on(struct m_inode * inode); | ||
176 | extern int bmap(struct m_inode * inode,int block); | ||
177 | extern int create_block(struct m_inode * inode,int block); | ||
178 | extern struct m_inode * namei(const char * pathname); | ||
179 | extern int open_namei(const char * pathname, int flag, int mode, | ||
180 | struct m_inode ** res_inode); | ||
181 | extern void iput(struct m_inode * inode); | ||
182 | extern struct m_inode * iget(int dev,int nr); | ||
183 | extern struct m_inode * get_empty_inode(void); | ||
184 | extern struct m_inode * get_pipe_inode(void); | ||
185 | extern struct buffer_head * get_hash_table(int dev, int block); | ||
186 | extern struct buffer_head * getblk(int dev, int block); | ||
187 | extern void ll_rw_block(int rw, struct buffer_head * bh); | ||
188 | extern void brelse(struct buffer_head * buf); | ||
189 | extern struct buffer_head * bread(int dev,int block); | ||
190 | extern void bread_page(unsigned long addr,int dev,int b[4]); | ||
191 | extern struct buffer_head * breada(int dev,int block,...); | ||
192 | extern int new_block(int dev); | ||
193 | extern void free_block(int dev, int block); | ||
194 | extern struct m_inode * new_inode(int dev); | ||
195 | extern void free_inode(struct m_inode * inode); | ||
196 | extern int sync_dev(int dev); | ||
197 | extern struct super_block * get_super(int dev); | ||
198 | extern int ROOT_DEV; | ||
199 | |||
200 | extern void mount_root(void); | ||
201 | |||
202 | #endif | ||