Blame


1 d3df3087 2003-12-06 devnull #include <u.h>
2 d3df3087 2003-12-06 devnull #include <libc.h>
3 d3df3087 2003-12-06 devnull #include <fcall.h>
4 d3df3087 2003-12-06 devnull
5 d3df3087 2003-12-06 devnull static
6 d3df3087 2003-12-06 devnull uchar*
7 d3df3087 2003-12-06 devnull pstring(uchar *p, char *s)
8 d3df3087 2003-12-06 devnull {
9 d3df3087 2003-12-06 devnull uint n;
10 d3df3087 2003-12-06 devnull
11 d3df3087 2003-12-06 devnull if(s == nil){
12 d3df3087 2003-12-06 devnull PBIT16(p, 0);
13 d3df3087 2003-12-06 devnull p += BIT16SZ;
14 d3df3087 2003-12-06 devnull return p;
15 d3df3087 2003-12-06 devnull }
16 d3df3087 2003-12-06 devnull
17 d3df3087 2003-12-06 devnull n = strlen(s);
18 d3df3087 2003-12-06 devnull PBIT16(p, n);
19 d3df3087 2003-12-06 devnull p += BIT16SZ;
20 d3df3087 2003-12-06 devnull memmove(p, s, n);
21 d3df3087 2003-12-06 devnull p += n;
22 d3df3087 2003-12-06 devnull return p;
23 d3df3087 2003-12-06 devnull }
24 d3df3087 2003-12-06 devnull
25 d3df3087 2003-12-06 devnull static
26 d3df3087 2003-12-06 devnull uchar*
27 d3df3087 2003-12-06 devnull pqid(uchar *p, Qid *q)
28 d3df3087 2003-12-06 devnull {
29 d3df3087 2003-12-06 devnull PBIT8(p, q->type);
30 d3df3087 2003-12-06 devnull p += BIT8SZ;
31 d3df3087 2003-12-06 devnull PBIT32(p, q->vers);
32 d3df3087 2003-12-06 devnull p += BIT32SZ;
33 d3df3087 2003-12-06 devnull PBIT64(p, q->path);
34 d3df3087 2003-12-06 devnull p += BIT64SZ;
35 d3df3087 2003-12-06 devnull return p;
36 d3df3087 2003-12-06 devnull }
37 d3df3087 2003-12-06 devnull
38 d3df3087 2003-12-06 devnull static
39 d3df3087 2003-12-06 devnull uint
40 d3df3087 2003-12-06 devnull stringsz(char *s)
41 d3df3087 2003-12-06 devnull {
42 d3df3087 2003-12-06 devnull if(s == nil)
43 d3df3087 2003-12-06 devnull return BIT16SZ;
44 d3df3087 2003-12-06 devnull
45 d3df3087 2003-12-06 devnull return BIT16SZ+strlen(s);
46 d3df3087 2003-12-06 devnull }
47 d3df3087 2003-12-06 devnull
48 d3df3087 2003-12-06 devnull uint
49 fb941e08 2005-09-13 devnull sizeS2Mu(Fcall *f, int dotu)
50 d3df3087 2003-12-06 devnull {
51 d3df3087 2003-12-06 devnull uint n;
52 d3df3087 2003-12-06 devnull int i;
53 d3df3087 2003-12-06 devnull
54 d3df3087 2003-12-06 devnull n = 0;
55 d3df3087 2003-12-06 devnull n += BIT32SZ; /* size */
56 d3df3087 2003-12-06 devnull n += BIT8SZ; /* type */
57 d3df3087 2003-12-06 devnull n += BIT16SZ; /* tag */
58 d3df3087 2003-12-06 devnull
59 d3df3087 2003-12-06 devnull switch(f->type)
60 d3df3087 2003-12-06 devnull {
61 d3df3087 2003-12-06 devnull default:
62 d3df3087 2003-12-06 devnull return 0;
63 d3df3087 2003-12-06 devnull
64 d3df3087 2003-12-06 devnull case Tversion:
65 d3df3087 2003-12-06 devnull n += BIT32SZ;
66 d3df3087 2003-12-06 devnull n += stringsz(f->version);
67 d3df3087 2003-12-06 devnull break;
68 d3df3087 2003-12-06 devnull
69 d3df3087 2003-12-06 devnull case Tflush:
70 d3df3087 2003-12-06 devnull n += BIT16SZ;
71 d3df3087 2003-12-06 devnull break;
72 d3df3087 2003-12-06 devnull
73 d3df3087 2003-12-06 devnull case Tauth:
74 d3df3087 2003-12-06 devnull n += BIT32SZ;
75 d3df3087 2003-12-06 devnull n += stringsz(f->uname);
76 d3df3087 2003-12-06 devnull n += stringsz(f->aname);
77 d3df3087 2003-12-06 devnull break;
78 d3df3087 2003-12-06 devnull
79 d3df3087 2003-12-06 devnull case Tattach:
80 d3df3087 2003-12-06 devnull n += BIT32SZ;
81 d3df3087 2003-12-06 devnull n += BIT32SZ;
82 d3df3087 2003-12-06 devnull n += stringsz(f->uname);
83 d3df3087 2003-12-06 devnull n += stringsz(f->aname);
84 d3df3087 2003-12-06 devnull break;
85 d3df3087 2003-12-06 devnull
86 d3df3087 2003-12-06 devnull case Twalk:
87 d3df3087 2003-12-06 devnull n += BIT32SZ;
88 d3df3087 2003-12-06 devnull n += BIT32SZ;
89 d3df3087 2003-12-06 devnull n += BIT16SZ;
90 d3df3087 2003-12-06 devnull for(i=0; i<f->nwname; i++)
91 d3df3087 2003-12-06 devnull n += stringsz(f->wname[i]);
92 d3df3087 2003-12-06 devnull break;
93 d3df3087 2003-12-06 devnull
94 d3df3087 2003-12-06 devnull case Topen:
95 32f69c36 2003-12-11 devnull case Topenfd:
96 d3df3087 2003-12-06 devnull n += BIT32SZ;
97 d3df3087 2003-12-06 devnull n += BIT8SZ;
98 d3df3087 2003-12-06 devnull break;
99 d3df3087 2003-12-06 devnull
100 d3df3087 2003-12-06 devnull case Tcreate:
101 d3df3087 2003-12-06 devnull n += BIT32SZ;
102 d3df3087 2003-12-06 devnull n += stringsz(f->name);
103 d3df3087 2003-12-06 devnull n += BIT32SZ;
104 d3df3087 2003-12-06 devnull n += BIT8SZ;
105 b5c7be2f 2006-03-03 devnull if(dotu)
106 b5c7be2f 2006-03-03 devnull n += stringsz(f->extension);
107 d3df3087 2003-12-06 devnull break;
108 d3df3087 2003-12-06 devnull
109 d3df3087 2003-12-06 devnull case Tread:
110 d3df3087 2003-12-06 devnull n += BIT32SZ;
111 d3df3087 2003-12-06 devnull n += BIT64SZ;
112 d3df3087 2003-12-06 devnull n += BIT32SZ;
113 d3df3087 2003-12-06 devnull break;
114 d3df3087 2003-12-06 devnull
115 d3df3087 2003-12-06 devnull case Twrite:
116 d3df3087 2003-12-06 devnull n += BIT32SZ;
117 d3df3087 2003-12-06 devnull n += BIT64SZ;
118 d3df3087 2003-12-06 devnull n += BIT32SZ;
119 d3df3087 2003-12-06 devnull n += f->count;
120 d3df3087 2003-12-06 devnull break;
121 d3df3087 2003-12-06 devnull
122 d3df3087 2003-12-06 devnull case Tclunk:
123 d3df3087 2003-12-06 devnull case Tremove:
124 d3df3087 2003-12-06 devnull n += BIT32SZ;
125 d3df3087 2003-12-06 devnull break;
126 d3df3087 2003-12-06 devnull
127 d3df3087 2003-12-06 devnull case Tstat:
128 d3df3087 2003-12-06 devnull n += BIT32SZ;
129 d3df3087 2003-12-06 devnull break;
130 d3df3087 2003-12-06 devnull
131 d3df3087 2003-12-06 devnull case Twstat:
132 d3df3087 2003-12-06 devnull n += BIT32SZ;
133 d3df3087 2003-12-06 devnull n += BIT16SZ;
134 d3df3087 2003-12-06 devnull n += f->nstat;
135 d3df3087 2003-12-06 devnull break;
136 d3df3087 2003-12-06 devnull /*
137 d3df3087 2003-12-06 devnull */
138 d3df3087 2003-12-06 devnull
139 d3df3087 2003-12-06 devnull case Rversion:
140 d3df3087 2003-12-06 devnull n += BIT32SZ;
141 d3df3087 2003-12-06 devnull n += stringsz(f->version);
142 d3df3087 2003-12-06 devnull break;
143 d3df3087 2003-12-06 devnull
144 d3df3087 2003-12-06 devnull case Rerror:
145 d3df3087 2003-12-06 devnull n += stringsz(f->ename);
146 fb941e08 2005-09-13 devnull if(dotu)
147 fb941e08 2005-09-13 devnull n += BIT16SZ;
148 d3df3087 2003-12-06 devnull break;
149 d3df3087 2003-12-06 devnull
150 d3df3087 2003-12-06 devnull case Rflush:
151 d3df3087 2003-12-06 devnull break;
152 d3df3087 2003-12-06 devnull
153 d3df3087 2003-12-06 devnull case Rauth:
154 d3df3087 2003-12-06 devnull n += QIDSZ;
155 d3df3087 2003-12-06 devnull break;
156 d3df3087 2003-12-06 devnull
157 d3df3087 2003-12-06 devnull case Rattach:
158 d3df3087 2003-12-06 devnull n += QIDSZ;
159 d3df3087 2003-12-06 devnull break;
160 d3df3087 2003-12-06 devnull
161 d3df3087 2003-12-06 devnull case Rwalk:
162 d3df3087 2003-12-06 devnull n += BIT16SZ;
163 d3df3087 2003-12-06 devnull n += f->nwqid*QIDSZ;
164 d3df3087 2003-12-06 devnull break;
165 d3df3087 2003-12-06 devnull
166 d3df3087 2003-12-06 devnull case Ropen:
167 d3df3087 2003-12-06 devnull case Rcreate:
168 d3df3087 2003-12-06 devnull n += QIDSZ;
169 d3df3087 2003-12-06 devnull n += BIT32SZ;
170 d3df3087 2003-12-06 devnull break;
171 d3df3087 2003-12-06 devnull
172 32f69c36 2003-12-11 devnull case Ropenfd:
173 32f69c36 2003-12-11 devnull n += QIDSZ;
174 32f69c36 2003-12-11 devnull n += BIT32SZ;
175 32f69c36 2003-12-11 devnull n += BIT32SZ;
176 32f69c36 2003-12-11 devnull break;
177 32f69c36 2003-12-11 devnull
178 d3df3087 2003-12-06 devnull case Rread:
179 d3df3087 2003-12-06 devnull n += BIT32SZ;
180 d3df3087 2003-12-06 devnull n += f->count;
181 d3df3087 2003-12-06 devnull break;
182 d3df3087 2003-12-06 devnull
183 d3df3087 2003-12-06 devnull case Rwrite:
184 d3df3087 2003-12-06 devnull n += BIT32SZ;
185 d3df3087 2003-12-06 devnull break;
186 d3df3087 2003-12-06 devnull
187 d3df3087 2003-12-06 devnull case Rclunk:
188 d3df3087 2003-12-06 devnull break;
189 d3df3087 2003-12-06 devnull
190 d3df3087 2003-12-06 devnull case Rremove:
191 d3df3087 2003-12-06 devnull break;
192 d3df3087 2003-12-06 devnull
193 d3df3087 2003-12-06 devnull case Rstat:
194 d3df3087 2003-12-06 devnull n += BIT16SZ;
195 d3df3087 2003-12-06 devnull n += f->nstat;
196 d3df3087 2003-12-06 devnull break;
197 d3df3087 2003-12-06 devnull
198 d3df3087 2003-12-06 devnull case Rwstat:
199 d3df3087 2003-12-06 devnull break;
200 d3df3087 2003-12-06 devnull }
201 d3df3087 2003-12-06 devnull return n;
202 d3df3087 2003-12-06 devnull }
203 d3df3087 2003-12-06 devnull
204 d3df3087 2003-12-06 devnull uint
205 fb941e08 2005-09-13 devnull sizeS2M(Fcall *f)
206 fb941e08 2005-09-13 devnull {
207 fb941e08 2005-09-13 devnull return sizeS2Mu(f, 0);
208 fb941e08 2005-09-13 devnull }
209 fb941e08 2005-09-13 devnull
210 fb941e08 2005-09-13 devnull uint
211 fb941e08 2005-09-13 devnull convS2Mu(Fcall *f, uchar *ap, uint nap, int dotu)
212 d3df3087 2003-12-06 devnull {
213 d3df3087 2003-12-06 devnull uchar *p;
214 d3df3087 2003-12-06 devnull uint i, size;
215 d3df3087 2003-12-06 devnull
216 9e2f1d9b 2005-11-21 devnull size = sizeS2Mu(f, dotu);
217 d3df3087 2003-12-06 devnull if(size == 0)
218 d3df3087 2003-12-06 devnull return 0;
219 d3df3087 2003-12-06 devnull if(size > nap)
220 d3df3087 2003-12-06 devnull return 0;
221 d3df3087 2003-12-06 devnull
222 d3df3087 2003-12-06 devnull p = (uchar*)ap;
223 d3df3087 2003-12-06 devnull
224 d3df3087 2003-12-06 devnull PBIT32(p, size);
225 d3df3087 2003-12-06 devnull p += BIT32SZ;
226 d3df3087 2003-12-06 devnull PBIT8(p, f->type);
227 d3df3087 2003-12-06 devnull p += BIT8SZ;
228 d3df3087 2003-12-06 devnull PBIT16(p, f->tag);
229 d3df3087 2003-12-06 devnull p += BIT16SZ;
230 d3df3087 2003-12-06 devnull
231 d3df3087 2003-12-06 devnull switch(f->type)
232 d3df3087 2003-12-06 devnull {
233 d3df3087 2003-12-06 devnull default:
234 d3df3087 2003-12-06 devnull return 0;
235 d3df3087 2003-12-06 devnull
236 d3df3087 2003-12-06 devnull case Tversion:
237 d3df3087 2003-12-06 devnull PBIT32(p, f->msize);
238 d3df3087 2003-12-06 devnull p += BIT32SZ;
239 d3df3087 2003-12-06 devnull p = pstring(p, f->version);
240 d3df3087 2003-12-06 devnull break;
241 d3df3087 2003-12-06 devnull
242 d3df3087 2003-12-06 devnull case Tflush:
243 d3df3087 2003-12-06 devnull PBIT16(p, f->oldtag);
244 d3df3087 2003-12-06 devnull p += BIT16SZ;
245 d3df3087 2003-12-06 devnull break;
246 d3df3087 2003-12-06 devnull
247 d3df3087 2003-12-06 devnull case Tauth:
248 d3df3087 2003-12-06 devnull PBIT32(p, f->afid);
249 d3df3087 2003-12-06 devnull p += BIT32SZ;
250 d3df3087 2003-12-06 devnull p = pstring(p, f->uname);
251 d3df3087 2003-12-06 devnull p = pstring(p, f->aname);
252 d3df3087 2003-12-06 devnull break;
253 d3df3087 2003-12-06 devnull
254 d3df3087 2003-12-06 devnull case Tattach:
255 d3df3087 2003-12-06 devnull PBIT32(p, f->fid);
256 d3df3087 2003-12-06 devnull p += BIT32SZ;
257 d3df3087 2003-12-06 devnull PBIT32(p, f->afid);
258 d3df3087 2003-12-06 devnull p += BIT32SZ;
259 d3df3087 2003-12-06 devnull p = pstring(p, f->uname);
260 d3df3087 2003-12-06 devnull p = pstring(p, f->aname);
261 d3df3087 2003-12-06 devnull break;
262 d3df3087 2003-12-06 devnull
263 d3df3087 2003-12-06 devnull case Twalk:
264 d3df3087 2003-12-06 devnull PBIT32(p, f->fid);
265 d3df3087 2003-12-06 devnull p += BIT32SZ;
266 d3df3087 2003-12-06 devnull PBIT32(p, f->newfid);
267 d3df3087 2003-12-06 devnull p += BIT32SZ;
268 d3df3087 2003-12-06 devnull PBIT16(p, f->nwname);
269 d3df3087 2003-12-06 devnull p += BIT16SZ;
270 d3df3087 2003-12-06 devnull if(f->nwname > MAXWELEM)
271 d3df3087 2003-12-06 devnull return 0;
272 d3df3087 2003-12-06 devnull for(i=0; i<f->nwname; i++)
273 d3df3087 2003-12-06 devnull p = pstring(p, f->wname[i]);
274 d3df3087 2003-12-06 devnull break;
275 d3df3087 2003-12-06 devnull
276 d3df3087 2003-12-06 devnull case Topen:
277 32f69c36 2003-12-11 devnull case Topenfd:
278 d3df3087 2003-12-06 devnull PBIT32(p, f->fid);
279 d3df3087 2003-12-06 devnull p += BIT32SZ;
280 d3df3087 2003-12-06 devnull PBIT8(p, f->mode);
281 d3df3087 2003-12-06 devnull p += BIT8SZ;
282 d3df3087 2003-12-06 devnull break;
283 d3df3087 2003-12-06 devnull
284 d3df3087 2003-12-06 devnull case Tcreate:
285 d3df3087 2003-12-06 devnull PBIT32(p, f->fid);
286 d3df3087 2003-12-06 devnull p += BIT32SZ;
287 d3df3087 2003-12-06 devnull p = pstring(p, f->name);
288 d3df3087 2003-12-06 devnull PBIT32(p, f->perm);
289 d3df3087 2003-12-06 devnull p += BIT32SZ;
290 d3df3087 2003-12-06 devnull PBIT8(p, f->mode);
291 d3df3087 2003-12-06 devnull p += BIT8SZ;
292 b5c7be2f 2006-03-03 devnull if(dotu)
293 b5c7be2f 2006-03-03 devnull p = pstring(p, f->extension);
294 d3df3087 2003-12-06 devnull break;
295 d3df3087 2003-12-06 devnull
296 d3df3087 2003-12-06 devnull case Tread:
297 d3df3087 2003-12-06 devnull PBIT32(p, f->fid);
298 d3df3087 2003-12-06 devnull p += BIT32SZ;
299 d3df3087 2003-12-06 devnull PBIT64(p, f->offset);
300 d3df3087 2003-12-06 devnull p += BIT64SZ;
301 d3df3087 2003-12-06 devnull PBIT32(p, f->count);
302 d3df3087 2003-12-06 devnull p += BIT32SZ;
303 d3df3087 2003-12-06 devnull break;
304 d3df3087 2003-12-06 devnull
305 d3df3087 2003-12-06 devnull case Twrite:
306 d3df3087 2003-12-06 devnull PBIT32(p, f->fid);
307 d3df3087 2003-12-06 devnull p += BIT32SZ;
308 d3df3087 2003-12-06 devnull PBIT64(p, f->offset);
309 d3df3087 2003-12-06 devnull p += BIT64SZ;
310 d3df3087 2003-12-06 devnull PBIT32(p, f->count);
311 d3df3087 2003-12-06 devnull p += BIT32SZ;
312 d3df3087 2003-12-06 devnull memmove(p, f->data, f->count);
313 d3df3087 2003-12-06 devnull p += f->count;
314 d3df3087 2003-12-06 devnull break;
315 d3df3087 2003-12-06 devnull
316 d3df3087 2003-12-06 devnull case Tclunk:
317 d3df3087 2003-12-06 devnull case Tremove:
318 d3df3087 2003-12-06 devnull PBIT32(p, f->fid);
319 d3df3087 2003-12-06 devnull p += BIT32SZ;
320 d3df3087 2003-12-06 devnull break;
321 d3df3087 2003-12-06 devnull
322 d3df3087 2003-12-06 devnull case Tstat:
323 d3df3087 2003-12-06 devnull PBIT32(p, f->fid);
324 d3df3087 2003-12-06 devnull p += BIT32SZ;
325 d3df3087 2003-12-06 devnull break;
326 d3df3087 2003-12-06 devnull
327 d3df3087 2003-12-06 devnull case Twstat:
328 d3df3087 2003-12-06 devnull PBIT32(p, f->fid);
329 d3df3087 2003-12-06 devnull p += BIT32SZ;
330 d3df3087 2003-12-06 devnull PBIT16(p, f->nstat);
331 d3df3087 2003-12-06 devnull p += BIT16SZ;
332 d3df3087 2003-12-06 devnull memmove(p, f->stat, f->nstat);
333 d3df3087 2003-12-06 devnull p += f->nstat;
334 d3df3087 2003-12-06 devnull break;
335 d3df3087 2003-12-06 devnull /*
336 d3df3087 2003-12-06 devnull */
337 d3df3087 2003-12-06 devnull
338 d3df3087 2003-12-06 devnull case Rversion:
339 d3df3087 2003-12-06 devnull PBIT32(p, f->msize);
340 d3df3087 2003-12-06 devnull p += BIT32SZ;
341 d3df3087 2003-12-06 devnull p = pstring(p, f->version);
342 d3df3087 2003-12-06 devnull break;
343 d3df3087 2003-12-06 devnull
344 d3df3087 2003-12-06 devnull case Rerror:
345 d3df3087 2003-12-06 devnull p = pstring(p, f->ename);
346 fb941e08 2005-09-13 devnull if(dotu){
347 fb941e08 2005-09-13 devnull PBIT16(p, f->errornum);
348 fb941e08 2005-09-13 devnull p += BIT16SZ;
349 fb941e08 2005-09-13 devnull }
350 d3df3087 2003-12-06 devnull break;
351 d3df3087 2003-12-06 devnull
352 d3df3087 2003-12-06 devnull case Rflush:
353 d3df3087 2003-12-06 devnull break;
354 d3df3087 2003-12-06 devnull
355 d3df3087 2003-12-06 devnull case Rauth:
356 d3df3087 2003-12-06 devnull p = pqid(p, &f->aqid);
357 d3df3087 2003-12-06 devnull break;
358 d3df3087 2003-12-06 devnull
359 d3df3087 2003-12-06 devnull case Rattach:
360 d3df3087 2003-12-06 devnull p = pqid(p, &f->qid);
361 d3df3087 2003-12-06 devnull break;
362 d3df3087 2003-12-06 devnull
363 d3df3087 2003-12-06 devnull case Rwalk:
364 d3df3087 2003-12-06 devnull PBIT16(p, f->nwqid);
365 d3df3087 2003-12-06 devnull p += BIT16SZ;
366 d3df3087 2003-12-06 devnull if(f->nwqid > MAXWELEM)
367 d3df3087 2003-12-06 devnull return 0;
368 d3df3087 2003-12-06 devnull for(i=0; i<f->nwqid; i++)
369 d3df3087 2003-12-06 devnull p = pqid(p, &f->wqid[i]);
370 d3df3087 2003-12-06 devnull break;
371 d3df3087 2003-12-06 devnull
372 d3df3087 2003-12-06 devnull case Ropen:
373 d3df3087 2003-12-06 devnull case Rcreate:
374 32f69c36 2003-12-11 devnull case Ropenfd:
375 d3df3087 2003-12-06 devnull p = pqid(p, &f->qid);
376 d3df3087 2003-12-06 devnull PBIT32(p, f->iounit);
377 d3df3087 2003-12-06 devnull p += BIT32SZ;
378 32f69c36 2003-12-11 devnull if(f->type == Ropenfd){
379 32f69c36 2003-12-11 devnull PBIT32(p, f->unixfd);
380 32f69c36 2003-12-11 devnull p += BIT32SZ;
381 32f69c36 2003-12-11 devnull }
382 d3df3087 2003-12-06 devnull break;
383 d3df3087 2003-12-06 devnull
384 d3df3087 2003-12-06 devnull case Rread:
385 d3df3087 2003-12-06 devnull PBIT32(p, f->count);
386 d3df3087 2003-12-06 devnull p += BIT32SZ;
387 d3df3087 2003-12-06 devnull memmove(p, f->data, f->count);
388 d3df3087 2003-12-06 devnull p += f->count;
389 d3df3087 2003-12-06 devnull break;
390 d3df3087 2003-12-06 devnull
391 d3df3087 2003-12-06 devnull case Rwrite:
392 d3df3087 2003-12-06 devnull PBIT32(p, f->count);
393 d3df3087 2003-12-06 devnull p += BIT32SZ;
394 d3df3087 2003-12-06 devnull break;
395 d3df3087 2003-12-06 devnull
396 d3df3087 2003-12-06 devnull case Rclunk:
397 d3df3087 2003-12-06 devnull break;
398 d3df3087 2003-12-06 devnull
399 d3df3087 2003-12-06 devnull case Rremove:
400 d3df3087 2003-12-06 devnull break;
401 d3df3087 2003-12-06 devnull
402 d3df3087 2003-12-06 devnull case Rstat:
403 d3df3087 2003-12-06 devnull PBIT16(p, f->nstat);
404 d3df3087 2003-12-06 devnull p += BIT16SZ;
405 d3df3087 2003-12-06 devnull memmove(p, f->stat, f->nstat);
406 d3df3087 2003-12-06 devnull p += f->nstat;
407 d3df3087 2003-12-06 devnull break;
408 d3df3087 2003-12-06 devnull
409 d3df3087 2003-12-06 devnull case Rwstat:
410 d3df3087 2003-12-06 devnull break;
411 d3df3087 2003-12-06 devnull }
412 d3df3087 2003-12-06 devnull if(size != p-ap)
413 d3df3087 2003-12-06 devnull return 0;
414 d3df3087 2003-12-06 devnull return size;
415 d3df3087 2003-12-06 devnull }
416 fb941e08 2005-09-13 devnull
417 fb941e08 2005-09-13 devnull uint
418 fb941e08 2005-09-13 devnull convS2M(Fcall *f, uchar *ap, uint nap)
419 fb941e08 2005-09-13 devnull {
420 fb941e08 2005-09-13 devnull return convS2Mu(f, ap, nap, 0);
421 fb941e08 2005-09-13 devnull }