Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_fixcpp/sys/src/cmd/disk/kfs/portdat.h – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/*
2
 * fundamental constants
3
 */
4
#define	NAMELEN		28		/* size of names */
5
#define	NDBLOCK		6		/* number of direct blocks in Dentry */
6
#define	MAXDAT		8192		/* max allowable data message */
7
#define NTLOCK		200		/* number of active file Tlocks */
8
 
9
typedef	struct	Fbuf	Fbuf;
10
typedef	struct	Super1	Super1;
11
typedef	struct	Superb	Superb;
12
// typedef struct	Qid	Qid;
13
typedef	struct	Dentry	Dentry;
14
typedef	struct	Tag	Tag;
15
 
16
typedef struct	Device	Device;
17
typedef struct	Qid9p1	Qid9p1;
18
typedef	struct	File	File;
19
typedef	struct	Filsys	Filsys;
20
typedef	struct	Filta	Filta;
21
typedef	struct	Filter	Filter;
22
typedef		ulong	Float;
23
typedef	struct	Hiob	Hiob;
24
typedef	struct	Iobuf	Iobuf;
25
typedef	struct	P9call	P9call;
26
typedef	struct	Tlock	Tlock;
27
// typedef	struct	Tm	Tm;
28
typedef	struct	Uid	Uid;
29
typedef	struct	Wpath	Wpath;
30
typedef struct	AuthRpc	AuthRpc;
31
 
32
/*
33
 * DONT TOUCH -- data structures stored on disk
34
 */
35
/* DONT TOUCH, this is the disk structure */
36
struct	Qid9p1
37
{
38
	long	path;
39
	long	version;
40
};
41
 
42
/* DONT TOUCH, this is the disk structure */
43
struct	Dentry
44
{
45
	char	name[NAMELEN];
46
	short	uid;
47
	short	gid;
48
	ushort	mode;
49
		#define	DALLOC	0x8000
50
		#define	DDIR	0x4000
51
		#define	DAPND	0x2000
52
		#define	DLOCK	0x1000
53
		#define	DREAD	0x4
54
		#define	DWRITE	0x2
55
		#define	DEXEC	0x1
56
	Qid9p1	qid;
57
	long	size;
58
	long	dblock[NDBLOCK];
59
	long	iblock;
60
	long	diblock;
61
	long	atime;
62
	long	mtime;
63
};
64
 
65
/* DONT TOUCH, this is the disk structure */
66
struct	Tag
67
{
68
	short	pad;
69
	short	tag;
70
	long	path;
71
};
72
 
73
/* DONT TOUCH, this is the disk structure */
74
struct	Super1
75
{
76
	long	fstart;
77
	long	fsize;
78
	long	tfree;
79
	long	qidgen;		/* generator for unique ids */
80
 
81
	long	fsok;		/* file system ok */
82
 
83
	/*
84
	 * garbage for WWC device
85
	 */
86
	long	roraddr;	/* dump root addr */
87
	long	last;		/* last super block addr */
88
	long	next;		/* next super block addr */
89
};
90
 
91
/* DONT TOUCH, this is the disk structure */
92
struct	Fbuf
93
{
94
	long	nfree;
95
	long	free[1];		/* changes based on BUFSIZE */
96
};
97
 
98
/* DONT TOUCH, this is the disk structure */
99
struct	Superb
100
{
101
	Super1;
102
	Fbuf	fbuf;
103
};
104
 
105
struct	Device
106
{
107
	char	type;
108
	char	ctrl;
109
	char	unit;
110
	char	part;
111
};
112
 
113
/*
114
 * for load stats
115
 */
116
struct	Filter
117
{
118
	ulong	count;			/* count and old count kept separate */
119
	ulong	oldcount;		/* so interrput can read them */
120
	Float	filter[3];		/* filters for 1m 10m 100m */ 
121
};
122
 
123
struct	Filta
124
{
125
	Filter*	f;
126
	int	scale;
127
};
128
 
129
/*
130
 * array of qids that are locked
131
 */
132
struct	Tlock
133
{
134
	Device	dev;
135
	long	time;
136
	long	qpath;
137
	File*	file;
138
};
139
 
140
struct	File
141
{
142
	QLock;
143
	Qid	qid;
144
	Wpath*	wpath;
145
	Chan*	cp;		/* null means a free slot */
146
	Tlock*	tlock;		/* if file is locked */
147
	File*	next;		/* in cp->flist */
148
	File*	list;		/* in list of free files */
149
	Filsys*	fs;
150
	long	addr;
151
	long	slot;
152
	long	lastra;		/* read ahead address */
153
	short	fid;
154
	short	uid;
155
	char	open;
156
		#define	FREAD	1
157
		#define	FWRITE	2
158
		#define	FREMOV	4
159
		#define	FWSTAT	8
160
	long	doffset;	/* directory reading */
161
	ulong	dvers;
162
	long	dslot;
163
 
164
	/* for network authentication */
165
	AuthRpc	*rpc;
166
	short	cuid;
167
};
168
 
169
struct	Filsys
170
{
171
	char*	name;		/* name of filesys */
172
	Device	dev;		/* device that filesys is on */
173
	int	flags;
174
		#define	FREAM		(1<<1)	/* mkfs */
175
		#define	FRECOVER	(1<<2)	/* install last dump */
176
};
177
 
