xref: /plan9/sys/src/cmd/disk/kfs/dat.c (revision 3e12c5d1bb89fc02707907988834ef147769ddaf)
1*3e12c5d1SDavid du Colombier #include	"all.h"
2*3e12c5d1SDavid du Colombier 
3*3e12c5d1SDavid du Colombier Uid*	uid;
4*3e12c5d1SDavid du Colombier char*	uidspace;
5*3e12c5d1SDavid du Colombier short*	gidspace;
6*3e12c5d1SDavid du Colombier File*	files;
7*3e12c5d1SDavid du Colombier Wpath*	wpaths;
8*3e12c5d1SDavid du Colombier Lock	wpathlock;
9*3e12c5d1SDavid du Colombier Lock	newfplock;
10*3e12c5d1SDavid du Colombier RWlock	mainlock;
11*3e12c5d1SDavid du Colombier long	boottime;
12*3e12c5d1SDavid du Colombier Tlock	*tlocks;
13*3e12c5d1SDavid du Colombier Conf	conf;
14*3e12c5d1SDavid du Colombier Cons	cons;
15*3e12c5d1SDavid du Colombier Chan	*chan;
16*3e12c5d1SDavid du Colombier char	service[2*NAMELEN];
17*3e12c5d1SDavid du Colombier char	*progname;
18*3e12c5d1SDavid du Colombier char	*procname;
19*3e12c5d1SDavid du Colombier int	RBUFSIZE;
20*3e12c5d1SDavid du Colombier int	BUFSIZE;
21*3e12c5d1SDavid du Colombier int	DIRPERBUF;
22*3e12c5d1SDavid du Colombier int	INDPERBUF;
23*3e12c5d1SDavid du Colombier int	INDPERBUF2;
24*3e12c5d1SDavid du Colombier int	FEPERBUF;
25*3e12c5d1SDavid du Colombier 
26*3e12c5d1SDavid du Colombier Filsys	filsys[MAXFILSYS] =
27*3e12c5d1SDavid du Colombier {
28*3e12c5d1SDavid du Colombier 	{"main",	{Devwren, 0, 0, 0},	0},
29*3e12c5d1SDavid du Colombier };
30*3e12c5d1SDavid du Colombier 
31*3e12c5d1SDavid du Colombier Device 	devnone = {Devnone, 0, 0, 0};
32*3e12c5d1SDavid du Colombier 
33*3e12c5d1SDavid du Colombier Devcall devcall[MAXDEV] = {
34*3e12c5d1SDavid du Colombier 	[Devnone]	{0},
35*3e12c5d1SDavid du Colombier 	[Devwren]	{wreninit, wrenream, wrencheck, wrensuper, wrenroot, wrensize, wrenread, wrenwrite},
36*3e12c5d1SDavid du Colombier };
37*3e12c5d1SDavid du Colombier 
38*3e12c5d1SDavid du Colombier void
39*3e12c5d1SDavid du Colombier (*p9call[MAXSYSCALL])(Chan*, Fcall*, Fcall*) =
40*3e12c5d1SDavid du Colombier {
41*3e12c5d1SDavid du Colombier 	[Tnop]		f_nop,
42*3e12c5d1SDavid du Colombier 	[Tsession]	f_session,
43*3e12c5d1SDavid du Colombier 	[Tflush]	f_flush,
44*3e12c5d1SDavid du Colombier 	[Tattach]	f_attach,
45*3e12c5d1SDavid du Colombier 	[Tclone]	f_clone,
46*3e12c5d1SDavid du Colombier 	[Twalk]		f_walk,
47*3e12c5d1SDavid du Colombier 	[Topen]		f_open,
48*3e12c5d1SDavid du Colombier 	[Tcreate]	f_create,
49*3e12c5d1SDavid du Colombier 	[Tread]		f_read,
50*3e12c5d1SDavid du Colombier 	[Twrite]	f_write,
51*3e12c5d1SDavid du Colombier 	[Tclunk]	f_clunk,
52*3e12c5d1SDavid du Colombier 	[Tremove]	f_remove,
53*3e12c5d1SDavid du Colombier 	[Tstat]		f_stat,
54*3e12c5d1SDavid du Colombier 	[Twstat]	f_wstat,
55*3e12c5d1SDavid du Colombier 	[Tclwalk]	f_clwalk,
56*3e12c5d1SDavid du Colombier 	[Tauth]		f_auth,
57*3e12c5d1SDavid du Colombier };
58*3e12c5d1SDavid du Colombier 
59*3e12c5d1SDavid du Colombier char*	tagnames[] =
60*3e12c5d1SDavid du Colombier {
61*3e12c5d1SDavid du Colombier 	[Tbuck]		"Tbuck",
62*3e12c5d1SDavid du Colombier 	[Tdir]		"Tdir",
63*3e12c5d1SDavid du Colombier 	[Tfile]		"Tfile",
64*3e12c5d1SDavid du Colombier 	[Tfree]		"Tfree",
65*3e12c5d1SDavid du Colombier 	[Tind1]		"Tind1",
66*3e12c5d1SDavid du Colombier 	[Tind2]		"Tind2",
67*3e12c5d1SDavid du Colombier 	[Tnone]		"Tnone",
68*3e12c5d1SDavid du Colombier 	[Tsuper]	"Tsuper",
69*3e12c5d1SDavid du Colombier 	[Tvirgo]	"Tvirgo",
70*3e12c5d1SDavid du Colombier 	[Tcache]	"Tcache",
71*3e12c5d1SDavid du Colombier };
72*3e12c5d1SDavid du Colombier 
73*3e12c5d1SDavid du Colombier char	*errstr[MAXERR] =
74*3e12c5d1SDavid du Colombier {
75*3e12c5d1SDavid du Colombier 	[Ebadspc]	"attach -- bad specifier",
76*3e12c5d1SDavid du Colombier 	[Efid]		"unknown fid",
77*3e12c5d1SDavid du Colombier 	[Echar]		"bad character in directory name",
78*3e12c5d1SDavid du Colombier 	[Eopen]		"read/write -- on non open fid",
79*3e12c5d1SDavid du Colombier 	[Ecount]	"read/write -- count too big",
80*3e12c5d1SDavid du Colombier 	[Ealloc]	"phase error -- directory entry not allocated",
81*3e12c5d1SDavid du Colombier 	[Eqid]		"phase error -- qid does not match",
82*3e12c5d1SDavid du Colombier 	[Eauth]		"no authentication",
83*3e12c5d1SDavid du Colombier 	[Eaccess]	"access permission denied",
84*3e12c5d1SDavid du Colombier 	[Eentry]	"directory entry not found",
85*3e12c5d1SDavid du Colombier 	[Emode]		"open/create -- unknown mode",
86*3e12c5d1SDavid du Colombier 	[Edir1]		"walk -- in a non-directory",
87*3e12c5d1SDavid du Colombier 	[Edir2]		"create -- in a non-directory",
88*3e12c5d1SDavid du Colombier 	[Ephase]	"phase error -- cannot happen",
89*3e12c5d1SDavid du Colombier 	[Eexist]	"create -- file exists",
90*3e12c5d1SDavid du Colombier 	[Edot]		"create -- . and .. illegal names",
91*3e12c5d1SDavid du Colombier 	[Eempty]	"remove -- directory not empty",
92*3e12c5d1SDavid du Colombier 	[Ebadu]		"attach -- privileged user",
93*3e12c5d1SDavid du Colombier 	[Enotu]		"wstat -- not owner",
94*3e12c5d1SDavid du Colombier 	[Enotg]		"wstat -- not in group",
95*3e12c5d1SDavid du Colombier 	[Ename]		"create/wstat -- bad character in file name",
96*3e12c5d1SDavid du Colombier 	[Ewalk]		"walk -- too many (system wide)",
97*3e12c5d1SDavid du Colombier 	[Eronly]	"file system read only",
98*3e12c5d1SDavid du Colombier 	[Efull]		"file system full",
99*3e12c5d1SDavid du Colombier 	[Eoffset]	"read/write -- offset negative",
100*3e12c5d1SDavid du Colombier 	[Elocked]	"open/create -- file is locked",
101*3e12c5d1SDavid du Colombier 	[Ebroken]	"close/read/write -- lock is broken",
102*3e12c5d1SDavid du Colombier };
103