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 8ff457f5 2009-08-20 tim.newsh int uidnum; /* Tattach, Tauth */
48 b5c7be2f 2006-03-03 devnull char *extension; /* Tcreate */
49 97a5e5f2 2003-11-23 devnull } Fcall;
50 97a5e5f2 2003-11-23 devnull
51 97a5e5f2 2003-11-23 devnull
52 97a5e5f2 2003-11-23 devnull #define GBIT8(p) ((p)[0])
53 97a5e5f2 2003-11-23 devnull #define GBIT16(p) ((p)[0]|((p)[1]<<8))
54 9a5678a8 2006-11-04 devnull #define GBIT32(p) ((u32int)((p)[0]|((p)[1]<<8)|((p)[2]<<16)|((p)[3]<<24)))
55 fc1d5d8c 2006-01-17 devnull #define GBIT64(p) ((u32int)((p)[0]|((p)[1]<<8)|((p)[2]<<16)|((p)[3]<<24)) |\
56 97a5e5f2 2003-11-23 devnull ((vlong)((p)[4]|((p)[5]<<8)|((p)[6]<<16)|((p)[7]<<24)) << 32))
57 97a5e5f2 2003-11-23 devnull
58 97a5e5f2 2003-11-23 devnull #define PBIT8(p,v) (p)[0]=(v)
59 97a5e5f2 2003-11-23 devnull #define PBIT16(p,v) (p)[0]=(v);(p)[1]=(v)>>8
60 97a5e5f2 2003-11-23 devnull #define PBIT32(p,v) (p)[0]=(v);(p)[1]=(v)>>8;(p)[2]=(v)>>16;(p)[3]=(v)>>24
61 97a5e5f2 2003-11-23 devnull #define PBIT64(p,v) (p)[0]=(v);(p)[1]=(v)>>8;(p)[2]=(v)>>16;(p)[3]=(v)>>24;\
62 97a5e5f2 2003-11-23 devnull (p)[4]=(v)>>32;(p)[5]=(v)>>40;(p)[6]=(v)>>48;(p)[7]=(v)>>56
63 97a5e5f2 2003-11-23 devnull
64 97a5e5f2 2003-11-23 devnull #define BIT8SZ 1
65 97a5e5f2 2003-11-23 devnull #define BIT16SZ 2
66 97a5e5f2 2003-11-23 devnull #define BIT32SZ 4
67 97a5e5f2 2003-11-23 devnull #define BIT64SZ 8
68 97a5e5f2 2003-11-23 devnull #define QIDSZ (BIT8SZ+BIT32SZ+BIT64SZ)
69 97a5e5f2 2003-11-23 devnull
70 97a5e5f2 2003-11-23 devnull /* STATFIXLEN includes leading 16-bit count */
71 97a5e5f2 2003-11-23 devnull /* The count, however, excludes itself; total size is BIT16SZ+count */
72 97a5e5f2 2003-11-23 devnull #define STATFIXLEN (BIT16SZ+QIDSZ+5*BIT16SZ+4*BIT32SZ+1*BIT64SZ) /* amount of fixed length data in a stat buffer */
73 b7eed2e0 2005-09-13 devnull #define STATFIXLENU (STATFIXLEN+BIT16SZ+3*BIT32SZ) /* for 9P2000.u */
74 97a5e5f2 2003-11-23 devnull
75 97a5e5f2 2003-11-23 devnull #define NOTAG (ushort)~0U /* Dummy tag */
76 97a5e5f2 2003-11-23 devnull #define NOFID (u32int)~0U /* Dummy fid */
77 8ff457f5 2009-08-20 tim.newsh #define NOUID (-1) /* Dummy uid */
78 97a5e5f2 2003-11-23 devnull #define IOHDRSZ 24 /* ample room for Twrite/Rread header (iounit) */
79 97a5e5f2 2003-11-23 devnull
80 97a5e5f2 2003-11-23 devnull enum
81 97a5e5f2 2003-11-23 devnull {
82 97a5e5f2 2003-11-23 devnull Tversion = 100,
83 97a5e5f2 2003-11-23 devnull Rversion,
84 97a5e5f2 2003-11-23 devnull Tauth = 102,
85 97a5e5f2 2003-11-23 devnull Rauth,
86 97a5e5f2 2003-11-23 devnull Tattach = 104,
87 97a5e5f2 2003-11-23 devnull Rattach,
88 97a5e5f2 2003-11-23 devnull Terror = 106, /* illegal */
89 97a5e5f2 2003-11-23 devnull Rerror,
90 97a5e5f2 2003-11-23 devnull Tflush = 108,
91 97a5e5f2 2003-11-23 devnull Rflush,
92 97a5e5f2 2003-11-23 devnull Twalk = 110,
93 97a5e5f2 2003-11-23 devnull Rwalk,
94 97a5e5f2 2003-11-23 devnull Topen = 112,
95 97a5e5f2 2003-11-23 devnull Ropen,
96 97a5e5f2 2003-11-23 devnull Tcreate = 114,
97 97a5e5f2 2003-11-23 devnull Rcreate,
98 97a5e5f2 2003-11-23 devnull Tread = 116,
99 97a5e5f2 2003-11-23 devnull Rread,
100 97a5e5f2 2003-11-23 devnull Twrite = 118,
101 97a5e5f2 2003-11-23 devnull Rwrite,
102 97a5e5f2 2003-11-23 devnull Tclunk = 120,
103 97a5e5f2 2003-11-23 devnull Rclunk,
104 97a5e5f2 2003-11-23 devnull Tremove = 122,
105 97a5e5f2 2003-11-23 devnull Rremove,
106 97a5e5f2 2003-11-23 devnull Tstat = 124,
107 97a5e5f2 2003-11-23 devnull Rstat,
108 97a5e5f2 2003-11-23 devnull Twstat = 126,
109 97a5e5f2 2003-11-23 devnull Rwstat,
110 97a5e5f2 2003-11-23 devnull Tmax,
111 32f69c36 2003-12-11 devnull
112 32f69c36 2003-12-11 devnull Topenfd = 98,
113 cbeb0b26 2006-04-01 devnull Ropenfd
114 97a5e5f2 2003-11-23 devnull };
115 97a5e5f2 2003-11-23 devnull
116 97a5e5f2 2003-11-23 devnull uint convM2S(uchar*, uint, Fcall*);
117 97a5e5f2 2003-11-23 devnull uint convS2M(Fcall*, uchar*, uint);
118 97a5e5f2 2003-11-23 devnull uint sizeS2M(Fcall*);
119 97a5e5f2 2003-11-23 devnull
120 97a5e5f2 2003-11-23 devnull int statcheck(uchar *abuf, uint nbuf);
121 97a5e5f2 2003-11-23 devnull uint convM2D(uchar*, uint, Dir*, char*);
122 97a5e5f2 2003-11-23 devnull uint convD2M(Dir*, uchar*, uint);
123 97a5e5f2 2003-11-23 devnull uint sizeD2M(Dir*);
124 97a5e5f2 2003-11-23 devnull
125 97a5e5f2 2003-11-23 devnull int fcallfmt(Fmt*);
126 97a5e5f2 2003-11-23 devnull int dirfmt(Fmt*);
127 97a5e5f2 2003-11-23 devnull int dirmodefmt(Fmt*);
128 97a5e5f2 2003-11-23 devnull
129 97a5e5f2 2003-11-23 devnull int read9pmsg(int, void*, uint);
130 97a5e5f2 2003-11-23 devnull
131 97a5e5f2 2003-11-23 devnull /*
132 97a5e5f2 2003-11-23 devnull #pragma varargck type "F" Fcall*
133 97a5e5f2 2003-11-23 devnull #pragma varargck type "M" ulong
134 97a5e5f2 2003-11-23 devnull #pragma varargck type "D" Dir*
135 97a5e5f2 2003-11-23 devnull */
136 e97ceade 2003-12-06 devnull
137 e97ceade 2003-12-06 devnull #ifdef __cplusplus
138 f7012583 2003-11-25 devnull }
139 f7012583 2003-11-25 devnull #endif
140 f7012583 2003-11-25 devnull #endif