5 fcall9p1(Chan *cp, Fcall *in, Fcall *ou)
11 if(t < 0 || t >= MAXSYSCALL || (t&1) || !call9p1[t]) {
12 print("bad message type %d\n", t);
19 (*call9p1[t])(cp, in, ou);
20 runlock(&cp->reflock);
22 if(ou->err && CHAT(cp))
23 print("\terror: %s\n", errstr9p[ou->err]);
33 fcall9p1(cons.chan, &in, &ou);
38 con_attach(int fid, char *uid, char *arg)
44 strncpy(in.uname, uid, NAMELEN);
45 strncpy(in.aname, arg, NAMELEN);
46 fcall9p1(cons.chan, &in, &ou);
51 con_clone(int fid1, int fid2)
58 fcall9p1(cons.chan, &in, &ou);
63 con_walk(int fid, char *name)
69 strncpy(in.name, name, NAMELEN);
70 fcall9p1(cons.chan, &in, &ou);
75 con_open(int fid, int mode)
82 fcall9p1(cons.chan, &in, &ou);
87 con_read(int fid, char *data, Off offset, int count)
96 fcall9p1(cons.chan, &in, &ou);
103 con_write(int fid, char *data, Off offset, int count)
112 fcall9p1(cons.chan, &in, &ou);
125 fcall9p1(cons.chan, &in, &ou);
130 con_create(int fid, char *name, int uid, int gid, long perm, int mode)
136 strncpy(in.name, name, NAMELEN);
139 cons.uid = uid; /* beyond ugly */
141 fcall9p1(cons.chan, &in, &ou);
155 if(f->fs->dev->type == Devro) {
160 * check on parent directory of file to be deleted
162 if(f->wpath == 0 || f->wpath->addr == f->addr) {
166 p1 = getbuf(f->fs->dev, f->wpath->addr, Brd);
167 d1 = getdir(p1, f->wpath->slot);
168 if(!d1 || checktag(p1, Tdir, QPNONE) || !(d1->mode & DALLOC)) {
173 accessdir(p1, d1, FWRITE, 0);
178 * check on file to be deleted
180 p = getbuf(f->fs->dev, f->addr, Brd);
181 d = getdir(p, f->slot);
186 memset(d, 0, sizeof(Dentry));
187 settag(p, Tdir, QPNONE);
200 f_fstat(Chan *cp, Fcall *in, Fcall *ou)
208 print("c_fstat %d\n", cp->chan);
209 print("\tfid = %d\n", in->fid);
213 f = filep(cp, in->fid, 0);
218 p = getbuf(f->fs->dev, f->addr, Brd);
219 d = getdir(p, f->slot);
223 print("name = %.*s\n", NAMELEN, d->name);
224 print("uid = %d; gid = %d; muid = %d\n", d->uid, d->gid, d->muid);
225 print("size = %lld; qid = %llux/%lux\n", (Wideoff)d->size,
226 (Wideoff)d->qid.path, d->qid.version);
227 print("atime = %ld; mtime = %ld\n", d->atime, d->mtime);
229 for(i=0; i<NDBLOCK; i++)
230 print(" %lld", (Wideoff)d->dblock[i]);
231 for (i = 0; i < NIBLOCK; i++)
232 print("; iblocks[%d] = %lld", i, (Wideoff)d->iblocks[i]);
244 f_clri(Chan *cp, Fcall *in, Fcall *ou)
249 print("c_clri %d\n", cp->chan);
250 print("\tfid = %d\n", in->fid);
253 f = filep(cp, in->fid, 0);
281 f_clri(cp, &in, &ou);
282 runlock(&cp->reflock);
303 f_fstat(cp, &in, &ou);
304 runlock(&cp->reflock);