diff options
Diffstat (limited to 'module/styxlib.m')
| -rw-r--r-- | module/styxlib.m | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/module/styxlib.m b/module/styxlib.m new file mode 100644 index 00000000..7564f3f3 --- /dev/null +++ b/module/styxlib.m @@ -0,0 +1,87 @@ +# +# deprecated: use styxservers(2) instead +# + +Styxlib: module +{ + PATH: con "/dis/lib/styxlib.dis"; + Chan: adt { + fid: int; + qid: Sys->Qid; + open: int; + mode: int; + uname: string; + path: string; + data: array of byte; + + isdir: fn(c: self ref Chan): int; + }; + + Dirtab: adt { + name: string; + qid: Sys->Qid; + length: big; + perm: int; + }; + + Styxserver: adt { + fd: ref Sys->FD; + chans: array of list of ref Chan; + uname: string; + msize: int; + + new: fn(fd: ref Sys->FD): (chan of ref Styx->Tmsg, ref Styxserver); + reply: fn(srv: self ref Styxserver, m: ref Styx->Rmsg): int; + + fidtochan: fn(srv: self ref Styxserver, fid: int): ref Chan; + newchan: fn(srv: self ref Styxserver, fid: int): ref Chan; + chanfree: fn(srv: self ref Styxserver, c: ref Chan); + chanlist: fn(srv: self ref Styxserver): list of ref Chan; + clone: fn(srv: self ref Styxserver, c: ref Chan, fid: int): ref Chan; + + devversion: fn(srv: self ref Styxserver, m: ref Styx->Tmsg.Version): int; + devauth: fn(srv: self ref Styxserver, m: ref Styx->Tmsg.Auth); + devattach: fn(srv: self ref Styxserver, m: ref Styx->Tmsg.Attach): ref Chan; + devflush: fn(srv: self ref Styxserver, m: ref Styx->Tmsg.Flush); + devwalk: fn(srv: self ref Styxserver, m: ref Styx->Tmsg.Walk, + gen: Dirgenmod, tab: array of Dirtab): ref Chan; + devclunk: fn(srv: self ref Styxserver, m: ref Styx->Tmsg.Clunk): ref Chan; + devstat: fn(srv: self ref Styxserver, m: ref Styx->Tmsg.Stat, + gen: Dirgenmod, tab: array of Dirtab); + devdirread: fn(srv: self ref Styxserver, m: ref Styx->Tmsg.Read, + gen: Dirgenmod, tab: array of Dirtab); + devopen: fn(srv: self ref Styxserver, m: ref Styx->Tmsg.Open, + gen: Dirgenmod, tab: array of Dirtab): ref Chan; + devremove: fn(srv: self ref Styxserver, m: ref Styx->Tmsg.Remove): ref Chan; + }; + + init: fn(s: Styx): string; + + readbytes: fn(m: ref Styx->Tmsg.Read, d: array of byte): ref Styx->Rmsg.Read; + readnum: fn(m: ref Styx->Tmsg.Read, val, size: int): ref Styx->Rmsg.Read; + readstr: fn(m: ref Styx->Tmsg.Read, d: string): ref Styx->Rmsg.Read; + + openok: fn(omode, perm: int, uname, funame, fgname: string): int; + openmode: fn(o: int): int; + + devdir: fn(c: ref Chan, qid: Sys->Qid, n: string, length: big, + user: string, perm: int): Sys->Dir; + + dirgenmodule: fn(): Dirgenmod; + dirgen: fn(srv: ref Styxserver, c: ref Chan, tab: array of Dirtab, i: int): (int, Sys->Dir); + + Einuse : con "fid already in use"; + Ebadfid : con "bad fid"; + Eopen : con "fid already opened"; + Enotfound : con "file does not exist"; + Enotdir : con "not a directory"; + Eperm : con "permission denied"; + Ebadarg : con "bad argument"; + Eexists : con "file already exists"; +}; + + +Dirgenmod: module { + dirgen: fn(srv: ref Styxlib->Styxserver, c: ref Styxlib->Chan, + tab: array of Styxlib->Dirtab, i: int): (int, Sys->Dir); +}; |
