summaryrefslogtreecommitdiff
path: root/sys/src/cmd/cwfs/console.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-08-21 18:43:25 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2015-08-21 18:43:25 +0200
commit0ce50ebc5750c15e30c6f2d5ba23a0dd329c6c47 (patch)
tree632820e8f512fb36342f62fcfb92c517089e6e3c /sys/src/cmd/cwfs/console.c
parent501774b0968d59994d5012fab62fa8221d8b7923 (diff)
cwfs: remove 9p1 support
Diffstat (limited to 'sys/src/cmd/cwfs/console.c')
-rw-r--r--sys/src/cmd/cwfs/console.c261
1 files changed, 160 insertions, 101 deletions
diff --git a/sys/src/cmd/cwfs/console.c b/sys/src/cmd/cwfs/console.c
index e1bae4886..3a5e7771f 100644
--- a/sys/src/cmd/cwfs/console.c
+++ b/sys/src/cmd/cwfs/console.c
@@ -1,147 +1,208 @@
#include "all.h"
-#include "9p1.h"
+#include <fcall.h>
+
+/* 9p2 */
+int version(Chan*, Fcall*, Fcall*);
+int attach(Chan*, Fcall*, Fcall*);
+int walk(Chan*, Fcall*, Fcall*);
+int fs_open(Chan*, Fcall*, Fcall*);
+int fs_create(Chan*, Fcall*, Fcall*);
+int fs_read(Chan*, Fcall*, Fcall*, uchar*);
+int fs_write(Chan*, Fcall*, Fcall*);
+int fs_remove(Chan*, Fcall*, Fcall*);
-void
-fcall9p1(Chan *cp, Fcall *in, Fcall *ou)
+int
+con_session(void)
{
- int t;
+ Fcall in, ou;
+ int err;
- rlock(&mainlock);
- t = in->type;
- if(t < 0 || t >= MAXSYSCALL || (t&1) || !call9p1[t]) {
- fprint(2, "bad message type %d\n", t);
- panic("");
- }
- ou->type = t+1;
- ou->err = 0;
+ memset(&in, 0, sizeof(in));
+ memset(&ou, 0, sizeof(ou));
- rlock(&cp->reflock);
- (*call9p1[t])(cp, in, ou);
- runlock(&cp->reflock);
+ in.type = Tversion;
+ in.version = VERSION9P;
+ in.msize = MAXDAT + IOHDRSZ;
- if(ou->err && CHAT(cp))
- fprint(2, "\terror: %s\n", errstr9p[ou->err]);
+ rlock(&mainlock);
+ err = version(cons.chan, &in, &ou);
runlock(&mainlock);
-}
-int
-con_session(void)
-{
- Fcall in, ou;
-
- in.type = Tsession;
- fcall9p1(cons.chan, &in, &ou);
- return ou.err;
+ return err;
}
int
con_attach(int fid, char *uid, char *arg)
{
Fcall in, ou;
+ int err;
+
+ memset(&in, 0, sizeof(in));
+ memset(&ou, 0, sizeof(ou));
in.type = Tattach;
in.fid = fid;
- strncpy(in.uname, uid, NAMELEN);
- strncpy(in.aname, arg, NAMELEN);
- fcall9p1(cons.chan, &in, &ou);
- return ou.err;
+ in.uname = uid;
+ in.aname = arg;
+
+ rlock(&mainlock);
+ err = attach(cons.chan, &in, &ou);
+ runlock(&mainlock);
+
+ return err;
}
int
con_clone(int fid1, int fid2)
{
Fcall in, ou;
+ int err;
- in.type = Tclone;
+ memset(&in, 0, sizeof(in));
+ memset(&ou, 0, sizeof(ou));
+
+ in.type = Twalk;
in.fid = fid1;
in.newfid = fid2;
- fcall9p1(cons.chan, &in, &ou);
- return ou.err;
+ in.nwname = 0;
+
+ rlock(&mainlock);
+ err = walk(cons.chan, &in, &ou);
+ runlock(&mainlock);
+
+ return err;
}
int
con_walk(int fid, char *name)
{
Fcall in, ou;
+ int err;
+
+ memset(&in, 0, sizeof(in));
+ memset(&ou, 0, sizeof(ou));
in.type = Twalk;
in.fid = fid;
- strncpy(in.name, name, NAMELEN);
- fcall9p1(cons.chan, &in, &ou);
- return ou.err;
+ in.newfid = fid;
+ in.wname[0] = name;
+ in.nwname = 1;
+
+ rlock(&mainlock);
+ err = walk(cons.chan, &in, &ou);
+ runlock(&mainlock);
+
+ return err;
}
int
con_open(int fid, int mode)
{
Fcall in, ou;
+ int err;
+
+ memset(&in, 0, sizeof(in));
+ memset(&ou, 0, sizeof(ou));
in.type = Topen;
in.fid = fid;
in.mode = mode;
- fcall9p1(cons.chan, &in, &ou);
- return ou.err;
+
+ rlock(&mainlock);
+ err = fs_open(cons.chan, &in, &ou);
+ runlock(&mainlock);
+
+ return err;
+}
+
+int
+con_create(int fid, char *name, int uid, int gid, long perm, int mode)
+{
+ Fcall in, ou;
+ int err;
+
+ cons.uid = uid; /* beyond ugly */
+ cons.gid = gid;
+
+ memset(&in, 0, sizeof(in));
+ memset(&ou, 0, sizeof(ou));
+
+ in.type = Tcreate;
+ in.fid = fid;
+ in.mode = mode;
+ in.perm = perm;
+ in.name = name;
+
+ rlock(&mainlock);
+ err = fs_create(cons.chan, &in, &ou);
+ runlock(&mainlock);
+
+ return err;
}
int
con_read(int fid, char *data, Off offset, int count)
{
Fcall in, ou;
+ int err;
+
+ memset(&in, 0, sizeof(in));
+ memset(&ou, 0, sizeof(ou));
in.type = Tread;
in.fid = fid;
in.offset = offset;
in.count = count;
- ou.data = data;
- fcall9p1(cons.chan, &in, &ou);
- if(ou.err)
- return 0;
- return ou.count;
+
+ rlock(&mainlock);
+ err = fs_read(cons.chan, &in, &ou, (uchar*)data);
+ runlock(&mainlock);
+
+ return err ? 0 : ou.count;
}
int
con_write(int fid, char *data, Off offset, int count)
{
Fcall in, ou;
+ int err;
+
+ memset(&in, 0, sizeof(in));
+ memset(&ou, 0, sizeof(ou));
in.type = Twrite;
in.fid = fid;
- in.data = data;
in.offset = offset;
in.count = count;
- fcall9p1(cons.chan, &in, &ou);
- if(ou.err)
- return 0;
- return ou.count;
+ in.data = data;
+
+ rlock(&mainlock);
+ err = fs_write(cons.chan, &in, &ou);
+ runlock(&mainlock);
+
+ return err ? 0 : ou.count;
}
int
con_remove(int fid)
{
Fcall in, ou;
+ int err;
+
+ memset(&in, 0, sizeof(in));
+ memset(&ou, 0, sizeof(ou));
in.type = Tremove;
in.fid = fid;
- fcall9p1(cons.chan, &in, &ou);
- return ou.err;
-}
-int
-con_create(int fid, char *name, int uid, int gid, long perm, int mode)
-{
- Fcall in, ou;
+ rlock(&mainlock);
+ err = fs_remove(cons.chan, &in, &ou);
+ runlock(&mainlock);
- in.type = Tcreate;
- in.fid = fid;
- strncpy(in.name, name, NAMELEN);
- in.perm = perm;
- in.mode = mode;
- cons.uid = uid; /* beyond ugly */
- cons.gid = gid;
- fcall9p1(cons.chan, &in, &ou);
- return ou.err;
+ return err;
}
+
int
doclri(File *f)
{
@@ -196,14 +257,15 @@ out:
return err;
}
-void
+static int
f_fstat(Chan *cp, Fcall *in, Fcall *ou)
{
File *f;
Iobuf *p;
Dentry *d;
- int i;
+ int i, err;
+ err = 0;
if(CHAT(cp)) {
fprint(2, "c_fstat %d\n", cp->chan);
fprint(2, "\tfid = %d\n", in->fid);
@@ -212,7 +274,7 @@ f_fstat(Chan *cp, Fcall *in, Fcall *ou)
p = 0;
f = filep(cp, in->fid, 0);
if(!f) {
- ou->err = Efid;
+ err = Efid;
goto out;
}
p = getbuf(f->fs->dev, f->addr, Brd);
@@ -238,12 +300,33 @@ out:
ou->fid = in->fid;
if(f)
qunlock(f);
+ return err;
+}
+
+int
+con_fstat(int fid)
+{
+ Fcall in, ou;
+ int err;
+
+ memset(&in, 0, sizeof(in));
+ memset(&ou, 0, sizeof(ou));
+
+ in.type = Tstat;
+ in.fid = fid;
+
+ rlock(&mainlock);
+ err = f_fstat(cons.chan, &in, &ou);
+ runlock(&mainlock);
+
+ return err;
}
-void
+static int
f_clri(Chan *cp, Fcall *in, Fcall *ou)
{
File *f;
+ int err;
if(CHAT(cp)) {
fprint(2, "c_clri %d\n", cp->chan);
@@ -252,57 +335,33 @@ f_clri(Chan *cp, Fcall *in, Fcall *ou)
f = filep(cp, in->fid, 0);
if(!f) {
- ou->err = Efid;
+ err = Efid;
goto out;
}
- ou->err = doclri(f);
+ err = doclri(f);
out:
ou->fid = in->fid;
if(f)
qunlock(f);
+ return err;
}
int
con_clri(int fid)
{
Fcall in, ou;
- Chan *cp;
+ int err;
+
+ memset(&in, 0, sizeof(in));
+ memset(&ou, 0, sizeof(ou));
in.type = Tremove;
in.fid = fid;
- cp = cons.chan;
rlock(&mainlock);
- ou.type = Tremove+1;
- ou.err = 0;
-
- rlock(&cp->reflock);
- f_clri(cp, &in, &ou);
- runlock(&cp->reflock);
-
+ err = f_clri(cons.chan, &in, &ou);
runlock(&mainlock);
- return ou.err;
-}
-
-int
-con_fstat(int fid)
-{
- Fcall in, ou;
- Chan *cp;
- in.type = Tstat;
- in.fid = fid;
- cp = cons.chan;
-
- rlock(&mainlock);
- ou.type = Tstat+1;
- ou.err = 0;
-
- rlock(&cp->reflock);
- f_fstat(cp, &in, &ou);
- runlock(&cp->reflock);
-
- runlock(&mainlock);
- return ou.err;
+ return err;
}