summaryrefslogtreecommitdiff
path: root/module/styxlib.m
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2006-12-22 20:52:35 +0000
committerCharles.Forsyth <devnull@localhost>2006-12-22 20:52:35 +0000
commit46439007cf417cbd9ac8049bb4122c890097a0fa (patch)
tree6fdb25e5f3a2b6d5657eb23b35774b631d4d97e4 /module/styxlib.m
parent37da2899f40661e3e9631e497da8dc59b971cbd0 (diff)
20060303-partial
Diffstat (limited to 'module/styxlib.m')
-rw-r--r--module/styxlib.m87
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);
+};