# Translation from styx to op for ofs. # Either use the Cache or Op to operate on remote files. # See the comment in stop.b for a description. Stop: module { PATH: con "/dis/o/stop.dis"; MAXNMSGS: con 4; MAXCACHED: con MAXNMSGS * Op->MAXDATA; Creq: adt { tag: int; # tag used to Creq.Flush it later, perhaps. qid: big; # qid for file we are asking about pick { Dump or Remove or Stat or Sync => Validate => path: string; Walk1 => name: string; Readdir or Pread => cnt: int; off: big; Pwrite => data: array of byte; off : big; Wstat or Create => d: ref Sys->Dir; Flush => oldtag: int; } text: fn(r: self ref Creq): string; }; Crep: adt { err : string; # for failed requests pick { Validate or Create or Walk1 or Stat or Wstat => d: ref Sys->Dir; # copy. no races. Remove or Sync or Op or Dump or Flush=> Readdir => sons: list of Sys->Dir; Pread => data: array of byte; Pwrite => count: int; } text: fn(r: self ref Crep): string; }; # styx for unpackdir init: fn(s: Styx, m: Opmux, cdir: string, lag: int) : string; validate: fn(tag: int, qid: big, path: string): (ref sys->Dir, string); create: fn(tag: int, qid: big, d: ref Sys->Dir): (ref Sys->Dir, string); remove: fn(tag: int, qid: big) : string; walk1: fn(tag: int, qid: big, elem: string): (ref Sys->Dir, string); readdir: fn(tag: int, qid: big, cnt, off: int): (list of Sys->Dir, string); pread: fn(tag: int, qid: big, cnt: int, off: big): (array of byte, string); pwrite: fn(tag: int, qid: big, data: array of byte, off: big) : (int, string); stat: fn(tag: int, qid: big): (ref Sys->Dir, string); wstat: fn(tag: int, qid: big, d: ref Sys->Dir): (ref Sys->Dir, string); sync: fn(tag: int, qid: big): string; flush: fn(tag: int, oldtag: int) : string; term: fn(); dump: fn(); debug: int; };