Blame


1 97a5e5f2 2003-11-23 devnull /*
2 97a5e5f2 2003-11-23 devnull #pragma src "/sys/src/libc/9sys"
3 97a5e5f2 2003-11-23 devnull #pragma lib "libc.a"
4 97a5e5f2 2003-11-23 devnull */
5 97a5e5f2 2003-11-23 devnull
6 97a5e5f2 2003-11-23 devnull #define VERSION9P "9P2000"
7 97a5e5f2 2003-11-23 devnull
8 97a5e5f2 2003-11-23 devnull #define MAXWELEM 16
9 97a5e5f2 2003-11-23 devnull
10 97a5e5f2 2003-11-23 devnull typedef
11 97a5e5f2 2003-11-23 devnull struct Fcall
12 97a5e5f2 2003-11-23 devnull {
13 97a5e5f2 2003-11-23 devnull uchar type;
14 97a5e5f2 2003-11-23 devnull u32int fid;
15 97a5e5f2 2003-11-23 devnull ushort tag;
16 97a5e5f2 2003-11-23 devnull u32int msize; /* Tversion, Rversion */
17 97a5e5f2 2003-11-23 devnull char *version; /* Tversion, Rversion */
18 97a5e5f2 2003-11-23 devnull ushort oldtag; /* Tflush */
19 97a5e5f2 2003-11-23 devnull char *ename; /* Rerror */
20 97a5e5f2 2003-11-23 devnull Qid qid; /* Rattach, Ropen, Rcreate */
21 97a5e5f2 2003-11-23 devnull u32int iounit; /* Ropen, Rcreate */
22 97a5e5f2 2003-11-23 devnull Qid aqid; /* Rauth */
23 97a5e5f2 2003-11-23 devnull u32int afid; /* Tauth, Tattach */
24 97a5e5f2 2003-11-23 devnull char *uname; /* Tauth, Tattach */
25 97a5e5f2 2003-11-23 devnull char *aname; /* Tauth, Tattach */
26 97a5e5f2 2003-11-23 devnull u32int perm; /* Tcreate */
27 97a5e5f2 2003-11-23 devnull char *name; /* Tcreate */
28 97a5e5f2 2003-11-23 devnull uchar mode; /* Tcreate, Topen */
29 97a5e5f2 2003-11-23 devnull u32int newfid; /* Twalk */
30 97a5e5f2 2003-11-23 devnull ushort nwname; /* Twalk */
31 97a5e5f2 2003-11-23 devnull char *wname[MAXWELEM]; /* Twalk */
32 97a5e5f2 2003-11-23 devnull ushort nwqid; /* Rwalk */
33 97a5e5f2 2003-11-23 devnull Qid wqid[MAXWELEM]; /* Rwalk */
34 97a5e5f2 2003-11-23 devnull vlong offset; /* Tread, Twrite */
35 97a5e5f2 2003-11-23 devnull u32int count; /* Tread, Twrite, Rread */
36 97a5e5f2 2003-11-23 devnull char *data; /* Twrite, Rread */
37 97a5e5f2 2003-11-23 devnull ushort nstat; /* Twstat, Rstat */
38 97a5e5f2 2003-11-23 devnull uchar *stat; /* Twstat, Rstat */
39 97a5e5f2 2003-11-23 devnull } Fcall;
40 97a5e5f2 2003-11-23 devnull
41 97a5e5f2 2003-11-23 devnull
42 97a5e5f2 2003-11-23 devnull #define GBIT8(p) ((p)[0])
43 97a5e5f2 2003-11-23 devnull #define GBIT16(p) ((p)[0]|((p)[1]<<8))
44 97a5e5f2 2003-11-23 devnull #define GBIT32(p) ((p)[0]|((p)[1]<<8)|((p)[2]<<16)|((p)[3]<<24))
45 97a5e5f2 2003-11-23 devnull #define GBIT64(p) ((vlong)((p)[0]|((p)[1]<<8)|((p)[2]<<16)|((p)[3]<<24)) |\
46 97a5e5f2 2003-11-23 devnull ((vlong)((p)[4]|((p)[5]<<8)|((p)[6]<<16)|((p)[7]<<24)) << 32))
47 97a5e5f2 2003-11-23 devnull
48 97a5e5f2 2003-11-23 devnull #define PBIT8(p,v) (p)[0]=(v)
49 97a5e5f2 2003-11-23 devnull #define PBIT16(p,v) (p)[0]=(v);(p)[1]=(v)>>8
50 97a5e5f2 2003-11-23 devnull #define PBIT32(p,v) (p)[0]=(v);(p)[1]=(v)>>8;(p)[2]=(v)>>16;(p)[3]=(v)>>24
51 97a5e5f2 2003-11-23 devnull #define PBIT64(p,v) (p)[0]=(v);(p)[1]=(v)>>8;(p)[2]=(v)>>16;(p)[3]=(v)>>24;\
52 97a5e5f2 2003-11-23 devnull (p)[4]=(v)>>32;(p)[5]=(v)>>40;(p)[6]=(v)>>48;(p)[7]=(v)>>56
53 97a5e5f2 2003-11-23 devnull
54 97a5e5f2 2003-11-23 devnull #define BIT8SZ 1
55 97a5e5f2 2003-11-23 devnull #define BIT16SZ 2
56 97a5e5f2 2003-11-23 devnull #define BIT32SZ 4
57 97a5e5f2 2003-11-23 devnull #define BIT64SZ 8
58 97a5e5f2 2003-11-23 devnull #define QIDSZ (BIT8SZ+BIT32SZ+BIT64SZ)
59 97a5e5f2 2003-11-23 devnull
60 97a5e5f2 2003-11-23 devnull /* STATFIXLEN includes leading 16-bit count */
61 97a5e5f2 2003-11-23 devnull /* The count, however, excludes itself; total size is BIT16SZ+count */
62 97a5e5f2 2003-11-23 devnull #define STATFIXLEN (BIT16SZ+QIDSZ+5*BIT16SZ+4*BIT32SZ+1*BIT64SZ) /* amount of fixed length data in a stat buffer */
63 97a5e5f2 2003-11-23 devnull
64 97a5e5f2 2003-11-23 devnull #define NOTAG (ushort)~0U /* Dummy tag */
65 97a5e5f2 2003-11-23 devnull #define NOFID (u32int)~0U /* Dummy fid */
66 97a5e5f2 2003-11-23 devnull #define IOHDRSZ 24 /* ample room for Twrite/Rread header (iounit) */
67 97a5e5f2 2003-11-23 devnull
68 97a5e5f2 2003-11-23 devnull enum
69 97a5e5f2 2003-11-23 devnull {
70 97a5e5f2 2003-11-23 devnull Tversion = 100,
71 97a5e5f2 2003-11-23 devnull Rversion,
72 97a5e5f2 2003-11-23 devnull Tauth = 102,
73 97a5e5f2 2003-11-23 devnull Rauth,
74 97a5e5f2 2003-11-23 devnull Tattach = 104,
75 97a5e5f2 2003-11-23 devnull Rattach,
76 97a5e5f2 2003-11-23 devnull Terror = 106, /* illegal */
77 97a5e5f2 2003-11-23 devnull Rerror,
78 97a5e5f2 2003-11-23 devnull Tflush = 108,
79 97a5e5f2 2003-11-23 devnull Rflush,
80 97a5e5f2 2003-11-23 devnull Twalk = 110,
81 97a5e5f2 2003-11-23 devnull Rwalk,
82 97a5e5f2 2003-11-23 devnull Topen = 112,
83 97a5e5f2 2003-11-23 devnull Ropen,
84 97a5e5f2 2003-11-23 devnull Tcreate = 114,
85 97a5e5f2 2003-11-23 devnull Rcreate,
86 97a5e5f2 2003-11-23 devnull Tread = 116,
87 97a5e5f2 2003-11-23 devnull Rread,
88 97a5e5f2 2003-11-23 devnull Twrite = 118,
89 97a5e5f2 2003-11-23 devnull Rwrite,
90 97a5e5f2 2003-11-23 devnull Tclunk = 120,
91 97a5e5f2 2003-11-23 devnull Rclunk,
92 97a5e5f2 2003-11-23 devnull Tremove = 122,
93 97a5e5f2 2003-11-23 devnull Rremove,
94 97a5e5f2 2003-11-23 devnull Tstat = 124,
95 97a5e5f2 2003-11-23 devnull Rstat,
96 97a5e5f2 2003-11-23 devnull Twstat = 126,
97 97a5e5f2 2003-11-23 devnull Rwstat,
98 97a5e5f2 2003-11-23 devnull Tmax,
99 97a5e5f2 2003-11-23 devnull };
100 97a5e5f2 2003-11-23 devnull
101 97a5e5f2 2003-11-23 devnull uint convM2S(uchar*, uint, Fcall*);
102 97a5e5f2 2003-11-23 devnull uint convS2M(Fcall*, uchar*, uint);
103 97a5e5f2 2003-11-23 devnull uint sizeS2M(Fcall*);
104 97a5e5f2 2003-11-23 devnull
105 97a5e5f2 2003-11-23 devnull int statcheck(uchar *abuf, uint nbuf);
106 97a5e5f2 2003-11-23 devnull uint convM2D(uchar*, uint, Dir*, char*);
107 97a5e5f2 2003-11-23 devnull uint convD2M(Dir*, uchar*, uint);
108 97a5e5f2 2003-11-23 devnull uint sizeD2M(Dir*);
109 97a5e5f2 2003-11-23 devnull
110 97a5e5f2 2003-11-23 devnull int fcallfmt(Fmt*);
111 97a5e5f2 2003-11-23 devnull int dirfmt(Fmt*);
112 97a5e5f2 2003-11-23 devnull int dirmodefmt(Fmt*);
113 97a5e5f2 2003-11-23 devnull
114 97a5e5f2 2003-11-23 devnull int read9pmsg(int, void*, uint);
115 97a5e5f2 2003-11-23 devnull
116 97a5e5f2 2003-11-23 devnull /*
117 97a5e5f2 2003-11-23 devnull #pragma varargck type "F" Fcall*
118 97a5e5f2 2003-11-23 devnull #pragma varargck type "M" ulong
119 97a5e5f2 2003-11-23 devnull #pragma varargck type "D" Dir*
120 97a5e5f2 2003-11-23 devnull */