Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
#include <ctype.h>
4
#define Tfile Tfilescsi		/* avoid name conflict */
5
#include <disk.h>
6
#undef	Tfile
7
#include <bio.h>
8
#include <ip.h>
9
 
10
#include "dat.h"
11
#include "portfns.h"
12
 
13
#define malloc(n)	ialloc(n, 0)
14
 
15
#define	CHAT(cp) ((cons.flags&chatflag) || \
16
			((cp) && (((Chan*)(cp))->flags&chatflag)))
17
#define	QID9P1(a,b)	(Qid9p1){a,b}
18
 
19
#define SECOND(n)	(n)
20
#define MINUTE(n)	((n)*SECOND(60))
21
#define HOUR(n)		((n)*MINUTE(60))
22
#define DAY(n)		((n)*HOUR(24))
23
 
24
enum {
25
	QPDIR		= 0x80000000L,
26
	QPNONE		= 0,
27
	QPROOT		= 1,
28
	QPSUPER		= 2,
29
 
30
	/*
31
	 * perm argument in 9P create
32
	 */
33
	PDIR		= 1L<<31,	/* is a directory */
34
	PAPND		= 1L<<30,	/* is append only */
35
	PLOCK		= 1L<<29,	/* is locked on open */
36
 
37
	FID1		= 1,
38
	FID2		= 2,
39
 
40
	MAXBIAS		= SECOND(20),
41
	TLOCK		= MINUTE(5),
42
};
43
 
44
Uid*	uid;
45
short*	gidspace;
46
Lock	printing;
47
Time	tim;
48
File*	files;
49
Wpath*	wpaths;
50
Lock	wpathlock;
51
char*	errstr9p[MAXERR];
52
Chan*	chans;
53
RWLock	mainlock;
54
Timet	fs_mktime;
55
Timet	boottime;
56
Queue*	serveq;
57
Queue*	raheadq;
58
Rabuf*	rabuffree;
59
QLock	reflock;
60
Lock	rabuflock;
61
Tlock	tlocks[NTLOCK];
62
Lock	tlocklock;
63
Device*	devnone;
64
Startsb	startsb[5];
65
int	mballocs[MAXCAT];
66
 
67
/* from config block */
68
char	service[50];		/* my name */
69
Filsys	filsys[30];		/* named file systems */
70
/*
71
 * these are only documentation, but putting them in the config block makes
72
 * them visible.  the real values are compiled into cwfs.
73
 */
74
typedef struct Fspar Fspar;
75
struct Fspar {
76
	char*	name;
77
	long	actual;		/* compiled-in value */
78
	long	declared;
79
} fspar[];
80
 
81
ulong	roflag;
82
ulong	errorflag;
83
ulong	chatflag;
84
ulong	attachflag;
85
ulong	authdebugflag;
86
ulong	authdisableflag;
87
int	noattach;
88
int	wstatallow;		/* set to circumvent wstat permissions */
89
int	writeallow;		/* set to circumvent write permissions */
90
int	duallow;		/* single user to allow du */
91
int	readonly;		/* disable writes if true */
92
 
93
int	noauth;			/* Debug */
94
 
95
int	rawreadok;		/* allow reading raw data */
96
 
97
File*	flist[5003];		/* base of file structures */
98
Lock	flock;			/* manipulate flist */
99
 
100
long	growacct[1000];
101
 
102
struct
103
{
104
	RWLock	uidlock;
105
	Iobuf*	uidbuf;
106
	int	flen;
107
	int	find;
108
} uidgc;
109
 
110
extern	char	statecall[];
111
extern	char*	wormscode[];
112
extern	char*	tagnames[];