aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/factotum/fs.acid
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/factotum/fs.acid')
-rw-r--r--src/cmd/factotum/fs.acid1686
1 files changed, 1686 insertions, 0 deletions
diff --git a/src/cmd/factotum/fs.acid b/src/cmd/factotum/fs.acid
new file mode 100644
index 00000000..47d2a4e1
--- /dev/null
+++ b/src/cmd/factotum/fs.acid
@@ -0,0 +1,1686 @@
+sizeof_1_ = 8;
+aggr _1_
+{
+ 'D' 0 lo;
+ 'D' 4 hi;
+};
+
+defn
+_1_(addr) {
+ complex _1_ addr;
+ print(" lo ", addr.lo, "\n");
+ print(" hi ", addr.hi, "\n");
+};
+
+sizeofFPdbleword = 8;
+aggr FPdbleword
+{
+ 'F' 0 x;
+ {
+ 'D' 0 lo;
+ 'D' 4 hi;
+ };
+};
+
+defn
+FPdbleword(addr) {
+ complex FPdbleword addr;
+ print(" x ", addr.x, "\n");
+ print("_1_ {\n");
+ _1_(addr+0);
+ print("}\n");
+};
+
+UTFmax = 3;
+Runesync = 128;
+Runeself = 128;
+Runeerror = 128;
+sizeofFconv = 24;
+aggr Fconv
+{
+ 'X' 0 out;
+ 'X' 4 eout;
+ 'D' 8 f1;
+ 'D' 12 f2;
+ 'D' 16 f3;
+ 'D' 20 chr;
+};
+
+defn
+Fconv(addr) {
+ complex Fconv addr;
+ print(" out ", addr.out\X, "\n");
+ print(" eout ", addr.eout\X, "\n");
+ print(" f1 ", addr.f1, "\n");
+ print(" f2 ", addr.f2, "\n");
+ print(" f3 ", addr.f3, "\n");
+ print(" chr ", addr.chr, "\n");
+};
+
+sizeofTm = 40;
+aggr Tm
+{
+ 'D' 0 sec;
+ 'D' 4 min;
+ 'D' 8 hour;
+ 'D' 12 mday;
+ 'D' 16 mon;
+ 'D' 20 year;
+ 'D' 24 wday;
+ 'D' 28 yday;
+ 'a' 32 zone;
+ 'D' 36 tzoff;
+};
+
+defn
+Tm(addr) {
+ complex Tm addr;
+ print(" sec ", addr.sec, "\n");
+ print(" min ", addr.min, "\n");
+ print(" hour ", addr.hour, "\n");
+ print(" mday ", addr.mday, "\n");
+ print(" mon ", addr.mon, "\n");
+ print(" year ", addr.year, "\n");
+ print(" wday ", addr.wday, "\n");
+ print(" yday ", addr.yday, "\n");
+ print(" zone ", addr.zone, "\n");
+ print(" tzoff ", addr.tzoff, "\n");
+};
+
+PNPROC = 1;
+PNGROUP = 2;
+sizeofLock = 4;
+aggr Lock
+{
+ 'D' 0 val;
+};
+
+defn
+Lock(addr) {
+ complex Lock addr;
+ print(" val ", addr.val, "\n");
+};
+
+sizeofQLp = 12;
+aggr QLp
+{
+ 'D' 0 inuse;
+ 'A' QLp 4 next;
+ 'C' 8 state;
+};
+
+defn
+QLp(addr) {
+ complex QLp addr;
+ print(" inuse ", addr.inuse, "\n");
+ print(" next ", addr.next\X, "\n");
+ print(" state ", addr.state, "\n");
+};
+
+sizeofQLock = 16;
+aggr QLock
+{
+ Lock 0 lock;
+ 'D' 4 locked;
+ 'A' QLp 8 $head;
+ 'A' QLp 12 $tail;
+};
+
+defn
+QLock(addr) {
+ complex QLock addr;
+ print("Lock lock {\n");
+ Lock(addr.lock);
+ print("}\n");
+ print(" locked ", addr.locked, "\n");
+ print(" $head ", addr.$head\X, "\n");
+ print(" $tail ", addr.$tail\X, "\n");
+};
+
+sizeofRWLock = 20;
+aggr RWLock
+{
+ Lock 0 lock;
+ 'D' 4 readers;
+ 'D' 8 writer;
+ 'A' QLp 12 $head;
+ 'A' QLp 16 $tail;
+};
+
+defn
+RWLock(addr) {
+ complex RWLock addr;
+ print("Lock lock {\n");
+ Lock(addr.lock);
+ print("}\n");
+ print(" readers ", addr.readers, "\n");
+ print(" writer ", addr.writer, "\n");
+ print(" $head ", addr.$head\X, "\n");
+ print(" $tail ", addr.$tail\X, "\n");
+};
+
+RFNAMEG = 1;
+RFENVG = 2;
+RFFDG = 4;
+RFNOTEG = 8;
+RFPROC = 16;
+RFMEM = 32;
+RFNOWAIT = 64;
+RFCNAMEG = 1024;
+RFCENVG = 2048;
+RFCFDG = 4096;
+RFREND = 8192;
+RFNOMNT = 16384;
+sizeofQid = 16;
+aggr Qid
+{
+ 'W' 0 path;
+ 'U' 8 vers;
+ 'b' 12 type;
+};
+
+defn
+Qid(addr) {
+ complex Qid addr;
+ print(" path ", addr.path, "\n");
+ print(" vers ", addr.vers, "\n");
+ print(" type ", addr.type, "\n");
+};
+
+sizeofDir = 60;
+aggr Dir
+{
+ 'u' 0 type;
+ 'U' 4 dev;
+ Qid 8 qid;
+ 'U' 24 mode;
+ 'U' 28 atime;
+ 'U' 32 mtime;
+ 'V' 36 length;
+ 'X' 44 name;
+ 'X' 48 uid;
+ 'X' 52 gid;
+ 'X' 56 muid;
+};
+
+defn
+Dir(addr) {
+ complex Dir addr;
+ print(" type ", addr.type, "\n");
+ print(" dev ", addr.dev, "\n");
+ print("Qid qid {\n");
+ Qid(addr.qid);
+ print("}\n");
+ print(" mode ", addr.mode, "\n");
+ print(" atime ", addr.atime, "\n");
+ print(" mtime ", addr.mtime, "\n");
+ print(" length ", addr.length, "\n");
+ print(" name ", addr.name\X, "\n");
+ print(" uid ", addr.uid\X, "\n");
+ print(" gid ", addr.gid\X, "\n");
+ print(" muid ", addr.muid\X, "\n");
+};
+
+sizeofWaitmsg = 20;
+aggr Waitmsg
+{
+ 'D' 0 pid;
+ 'a' 4 time;
+ 'X' 16 msg;
+};
+
+defn
+Waitmsg(addr) {
+ complex Waitmsg addr;
+ print(" pid ", addr.pid, "\n");
+ print(" time ", addr.time, "\n");
+ print(" msg ", addr.msg\X, "\n");
+};
+
+sizeofIOchunk = 8;
+aggr IOchunk
+{
+ 'X' 0 addr;
+ 'U' 4 len;
+};
+
+defn
+IOchunk(addr) {
+ complex IOchunk addr;
+ print(" addr ", addr.addr\X, "\n");
+ print(" len ", addr.len, "\n");
+};
+
+MAXCHLEN = 256;
+MAXNAMELEN = 256;
+MD5LEN = 16;
+ARok = 0;
+ARdone = 1;
+ARerror = 2;
+ARneedkey = 3;
+ARbadkey = 4;
+ARwritenext = 5;
+ARtoosmall = 6;
+ARtoobig = 7;
+ARrpcfailure = 8;
+ARphase = 9;
+AuthRpcMax = 4096;
+sizeofAuthRpc = 8208;
+aggr AuthRpc
+{
+ 'D' 0 afd;
+ 'X' 4 verb;
+ 'a' 8 ibuf;
+ 'a' 4104 obuf;
+ 'X' 8200 arg;
+ 'U' 8204 narg;
+};
+
+defn
+AuthRpc(addr) {
+ complex AuthRpc addr;
+ print(" afd ", addr.afd, "\n");
+ print(" verb ", addr.verb\X, "\n");
+ print(" ibuf ", addr.ibuf, "\n");
+ print(" obuf ", addr.obuf, "\n");
+ print(" arg ", addr.arg\X, "\n");
+ print(" narg ", addr.narg, "\n");
+};
+
+sizeofAuthInfo = 20;
+aggr AuthInfo
+{
+ 'X' 0 cuid;
+ 'X' 4 suid;
+ 'X' 8 cap;
+ 'D' 12 nsecret;
+ 'X' 16 secret;
+};
+
+defn
+AuthInfo(addr) {
+ complex AuthInfo addr;
+ print(" cuid ", addr.cuid\X, "\n");
+ print(" suid ", addr.suid\X, "\n");
+ print(" cap ", addr.cap\X, "\n");
+ print(" nsecret ", addr.nsecret, "\n");
+ print(" secret ", addr.secret\X, "\n");
+};
+
+sizeofChalstate = 540;
+aggr Chalstate
+{
+ 'X' 0 user;
+ 'a' 4 chal;
+ 'D' 260 nchal;
+ 'X' 264 resp;
+ 'D' 268 nresp;
+ 'D' 272 afd;
+ 'A' AuthRpc 276 rpc;
+ 'a' 280 userbuf;
+ 'D' 536 userinchal;
+};
+
+defn
+Chalstate(addr) {
+ complex Chalstate addr;
+ print(" user ", addr.user\X, "\n");
+ print(" chal ", addr.chal, "\n");
+ print(" nchal ", addr.nchal, "\n");
+ print(" resp ", addr.resp\X, "\n");
+ print(" nresp ", addr.nresp, "\n");
+ print(" afd ", addr.afd, "\n");
+ print(" rpc ", addr.rpc\X, "\n");
+ print(" userbuf ", addr.userbuf, "\n");
+ print(" userinchal ", addr.userinchal, "\n");
+};
+
+sizeofChapreply = 20;
+aggr Chapreply
+{
+ 'b' 0 id;
+ 'a' 1 resp;
+};
+
+defn
+Chapreply(addr) {
+ complex Chapreply addr;
+ print(" id ", addr.id, "\n");
+ print(" resp ", addr.resp, "\n");
+};
+
+sizeofMSchapreply = 48;
+aggr MSchapreply
+{
+ 'a' 0 LMresp;
+ 'a' 24 NTresp;
+};
+
+defn
+MSchapreply(addr) {
+ complex MSchapreply addr;
+ print(" LMresp ", addr.LMresp, "\n");
+ print(" NTresp ", addr.NTresp, "\n");
+};
+
+sizeofUserPasswd = 8;
+aggr UserPasswd
+{
+ 'X' 0 user;
+ 'X' 4 passwd;
+};
+
+defn
+UserPasswd(addr) {
+ complex UserPasswd addr;
+ print(" user ", addr.user\X, "\n");
+ print(" passwd ", addr.passwd\X, "\n");
+};
+
+ANAMELEN = 28;
+AERRLEN = 64;
+DOMLEN = 48;
+DESKEYLEN = 7;
+CHALLEN = 8;
+NETCHLEN = 16;
+CONFIGLEN = 14;
+SECRETLEN = 32;
+KEYDBOFF = 8;
+OKEYDBLEN = 41;
+KEYDBLEN = 73;
+OMD5LEN = 16;
+AuthTreq = 1;
+AuthChal = 2;
+AuthPass = 3;
+AuthOK = 4;
+AuthErr = 5;
+AuthMod = 6;
+AuthApop = 7;
+AuthOKvar = 9;
+AuthChap = 10;
+AuthMSchap = 11;
+AuthCram = 12;
+AuthHttp = 13;
+AuthVNC = 14;
+AuthTs = 64;
+AuthTc = 65;
+AuthAs = 66;
+AuthAc = 67;
+AuthTp = 68;
+AuthHr = 69;
+sizeofTicketreq = 144;
+aggr Ticketreq
+{
+ 'C' 0 type;
+ 'a' 1 authid;
+ 'a' 29 authdom;
+ 'a' 77 chal;
+ 'a' 85 hostid;
+ 'a' 113 uid;
+};
+
+defn
+Ticketreq(addr) {
+ complex Ticketreq addr;
+ print(" type ", addr.type, "\n");
+ print(" authid ", addr.authid, "\n");
+ print(" authdom ", addr.authdom, "\n");
+ print(" chal ", addr.chal, "\n");
+ print(" hostid ", addr.hostid, "\n");
+ print(" uid ", addr.uid, "\n");
+};
+
+sizeofTicket = 72;
+aggr Ticket
+{
+ 'C' 0 num;
+ 'a' 1 chal;
+ 'a' 9 cuid;
+ 'a' 37 suid;
+ 'a' 65 key;
+};
+
+defn
+Ticket(addr) {
+ complex Ticket addr;
+ print(" num ", addr.num, "\n");
+ print(" chal ", addr.chal, "\n");
+ print(" cuid ", addr.cuid, "\n");
+ print(" suid ", addr.suid, "\n");
+ print(" key ", addr.key, "\n");
+};
+
+sizeofAuthenticator = 16;
+aggr Authenticator
+{
+ 'C' 0 num;
+ 'a' 1 chal;
+ 'U' 12 id;
+};
+
+defn
+Authenticator(addr) {
+ complex Authenticator addr;
+ print(" num ", addr.num, "\n");
+ print(" chal ", addr.chal, "\n");
+ print(" id ", addr.id, "\n");
+};
+
+sizeofPasswordreq = 92;
+aggr Passwordreq
+{
+ 'C' 0 num;
+ 'a' 1 old;
+ 'a' 29 new;
+ 'C' 57 changesecret;
+ 'a' 58 secret;
+};
+
+defn
+Passwordreq(addr) {
+ complex Passwordreq addr;
+ print(" num ", addr.num, "\n");
+ print(" old ", addr.old, "\n");
+ print(" new ", addr.new, "\n");
+ print(" changesecret ", addr.changesecret, "\n");
+ print(" secret ", addr.secret, "\n");
+};
+
+sizeofOChapreply = 48;
+aggr OChapreply
+{
+ 'b' 0 id;
+ 'a' 1 uid;
+ 'a' 29 resp;
+};
+
+defn
+OChapreply(addr) {
+ complex OChapreply addr;
+ print(" id ", addr.id, "\n");
+ print(" uid ", addr.uid, "\n");
+ print(" resp ", addr.resp, "\n");
+};
+
+sizeofOMSchapreply = 76;
+aggr OMSchapreply
+{
+ 'a' 0 uid;
+ 'a' 28 LMresp;
+ 'a' 52 NTresp;
+};
+
+defn
+OMSchapreply(addr) {
+ complex OMSchapreply addr;
+ print(" uid ", addr.uid, "\n");
+ print(" LMresp ", addr.LMresp, "\n");
+ print(" NTresp ", addr.NTresp, "\n");
+};
+
+NVwrite = 1;
+NVwriteonerr = 2;
+sizeofNvrsafe = 112;
+aggr Nvrsafe
+{
+ 'a' 0 machkey;
+ 'b' 7 machsum;
+ 'a' 8 authkey;
+ 'b' 15 authsum;
+ 'a' 16 config;
+ 'b' 30 configsum;
+ 'a' 31 authid;
+ 'b' 59 authidsum;
+ 'a' 60 authdom;
+ 'b' 108 authdomsum;
+};
+
+defn
+Nvrsafe(addr) {
+ complex Nvrsafe addr;
+ print(" machkey ", addr.machkey, "\n");
+ print(" machsum ", addr.machsum, "\n");
+ print(" authkey ", addr.authkey, "\n");
+ print(" authsum ", addr.authsum, "\n");
+ print(" config ", addr.config, "\n");
+ print(" configsum ", addr.configsum, "\n");
+ print(" authid ", addr.authid, "\n");
+ print(" authidsum ", addr.authidsum, "\n");
+ print(" authdom ", addr.authdom, "\n");
+ print(" authdomsum ", addr.authdomsum, "\n");
+};
+
+AESbsize = 16;
+AESmaxkey = 32;
+AESmaxrounds = 14;
+sizeofAESstate = 540;
+aggr AESstate
+{
+ 'U' 0 setup;
+ 'D' 4 rounds;
+ 'D' 8 keybytes;
+ 'a' 12 key;
+ 'a' 44 ekey;
+ 'a' 284 dkey;
+ 'a' 524 ivec;
+};
+
+defn
+AESstate(addr) {
+ complex AESstate addr;
+ print(" setup ", addr.setup, "\n");
+ print(" rounds ", addr.rounds, "\n");
+ print(" keybytes ", addr.keybytes, "\n");
+ print(" key ", addr.key, "\n");
+ print(" ekey ", addr.ekey, "\n");
+ print(" dkey ", addr.dkey, "\n");
+ print(" ivec ", addr.ivec, "\n");
+};
+
+BFbsize = 8;
+BFrounds = 16;
+sizeofBFstate = 4236;
+aggr BFstate
+{
+ 'U' 0 setup;
+ 'a' 4 key;
+ 'a' 60 ivec;
+ 'a' 68 pbox;
+ 'a' 140 sbox;
+};
+
+defn
+BFstate(addr) {
+ complex BFstate addr;
+ print(" setup ", addr.setup, "\n");
+ print(" key ", addr.key, "\n");
+ print(" ivec ", addr.ivec, "\n");
+ print(" pbox ", addr.pbox, "\n");
+ print(" sbox ", addr.sbox, "\n");
+};
+
+DESbsize = 8;
+sizeofDESstate = 148;
+aggr DESstate
+{
+ 'U' 0 setup;
+ 'a' 4 key;
+ 'a' 12 expanded;
+ 'a' 140 ivec;
+};
+
+defn
+DESstate(addr) {
+ complex DESstate addr;
+ print(" setup ", addr.setup, "\n");
+ print(" key ", addr.key, "\n");
+ print(" expanded ", addr.expanded, "\n");
+ print(" ivec ", addr.ivec, "\n");
+};
+
+DES3E = 0;
+DES3D = 1;
+DES3EEE = 0;
+DES3EDE = 2;
+DES3DED = 5;
+DES3DDD = 7;
+sizeofDES3state = 420;
+aggr DES3state
+{
+ 'U' 0 setup;
+ 'a' 4 key;
+ 'a' 28 expanded;
+ 'a' 412 ivec;
+};
+
+defn
+DES3state(addr) {
+ complex DES3state addr;
+ print(" setup ", addr.setup, "\n");
+ print(" key ", addr.key, "\n");
+ print(" expanded ", addr.expanded, "\n");
+ print(" ivec ", addr.ivec, "\n");
+};
+
+SHA1dlen = 20;
+MD4dlen = 16;
+MD5dlen = 16;
+sizeofDigestState = 160;
+aggr DigestState
+{
+ 'U' 0 len;
+ 'a' 4 state;
+ 'a' 24 buf;
+ 'D' 152 blen;
+ 'C' 156 malloced;
+ 'C' 157 seeded;
+};
+
+defn
+DigestState(addr) {
+ complex DigestState addr;
+ print(" len ", addr.len, "\n");
+ print(" state ", addr.state, "\n");
+ print(" buf ", addr.buf, "\n");
+ print(" blen ", addr.blen, "\n");
+ print(" malloced ", addr.malloced, "\n");
+ print(" seeded ", addr.seeded, "\n");
+};
+
+sizeofRC4state = 260;
+aggr RC4state
+{
+ 'a' 0 state;
+ 'b' 256 x;
+ 'b' 257 y;
+};
+
+defn
+RC4state(addr) {
+ complex RC4state addr;
+ print(" state ", addr.state, "\n");
+ print(" x ", addr.x, "\n");
+ print(" y ", addr.y, "\n");
+};
+
+sizeofRSApub = 8;
+aggr RSApub
+{
+ 'X' 0 n;
+ 'X' 4 ek;
+};
+
+defn
+RSApub(addr) {
+ complex RSApub addr;
+ print(" n ", addr.n\X, "\n");
+ print(" ek ", addr.ek\X, "\n");
+};
+
+sizeofRSApriv = 32;
+aggr RSApriv
+{
+ RSApub 0 pub;
+ 'X' 8 dk;
+ 'X' 12 p;
+ 'X' 16 q;
+ 'X' 20 kp;
+ 'X' 24 kq;
+ 'X' 28 c2;
+};
+
+defn
+RSApriv(addr) {
+ complex RSApriv addr;
+ print("RSApub pub {\n");
+ RSApub(addr.pub);
+ print("}\n");
+ print(" dk ", addr.dk\X, "\n");
+ print(" p ", addr.p\X, "\n");
+ print(" q ", addr.q\X, "\n");
+ print(" kp ", addr.kp\X, "\n");
+ print(" kq ", addr.kq\X, "\n");
+ print(" c2 ", addr.c2\X, "\n");
+};
+
+sizeofEGpub = 12;
+aggr EGpub
+{
+ 'X' 0 p;
+ 'X' 4 alpha;
+ 'X' 8 key;
+};
+
+defn
+EGpub(addr) {
+ complex EGpub addr;
+ print(" p ", addr.p\X, "\n");
+ print(" alpha ", addr.alpha\X, "\n");
+ print(" key ", addr.key\X, "\n");
+};
+
+sizeofEGpriv = 16;
+aggr EGpriv
+{
+ EGpub 0 pub;
+ 'X' 12 secret;
+};
+
+defn
+EGpriv(addr) {
+ complex EGpriv addr;
+ print("EGpub pub {\n");
+ EGpub(addr.pub);
+ print("}\n");
+ print(" secret ", addr.secret\X, "\n");
+};
+
+sizeofEGsig = 8;
+aggr EGsig
+{
+ 'X' 0 r;
+ 'X' 4 s;
+};
+
+defn
+EGsig(addr) {
+ complex EGsig addr;
+ print(" r ", addr.r\X, "\n");
+ print(" s ", addr.s\X, "\n");
+};
+
+sizeofString = 20;
+aggr String
+{
+ {
+ 'D' 0 val;
+ };
+ 'X' 4 base;
+ 'X' 8 end;
+ 'X' 12 ptr;
+ 'd' 16 ref;
+ 'b' 18 fixed;
+};
+
+defn
+String(addr) {
+ complex String addr;
+ print("Lock {\n");
+ Lock(addr+0);
+ print("}\n");
+ print(" base ", addr.base\X, "\n");
+ print(" end ", addr.end\X, "\n");
+ print(" ptr ", addr.ptr\X, "\n");
+ print(" ref ", addr.ref, "\n");
+ print(" fixed ", addr.fixed, "\n");
+};
+
+sizeofChannel = 156;
+aggr Channel
+{
+ 'D' 0 s;
+ 'U' 4 f;
+ 'U' 8 n;
+ 'D' 12 e;
+ 'D' 16 freed;
+ 'U' 20 qused;
+ 'a' 24 qentry;
+ 'a' 152 v;
+};
+
+defn
+Channel(addr) {
+ complex Channel addr;
+ print(" s ", addr.s, "\n");
+ print(" f ", addr.f, "\n");
+ print(" n ", addr.n, "\n");
+ print(" e ", addr.e, "\n");
+ print(" freed ", addr.freed, "\n");
+ print(" qused ", addr.qused, "\n");
+ print(" qentry ", addr.qentry, "\n");
+ print(" v ", addr.v, "\n");
+};
+
+sizeofAlt = 20;
+aggr Alt
+{
+ 'A' Channel 0 c;
+ 'X' 4 v;
+ 'D' 8 op;
+ 'A' Channel 12 tag;
+ 'U' 16 q;
+};
+
+defn
+Alt(addr) {
+ complex Alt addr;
+ print(" c ", addr.c\X, "\n");
+ print(" v ", addr.v\X, "\n");
+ print(" op ", addr.op, "\n");
+ print(" tag ", addr.tag\X, "\n");
+ print(" q ", addr.q, "\n");
+};
+
+sizeofRef = 4;
+aggr Ref
+{
+ 'D' 0 ref;
+};
+
+defn
+Ref(addr) {
+ complex Ref addr;
+ print(" ref ", addr.ref, "\n");
+};
+
+sizeof_2_ = 8;
+aggr _2_
+{
+ 'U' 0 msize;
+ 'X' 4 version;
+};
+
+defn
+_2_(addr) {
+ complex _2_ addr;
+ print(" msize ", addr.msize, "\n");
+ print(" version ", addr.version\X, "\n");
+};
+
+sizeof_3_ = 4;
+aggr _3_
+{
+ 'u' 0 oldtag;
+};
+
+defn
+_3_(addr) {
+ complex _3_ addr;
+ print(" oldtag ", addr.oldtag, "\n");
+};
+
+sizeof_4_ = 4;
+aggr _4_
+{
+ 'X' 0 ename;
+};
+
+defn
+_4_(addr) {
+ complex _4_ addr;
+ print(" ename ", addr.ename\X, "\n");
+};
+
+sizeof_5_ = 20;
+aggr _5_
+{
+ Qid 0 qid;
+ 'U' 16 iounit;
+};
+
+defn
+_5_(addr) {
+ complex _5_ addr;
+ print("Qid qid {\n");
+ Qid(addr.qid);
+ print("}\n");
+ print(" iounit ", addr.iounit, "\n");
+};
+
+sizeof_6_ = 16;
+aggr _6_
+{
+ Qid 0 aqid;
+};
+
+defn
+_6_(addr) {
+ complex _6_ addr;
+ print("Qid aqid {\n");
+ Qid(addr.aqid);
+ print("}\n");
+};
+
+sizeof_7_ = 12;
+aggr _7_
+{
+ 'U' 0 afid;
+ 'X' 4 uname;
+ 'X' 8 aname;
+};
+
+defn
+_7_(addr) {
+ complex _7_ addr;
+ print(" afid ", addr.afid, "\n");
+ print(" uname ", addr.uname\X, "\n");
+ print(" aname ", addr.aname\X, "\n");
+};
+
+sizeof_8_ = 12;
+aggr _8_
+{
+ 'U' 0 perm;
+ 'X' 4 name;
+ 'b' 8 mode;
+};
+
+defn
+_8_(addr) {
+ complex _8_ addr;
+ print(" perm ", addr.perm, "\n");
+ print(" name ", addr.name\X, "\n");
+ print(" mode ", addr.mode, "\n");
+};
+
+sizeof_9_ = 72;
+aggr _9_
+{
+ 'U' 0 newfid;
+ 'u' 4 nwname;
+ 'a' 8 wname;
+};
+
+defn
+_9_(addr) {
+ complex _9_ addr;
+ print(" newfid ", addr.newfid, "\n");
+ print(" nwname ", addr.nwname, "\n");
+ print(" wname ", addr.wname, "\n");
+};
+
+sizeof_10_ = 260;
+aggr _10_
+{
+ 'u' 0 nwqid;
+ 'a' 4 wqid;
+};
+
+defn
+_10_(addr) {
+ complex _10_ addr;
+ print(" nwqid ", addr.nwqid, "\n");
+ print(" wqid ", addr.wqid, "\n");
+};
+
+sizeof_11_ = 16;
+aggr _11_
+{
+ 'V' 0 offset;
+ 'U' 8 count;
+ 'X' 12 data;
+};
+
+defn
+_11_(addr) {
+ complex _11_ addr;
+ print(" offset ", addr.offset, "\n");
+ print(" count ", addr.count, "\n");
+ print(" data ", addr.data\X, "\n");
+};
+
+sizeof_12_ = 8;
+aggr _12_
+{
+ 'u' 0 nstat;
+ 'X' 4 stat;
+};
+
+defn
+_12_(addr) {
+ complex _12_ addr;
+ print(" nstat ", addr.nstat, "\n");
+ print(" stat ", addr.stat\X, "\n");
+};
+
+sizeof_13_ = 260;
+aggr _13_
+{
+ {
+ 'U' 0 msize;
+ 'X' 4 version;
+ };
+ {
+ 'u' 0 oldtag;
+ };
+ {
+ 'X' 0 ename;
+ };
+ {
+ Qid 0 qid;
+ 'U' 16 iounit;
+ };
+ {
+ Qid 0 aqid;
+ };
+ {
+ 'U' 0 afid;
+ 'X' 4 uname;
+ 'X' 8 aname;
+ };
+ {
+ 'U' 0 perm;
+ 'X' 4 name;
+ 'b' 8 mode;
+ };
+ {
+ 'U' 0 newfid;
+ 'u' 4 nwname;
+ 'a' 8 wname;
+ };
+ {
+ 'u' 0 nwqid;
+ 'a' 4 wqid;
+ };
+ {
+ 'V' 0 offset;
+ 'U' 8 count;
+ 'X' 12 data;
+ };
+ {
+ 'u' 0 nstat;
+ 'X' 4 stat;
+ };
+};
+
+defn
+_13_(addr) {
+ complex _13_ addr;
+ print("_2_ {\n");
+ _2_(addr+0);
+ print("}\n");
+ print("_3_ {\n");
+ _3_(addr+0);
+ print("}\n");
+ print("_4_ {\n");
+ _4_(addr+0);
+ print("}\n");
+ print("_5_ {\n");
+ _5_(addr+0);
+ print("}\n");
+ print("_6_ {\n");
+ _6_(addr+0);
+ print("}\n");
+ print("_7_ {\n");
+ _7_(addr+0);
+ print("}\n");
+ print("_8_ {\n");
+ _8_(addr+0);
+ print("}\n");
+ print("_9_ {\n");
+ _9_(addr+0);
+ print("}\n");
+ print("_10_ {\n");
+ _10_(addr+0);
+ print("}\n");
+ print("_11_ {\n");
+ _11_(addr+0);
+ print("}\n");
+ print("_12_ {\n");
+ _12_(addr+0);
+ print("}\n");
+};
+
+sizeofFcall = 272;
+aggr Fcall
+{
+ 'b' 0 type;
+ 'U' 4 fid;
+ 'u' 8 tag;
+ {
+ {
+ 'U' 12 msize;
+ 'X' 16 version;
+ };
+ {
+ 'u' 12 oldtag;
+ };
+ {
+ 'X' 12 ename;
+ };
+ {
+ Qid 12 qid;
+ 'U' 28 iounit;
+ };
+ {
+ Qid 12 aqid;
+ };
+ {
+ 'U' 12 afid;
+ 'X' 16 uname;
+ 'X' 20 aname;
+ };
+ {
+ 'U' 12 perm;
+ 'X' 16 name;
+ 'b' 20 mode;
+ };
+ {
+ 'U' 12 newfid;
+ 'u' 16 nwname;
+ 'a' 20 wname;
+ };
+ {
+ 'u' 12 nwqid;
+ 'a' 16 wqid;
+ };
+ {
+ 'V' 12 offset;
+ 'U' 20 count;
+ 'X' 24 data;
+ };
+ {
+ 'u' 12 nstat;
+ 'X' 16 stat;
+ };
+ };
+};
+
+defn
+Fcall(addr) {
+ complex Fcall addr;
+ print(" type ", addr.type, "\n");
+ print(" fid ", addr.fid, "\n");
+ print(" tag ", addr.tag, "\n");
+ print("_13_ {\n");
+ _13_(addr+12);
+ print("}\n");
+};
+
+Tversion = 100;
+Rversion = 101;
+Tauth = 102;
+Rauth = 103;
+Tattach = 104;
+Rattach = 105;
+Terror = 106;
+Rerror = 107;
+Tflush = 108;
+Rflush = 109;
+Twalk = 110;
+Rwalk = 111;
+Topen = 112;
+Ropen = 113;
+Tcreate = 114;
+Rcreate = 115;
+Tread = 116;
+Rread = 117;
+Twrite = 118;
+Rwrite = 119;
+Tclunk = 120;
+Rclunk = 121;
+Tremove = 122;
+Rremove = 123;
+Tstat = 124;
+Rstat = 125;
+Twstat = 126;
+Rwstat = 127;
+Tmax = 128;
+sizeofFid = 60;
+aggr Fid
+{
+ 'U' 0 fid;
+ 'C' 4 omode;
+ 'X' 8 file;
+ 'X' 12 uid;
+ Qid 16 qid;
+ 'X' 32 aux;
+ 'X' 36 rdir;
+ Ref 40 ref;
+ 'X' 44 pool;
+ 'V' 48 diroffset;
+ 'D' 56 dirindex;
+};
+
+defn
+Fid(addr) {
+ complex Fid addr;
+ print(" fid ", addr.fid, "\n");
+ print(" omode ", addr.omode, "\n");
+ print(" file ", addr.file\X, "\n");
+ print(" uid ", addr.uid\X, "\n");
+ print("Qid qid {\n");
+ Qid(addr.qid);
+ print("}\n");
+ print(" aux ", addr.aux\X, "\n");
+ print(" rdir ", addr.rdir\X, "\n");
+ print("Ref ref {\n");
+ Ref(addr.ref);
+ print("}\n");
+ print(" pool ", addr.pool\X, "\n");
+ print(" diroffset ", addr.diroffset, "\n");
+ print(" dirindex ", addr.dirindex, "\n");
+};
+
+sizeofReq = 656;
+aggr Req
+{
+ 'U' 0 tag;
+ 'X' 4 aux;
+ Fcall 8 ifcall;
+ Fcall 280 ofcall;
+ Dir 552 d;
+ 'A' Req 612 oldreq;
+ 'A' Fid 616 fid;
+ 'A' Fid 620 afid;
+ 'A' Fid 624 newfid;
+ 'X' 628 srv;
+ Ref 632 ref;
+ 'X' 636 pool;
+ 'X' 640 buf;
+ 'b' 644 type;
+ 'b' 645 responded;
+ 'X' 648 error;
+ 'X' 652 rbuf;
+};
+
+defn
+Req(addr) {
+ complex Req addr;
+ print(" tag ", addr.tag, "\n");
+ print(" aux ", addr.aux\X, "\n");
+ print("Fcall ifcall {\n");
+ Fcall(addr.ifcall);
+ print("}\n");
+ print("Fcall ofcall {\n");
+ Fcall(addr.ofcall);
+ print("}\n");
+ print("Dir d {\n");
+ Dir(addr.d);
+ print("}\n");
+ print(" oldreq ", addr.oldreq\X, "\n");
+ print(" fid ", addr.fid\X, "\n");
+ print(" afid ", addr.afid\X, "\n");
+ print(" newfid ", addr.newfid\X, "\n");
+ print(" srv ", addr.srv\X, "\n");
+ print("Ref ref {\n");
+ Ref(addr.ref);
+ print("}\n");
+ print(" pool ", addr.pool\X, "\n");
+ print(" buf ", addr.buf\X, "\n");
+ print(" type ", addr.type, "\n");
+ print(" responded ", addr.responded, "\n");
+ print(" error ", addr.error\X, "\n");
+ print(" rbuf ", addr.rbuf\X, "\n");
+};
+
+sizeofFidpool = 12;
+aggr Fidpool
+{
+ 'X' 0 map;
+ 'X' 4 destroy;
+ 'X' 8 srv;
+};
+
+defn
+Fidpool(addr) {
+ complex Fidpool addr;
+ print(" map ", addr.map\X, "\n");
+ print(" destroy ", addr.destroy\X, "\n");
+ print(" srv ", addr.srv\X, "\n");
+};
+
+sizeofReqpool = 12;
+aggr Reqpool
+{
+ 'X' 0 map;
+ 'X' 4 destroy;
+ 'X' 8 srv;
+};
+
+defn
+Reqpool(addr) {
+ complex Reqpool addr;
+ print(" map ", addr.map\X, "\n");
+ print(" destroy ", addr.destroy\X, "\n");
+ print(" srv ", addr.srv\X, "\n");
+};
+
+sizeofFile = 108;
+aggr File
+{
+ {
+ 'D' 0 ref;
+ };
+ {
+ 'u' 4 type;
+ 'U' 8 dev;
+ Qid 12 qid;
+ 'U' 28 mode;
+ 'U' 32 atime;
+ 'U' 36 mtime;
+ 'V' 40 length;
+ 'X' 48 name;
+ 'X' 52 uid;
+ 'X' 56 gid;
+ 'X' 60 muid;
+ };
+ 'A' File 64 parent;
+ 'X' 68 aux;
+ {
+ Lock 72 lock;
+ 'D' 76 readers;
+ 'D' 80 writer;
+ 'A' QLp 84 $head;
+ 'A' QLp 88 $tail;
+ };
+ 'X' 92 filelist;
+ 'X' 96 tree;
+ 'D' 100 nchild;
+ 'D' 104 allocd;
+};
+
+defn
+File(addr) {
+ complex File addr;
+ print("Ref {\n");
+ Ref(addr+0);
+ print("}\n");
+ print("Dir {\n");
+ Dir(addr+4);
+ print("}\n");
+ print(" parent ", addr.parent\X, "\n");
+ print(" aux ", addr.aux\X, "\n");
+ print("RWLock {\n");
+ RWLock(addr+72);
+ print("}\n");
+ print(" filelist ", addr.filelist\X, "\n");
+ print(" tree ", addr.tree\X, "\n");
+ print(" nchild ", addr.nchild, "\n");
+ print(" allocd ", addr.allocd, "\n");
+};
+
+sizeofTree = 20;
+aggr Tree
+{
+ 'A' File 0 root;
+ 'X' 4 destroy;
+ Lock 8 genlock;
+ 'U' 12 qidgen;
+ 'U' 16 dirqidgen;
+};
+
+defn
+Tree(addr) {
+ complex Tree addr;
+ print(" root ", addr.root\X, "\n");
+ print(" destroy ", addr.destroy\X, "\n");
+ print("Lock genlock {\n");
+ Lock(addr.genlock);
+ print("}\n");
+ print(" qidgen ", addr.qidgen, "\n");
+ print(" dirqidgen ", addr.dirqidgen, "\n");
+};
+
+sizeofSrv = 136;
+aggr Srv
+{
+ 'A' Tree 0 tree;
+ 'X' 4 destroyfid;
+ 'X' 8 destroyreq;
+ 'X' 12 end;
+ 'X' 16 aux;
+ 'X' 20 attach;
+ 'X' 24 auth;
+ 'X' 28 open;
+ 'X' 32 create;
+ 'X' 36 read;
+ 'X' 40 write;
+ 'X' 44 remove;
+ 'X' 48 flush;
+ 'X' 52 stat;
+ 'X' 56 wstat;
+ 'X' 60 walk;
+ 'X' 64 clone;
+ 'X' 68 walk1;
+ 'D' 72 infd;
+ 'D' 76 outfd;
+ 'D' 80 nopipe;
+ 'A' Fidpool 84 fpool;
+ 'A' Reqpool 88 rpool;
+ 'U' 92 msize;
+ 'X' 96 rbuf;
+ QLock 100 rlock;
+ 'X' 116 wbuf;
+ QLock 120 wlock;
+};
+
+defn
+Srv(addr) {
+ complex Srv addr;
+ print(" tree ", addr.tree\X, "\n");
+ print(" destroyfid ", addr.destroyfid\X, "\n");
+ print(" destroyreq ", addr.destroyreq\X, "\n");
+ print(" end ", addr.end\X, "\n");
+ print(" aux ", addr.aux\X, "\n");
+ print(" attach ", addr.attach\X, "\n");
+ print(" auth ", addr.auth\X, "\n");
+ print(" open ", addr.open\X, "\n");
+ print(" create ", addr.create\X, "\n");
+ print(" read ", addr.read\X, "\n");
+ print(" write ", addr.write\X, "\n");
+ print(" remove ", addr.remove\X, "\n");
+ print(" flush ", addr.flush\X, "\n");
+ print(" stat ", addr.stat\X, "\n");
+ print(" wstat ", addr.wstat\X, "\n");
+ print(" walk ", addr.walk\X, "\n");
+ print(" clone ", addr.clone\X, "\n");
+ print(" walk1 ", addr.walk1\X, "\n");
+ print(" infd ", addr.infd, "\n");
+ print(" outfd ", addr.outfd, "\n");
+ print(" nopipe ", addr.nopipe, "\n");
+ print(" fpool ", addr.fpool\X, "\n");
+ print(" rpool ", addr.rpool\X, "\n");
+ print(" msize ", addr.msize, "\n");
+ print(" rbuf ", addr.rbuf\X, "\n");
+ print("QLock rlock {\n");
+ QLock(addr.rlock);
+ print("}\n");
+ print(" wbuf ", addr.wbuf\X, "\n");
+ print("QLock wlock {\n");
+ QLock(addr.wlock);
+ print("}\n");
+};
+
+OMASK = 3;
+Maxname = 128;
+Maxrpc = 4096;
+Notstarted = -3;
+Broken = -2;
+Established = -1;
+RpcFailure = 0;
+RpcNeedkey = 1;
+RpcOk = 2;
+RpcErrstr = 3;
+RpcToosmall = 4;
+RpcPhase = 5;
+sizeofAttr = 12;
+aggr Attr
+{
+ 'A' Attr 0 next;
+ 'A' String 4 name;
+ 'A' String 8 val;
+};
+
+defn
+Attr(addr) {
+ complex Attr addr;
+ print(" next ", addr.next\X, "\n");
+ print(" name ", addr.name\X, "\n");
+ print(" val ", addr.val\X, "\n");
+};
+
+sizeof_14_ = 4120;
+aggr _14_
+{
+ 'X' 0 arg;
+ 'a' 4 buf;
+ 'X' 4100 verb;
+ 'D' 4104 iverb;
+ 'D' 4108 narg;
+ 'D' 4112 nbuf;
+ 'D' 4116 nwant;
+};
+
+defn
+_14_(addr) {
+ complex _14_ addr;
+ print(" arg ", addr.arg\X, "\n");
+ print(" buf ", addr.buf, "\n");
+ print(" verb ", addr.verb\X, "\n");
+ print(" iverb ", addr.iverb, "\n");
+ print(" narg ", addr.narg, "\n");
+ print(" nbuf ", addr.nbuf, "\n");
+ print(" nwant ", addr.nwant, "\n");
+};
+
+sizeofFsstate = 4700;
+aggr Fsstate
+{
+ 'X' 0 sysuser;
+ 'D' 4 listoff;
+ _14_ 8 rpc;
+ 'a' 4128 err;
+ 'a' 4256 keyinfo;
+ 'X' 4640 phasename;
+ 'D' 4644 isclient;
+ 'D' 4648 haveai;
+ 'D' 4652 maxphase;
+ 'D' 4656 phase;
+ 'D' 4660 started;
+ 'A' Attr 4664 attr;
+ AuthInfo 4668 ai;
+ 'X' 4688 proto;
+ 'X' 4692 ps;
+ 'X' 4696 ring;
+};
+
+defn
+Fsstate(addr) {
+ complex Fsstate addr;
+ print(" sysuser ", addr.sysuser\X, "\n");
+ print(" listoff ", addr.listoff, "\n");
+ print("_14_ rpc {\n");
+ _14_(addr.rpc);
+ print("}\n");
+ print(" err ", addr.err, "\n");
+ print(" keyinfo ", addr.keyinfo, "\n");
+ print(" phasename ", addr.phasename\X, "\n");
+ print(" isclient ", addr.isclient, "\n");
+ print(" haveai ", addr.haveai, "\n");
+ print(" maxphase ", addr.maxphase, "\n");
+ print(" phase ", addr.phase, "\n");
+ print(" started ", addr.started, "\n");
+ print(" attr ", addr.attr\X, "\n");
+ print("AuthInfo ai {\n");
+ AuthInfo(addr.ai);
+ print("}\n");
+ print(" proto ", addr.proto\X, "\n");
+ print(" ps ", addr.ps\X, "\n");
+ print(" ring ", addr.ring\X, "\n");
+};
+
+sizeofKey = 20;
+aggr Key
+{
+ 'D' 0 ref;
+ 'A' Attr 4 attr;
+ 'A' Attr 8 privattr;
+ 'X' 12 proto;
+ 'X' 16 priv;
+};
+
+defn
+Key(addr) {
+ complex Key addr;
+ print(" ref ", addr.ref, "\n");
+ print(" attr ", addr.attr\X, "\n");
+ print(" privattr ", addr.privattr\X, "\n");
+ print(" proto ", addr.proto\X, "\n");
+ print(" priv ", addr.priv\X, "\n");
+};
+
+sizeofKeyring = 8;
+aggr Keyring
+{
+ 'A' Key 0 key;
+ 'D' 4 nkey;
+};
+
+defn
+Keyring(addr) {
+ complex Keyring addr;
+ print(" key ", addr.key\X, "\n");
+ print(" nkey ", addr.nkey, "\n");
+};
+
+sizeofLogbuf = 520;
+aggr Logbuf
+{
+ 'D' 0 rp;
+ 'D' 4 wp;
+ 'a' 8 msg;
+};
+
+defn
+Logbuf(addr) {
+ complex Logbuf addr;
+ print(" rp ", addr.rp, "\n");
+ print(" wp ", addr.wp, "\n");
+ print(" msg ", addr.msg, "\n");
+};
+
+sizeofProto = 28;
+aggr Proto
+{
+ 'X' 0 name;
+ 'X' 4 init;
+ 'X' 8 addkey;
+ 'X' 12 closekey;
+ 'X' 16 write;
+ 'X' 20 read;
+ 'X' 24 close;
+};
+
+defn
+Proto(addr) {
+ complex Proto addr;
+ print(" name ", addr.name\X, "\n");
+ print(" init ", addr.init\X, "\n");
+ print(" addkey ", addr.addkey\X, "\n");
+ print(" closekey ", addr.closekey\X, "\n");
+ print(" write ", addr.write\X, "\n");
+ print(" read ", addr.read\X, "\n");
+ print(" close ", addr.close\X, "\n");
+};
+
+complex Keyring ring;
+complex Logbuf logbuf;
+complex Proto apop;
+complex Proto cram;
+complex Proto p9any;
+complex Proto p9sk1;
+complex Proto p9sk2;
+complex Keyring ring;
+complex Srv fs;
+complex Proto main:p;
+Qroot = 0;
+Qfactotum = 1;
+Qrpc = 2;
+Qkeylist = 3;
+Qprotolist = 4;
+Qconfirm = 5;
+Qlog = 6;
+Qctl = 7;
+complex Qid mkqid:q;
+complex Req fsattach:r;
+sizeof_15_ = 12;
+aggr _15_
+{
+ 'X' 0 name;
+ 'D' 4 qidpath;
+ 'U' 8 perm;
+};
+
+defn
+_15_(addr) {
+ complex _15_ addr;
+ print(" name ", addr.name\X, "\n");
+ print(" qidpath ", addr.qidpath, "\n");
+ print(" perm ", addr.perm, "\n");
+};
+
+complex Dir fillstat:dir;
+complex Dir fsdirgen:dir;
+complex Fid fswalk1:fid;
+complex Qid fswalk1:qid;
+complex Req fsstat:r;
+complex Req fsopen:r;
+complex Fsstate fsopen:fss;
+complex Fid fsdestroyfid:fid;
+complex Req readlist:r;
+complex Key keylist:k;
+complex Req fsread:r;
+complex Fsstate fsread:s;
+complex Req fswrite:r;
+complex Srv fs;