178
struct	Hiob
179
{
180
	Iobuf*	link;
181
	Lock;
182
};
183
 
184
struct	Iobuf
185
{
186
	QLock;
187
	Device	dev;
188
	Iobuf	*next;		/* for hash */
189
	Iobuf	*fore;		/* for lru */
190
	Iobuf	*back;		/* for lru */
191
	char	*iobuf;		/* only active while locked */
192
	char	*xiobuf;	/* "real" buffer pointer */
193
	long	addr;
194
	int	flags;
195
};
196
 
197
struct	P9call
198
{
199
	uchar	calln;
200
	uchar	rxflag;
201
	short	msize;
202
	void	(*func)(Chan*, int);
203
};
204
 
205
// struct	Tm
206
// {
207
// 	/* see ctime(3) */
208
// 	int	sec;
209
// 	int	min;
210
// 	int	hour;
211
// 	int	mday;
212
// 	int	mon;
213
// 	int	year;
214
// 	int	wday;
215
// 	int	yday;
216
// 	int	isdst;
217
// };
218
 
219
struct	Uid
220
{
221
	short	uid;		/* user id */
222
	short	lead;		/* leader of group */
223
	short	offset;		/* byte offset in uidspace */
224
};
225
 
226
struct	Wpath
227
{
228
	Wpath	*up;		/* pointer upwards in path */
229
	Wpath	*list;		/* link in free chain */
230
	long	addr;		/* directory entry addr of parent */
231
	long	slot;		/* directory entry slot of parent */
232
	short	refs;		/* number of files using this structure */
233
};
234
 
235
#define	MAXFDATA	8192
236
 
237
/*
238
 * error codes generated from the file server
239
 */
240
enum
241
{
242
	Ebadspc = 1,
243
	Efid,
244
	Efidinuse,
245
	Echar,
246
	Eopen,
247
	Ecount,
248
	Ealloc,
249
	Eqid,
250
	Eauth,
251
	Eauthmsg,
252
	Eaccess,
253
	Eentry,
254
	Emode,
255
	Edir1,
256
	Edir2,
257
	Ephase,
258
	Eexist,
259
	Edot,
260
	Eempty,
261
	Ebadu,
262
	Enotu,
263
	Enotg,
264
	Ename,
265
	Ewalk,
266
	Eronly,
267
	Efull,
268
	Eoffset,
269
	Elocked,
270
	Ebroken,
271
	Etoolong,
272
	Ersc,
273
	Eqidmode,
274
	Econvert,
275
	Enotm,
276
	Enotd,
277
	Enotl,
278
	Enotw,
279
	Esystem,
280
 
281
	MAXERR
282
};
283
 
284
/*
285
 * devnone block numbers
286
 */
287
enum
288
{
289
	Cwio1 	= 1,
290
	Cwio2,
291
	Cwxx1,
292
	Cwxx2,
293
	Cwxx3,
294
	Cwxx4,
295
	Cwdump1,
296
	Cwdump2,
297
	Cuidbuf,
298
};
299
 
300
/*
301
 * tags on block
302
 */
303
enum
304
{
305
	Tnone		= 0,
306
	Tsuper,			/* the super block */
307
	Tdir,			/* directory contents */
308
	Tind1,			/* points to blocks */
309
	Tind2,			/* points to Tind1 */
310
	Tfile,			/* file contents */
311
	Tfree,			/* in free list */
312
	Tbuck,			/* cache fs bucket */
313
	Tvirgo,			/* fake worm virgin bits */
314
	Tcache,			/* cw cache things */
315
	MAXTAG
316
};
317
 
318
/*
319
 * flags to getbuf
320
 */
321
enum
322
{
323
	Bread	= (1<<0),	/* read the block if miss */
324
	Bprobe	= (1<<1),	/* return null if miss */
325
	Bmod	= (1<<2),	/* set modified bit in buffer */
326
	Bimm	= (1<<3),	/* set immediate bit in buffer */
327
	Bres	= (1<<4),	/* reserved, never renammed */
328
};
329
 
330
/*
331
 * open modes passed into P9 open/create
332
 */
333
enum
334
{
335
	MREAD	= 0,
336
	MWRITE,
337
	MBOTH,
338
	MEXEC,
339
	MTRUNC	= (1<<4),	/* truncate on open */
340
	MCEXEC	= (1<<5),	/* close on exec (host) */
341
	MRCLOSE	= (1<<6),	/* remove on close */
342
};
343
 
344
/*
345
 * check flags
346
 */
347
enum
348
{
349
	Crdall	= (1<<0),	/* read all files */
350
	Ctag	= (1<<1),	/* rebuild tags */
351
	Cpfile	= (1<<2),	/* print files */
352
	Cpdir	= (1<<3),	/* print directories */
353
	Cfree	= (1<<4),	/* rebuild free list */
354
	Cream	= (1<<6),	/* clear all bad tags */
355
	Cbad	= (1<<7),	/* clear all bad blocks */
356
	Ctouch	= (1<<8),	/* touch old dir and indir */
357
	Cquiet	= (1<<9),	/* report just nasty things */
358
};
359
 
360
/*
361
 * buffer size variables
362
 */
363
extern int	RBUFSIZE;
364
extern int	BUFSIZE;
365
extern int	DIRPERBUF;
366
extern int	INDPERBUF;
367
extern int	INDPERBUF2;
368
extern int	FEPERBUF;