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