diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-08-21 18:43:25 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-08-21 18:43:25 +0200 |
commit | 0ce50ebc5750c15e30c6f2d5ba23a0dd329c6c47 (patch) | |
tree | 632820e8f512fb36342f62fcfb92c517089e6e3c /sys/src/cmd/cwfs/console.c | |
parent | 501774b0968d59994d5012fab62fa8221d8b7923 (diff) |
cwfs: remove 9p1 support
Diffstat (limited to 'sys/src/cmd/cwfs/console.c')
-rw-r--r-- | sys/src/cmd/cwfs/console.c | 261 |
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; } |