Blame


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