Blob
1 sizeof_1_ = 8;2 aggr _1_3 {4 'D' 0 lo;5 'D' 4 hi;6 };8 defn9 _1_(addr) {10 complex _1_ addr;11 print(" lo ", addr.lo, "\n");12 print(" hi ", addr.hi, "\n");13 };15 sizeofFPdbleword = 8;16 aggr FPdbleword17 {18 'F' 0 x;19 {20 'D' 0 lo;21 'D' 4 hi;22 };23 };25 defn26 FPdbleword(addr) {27 complex FPdbleword addr;28 print(" x ", addr.x, "\n");29 print("_1_ {\n");30 _1_(addr+0);31 print("}\n");32 };34 UTFmax = 3;35 Runesync = 128;36 Runeself = 128;37 Runeerror = 128;38 sizeofFconv = 24;39 aggr Fconv40 {41 'X' 0 out;42 'X' 4 eout;43 'D' 8 f1;44 'D' 12 f2;45 'D' 16 f3;46 'D' 20 chr;47 };49 defn50 Fconv(addr) {51 complex Fconv addr;52 print(" out ", addr.out\X, "\n");53 print(" eout ", addr.eout\X, "\n");54 print(" f1 ", addr.f1, "\n");55 print(" f2 ", addr.f2, "\n");56 print(" f3 ", addr.f3, "\n");57 print(" chr ", addr.chr, "\n");58 };60 sizeofTm = 40;61 aggr Tm62 {63 'D' 0 sec;64 'D' 4 min;65 'D' 8 hour;66 'D' 12 mday;67 'D' 16 mon;68 'D' 20 year;69 'D' 24 wday;70 'D' 28 yday;71 'a' 32 zone;72 'D' 36 tzoff;73 };75 defn76 Tm(addr) {77 complex Tm addr;78 print(" sec ", addr.sec, "\n");79 print(" min ", addr.min, "\n");80 print(" hour ", addr.hour, "\n");81 print(" mday ", addr.mday, "\n");82 print(" mon ", addr.mon, "\n");83 print(" year ", addr.year, "\n");84 print(" wday ", addr.wday, "\n");85 print(" yday ", addr.yday, "\n");86 print(" zone ", addr.zone, "\n");87 print(" tzoff ", addr.tzoff, "\n");88 };90 PNPROC = 1;91 PNGROUP = 2;92 sizeofLock = 4;93 aggr Lock94 {95 'D' 0 val;96 };98 defn99 Lock(addr) {100 complex Lock addr;101 print(" val ", addr.val, "\n");102 };104 sizeofQLp = 12;105 aggr QLp106 {107 'D' 0 inuse;108 'A' QLp 4 next;109 'C' 8 state;110 };112 defn113 QLp(addr) {114 complex QLp addr;115 print(" inuse ", addr.inuse, "\n");116 print(" next ", addr.next\X, "\n");117 print(" state ", addr.state, "\n");118 };120 sizeofQLock = 16;121 aggr QLock122 {123 Lock 0 lock;124 'D' 4 locked;125 'A' QLp 8 $head;126 'A' QLp 12 $tail;127 };129 defn130 QLock(addr) {131 complex QLock addr;132 print("Lock lock {\n");133 Lock(addr.lock);134 print("}\n");135 print(" locked ", addr.locked, "\n");136 print(" $head ", addr.$head\X, "\n");137 print(" $tail ", addr.$tail\X, "\n");138 };140 sizeofRWLock = 20;141 aggr RWLock142 {143 Lock 0 lock;144 'D' 4 readers;145 'D' 8 writer;146 'A' QLp 12 $head;147 'A' QLp 16 $tail;148 };150 defn151 RWLock(addr) {152 complex RWLock addr;153 print("Lock lock {\n");154 Lock(addr.lock);155 print("}\n");156 print(" readers ", addr.readers, "\n");157 print(" writer ", addr.writer, "\n");158 print(" $head ", addr.$head\X, "\n");159 print(" $tail ", addr.$tail\X, "\n");160 };162 RFNAMEG = 1;163 RFENVG = 2;164 RFFDG = 4;165 RFNOTEG = 8;166 RFPROC = 16;167 RFMEM = 32;168 RFNOWAIT = 64;169 RFCNAMEG = 1024;170 RFCENVG = 2048;171 RFCFDG = 4096;172 RFREND = 8192;173 RFNOMNT = 16384;174 sizeofQid = 16;175 aggr Qid176 {177 'W' 0 path;178 'U' 8 vers;179 'b' 12 type;180 };182 defn183 Qid(addr) {184 complex Qid addr;185 print(" path ", addr.path, "\n");186 print(" vers ", addr.vers, "\n");187 print(" type ", addr.type, "\n");188 };190 sizeofDir = 60;191 aggr Dir192 {193 'u' 0 type;194 'U' 4 dev;195 Qid 8 qid;196 'U' 24 mode;197 'U' 28 atime;198 'U' 32 mtime;199 'V' 36 length;200 'X' 44 name;201 'X' 48 uid;202 'X' 52 gid;203 'X' 56 muid;204 };206 defn207 Dir(addr) {208 complex Dir addr;209 print(" type ", addr.type, "\n");210 print(" dev ", addr.dev, "\n");211 print("Qid qid {\n");212 Qid(addr.qid);213 print("}\n");214 print(" mode ", addr.mode, "\n");215 print(" atime ", addr.atime, "\n");216 print(" mtime ", addr.mtime, "\n");217 print(" length ", addr.length, "\n");218 print(" name ", addr.name\X, "\n");219 print(" uid ", addr.uid\X, "\n");220 print(" gid ", addr.gid\X, "\n");221 print(" muid ", addr.muid\X, "\n");222 };224 sizeofWaitmsg = 20;225 aggr Waitmsg226 {227 'D' 0 pid;228 'a' 4 time;229 'X' 16 msg;230 };232 defn233 Waitmsg(addr) {234 complex Waitmsg addr;235 print(" pid ", addr.pid, "\n");236 print(" time ", addr.time, "\n");237 print(" msg ", addr.msg\X, "\n");238 };240 sizeofIOchunk = 8;241 aggr IOchunk242 {243 'X' 0 addr;244 'U' 4 len;245 };247 defn248 IOchunk(addr) {249 complex IOchunk addr;250 print(" addr ", addr.addr\X, "\n");251 print(" len ", addr.len, "\n");252 };254 MAXCHLEN = 256;255 MAXNAMELEN = 256;256 MD5LEN = 16;257 ARok = 0;258 ARdone = 1;259 ARerror = 2;260 ARneedkey = 3;261 ARbadkey = 4;262 ARwritenext = 5;263 ARtoosmall = 6;264 ARtoobig = 7;265 ARrpcfailure = 8;266 ARphase = 9;267 AuthRpcMax = 4096;268 sizeofAuthRpc = 8208;269 aggr AuthRpc270 {271 'D' 0 afd;272 'X' 4 verb;273 'a' 8 ibuf;274 'a' 4104 obuf;275 'X' 8200 arg;276 'U' 8204 narg;277 };279 defn280 AuthRpc(addr) {281 complex AuthRpc addr;282 print(" afd ", addr.afd, "\n");283 print(" verb ", addr.verb\X, "\n");284 print(" ibuf ", addr.ibuf, "\n");285 print(" obuf ", addr.obuf, "\n");286 print(" arg ", addr.arg\X, "\n");287 print(" narg ", addr.narg, "\n");288 };290 sizeofAuthInfo = 20;291 aggr AuthInfo292 {293 'X' 0 cuid;294 'X' 4 suid;295 'X' 8 cap;296 'D' 12 nsecret;297 'X' 16 secret;298 };300 defn301 AuthInfo(addr) {302 complex AuthInfo addr;303 print(" cuid ", addr.cuid\X, "\n");304 print(" suid ", addr.suid\X, "\n");305 print(" cap ", addr.cap\X, "\n");306 print(" nsecret ", addr.nsecret, "\n");307 print(" secret ", addr.secret\X, "\n");308 };310 sizeofChalstate = 540;311 aggr Chalstate312 {313 'X' 0 user;314 'a' 4 chal;315 'D' 260 nchal;316 'X' 264 resp;317 'D' 268 nresp;318 'D' 272 afd;319 'A' AuthRpc 276 rpc;320 'a' 280 userbuf;321 'D' 536 userinchal;322 };324 defn325 Chalstate(addr) {326 complex Chalstate addr;327 print(" user ", addr.user\X, "\n");328 print(" chal ", addr.chal, "\n");329 print(" nchal ", addr.nchal, "\n");330 print(" resp ", addr.resp\X, "\n");331 print(" nresp ", addr.nresp, "\n");332 print(" afd ", addr.afd, "\n");333 print(" rpc ", addr.rpc\X, "\n");334 print(" userbuf ", addr.userbuf, "\n");335 print(" userinchal ", addr.userinchal, "\n");336 };338 sizeofChapreply = 20;339 aggr Chapreply340 {341 'b' 0 id;342 'a' 1 resp;343 };345 defn346 Chapreply(addr) {347 complex Chapreply addr;348 print(" id ", addr.id, "\n");349 print(" resp ", addr.resp, "\n");350 };352 sizeofMSchapreply = 48;353 aggr MSchapreply354 {355 'a' 0 LMresp;356 'a' 24 NTresp;357 };359 defn360 MSchapreply(addr) {361 complex MSchapreply addr;362 print(" LMresp ", addr.LMresp, "\n");363 print(" NTresp ", addr.NTresp, "\n");364 };366 sizeofUserPasswd = 8;367 aggr UserPasswd368 {369 'X' 0 user;370 'X' 4 passwd;371 };373 defn374 UserPasswd(addr) {375 complex UserPasswd addr;376 print(" user ", addr.user\X, "\n");377 print(" passwd ", addr.passwd\X, "\n");378 };380 ANAMELEN = 28;381 AERRLEN = 64;382 DOMLEN = 48;383 DESKEYLEN = 7;384 CHALLEN = 8;385 NETCHLEN = 16;386 CONFIGLEN = 14;387 SECRETLEN = 32;388 KEYDBOFF = 8;389 OKEYDBLEN = 41;390 KEYDBLEN = 73;391 OMD5LEN = 16;392 AuthTreq = 1;393 AuthChal = 2;394 AuthPass = 3;395 AuthOK = 4;396 AuthErr = 5;397 AuthMod = 6;398 AuthApop = 7;399 AuthOKvar = 9;400 AuthChap = 10;401 AuthMSchap = 11;402 AuthCram = 12;403 AuthHttp = 13;404 AuthVNC = 14;405 AuthTs = 64;406 AuthTc = 65;407 AuthAs = 66;408 AuthAc = 67;409 AuthTp = 68;410 AuthHr = 69;411 sizeofTicketreq = 144;412 aggr Ticketreq413 {414 'C' 0 type;415 'a' 1 authid;416 'a' 29 authdom;417 'a' 77 chal;418 'a' 85 hostid;419 'a' 113 uid;420 };422 defn423 Ticketreq(addr) {424 complex Ticketreq addr;425 print(" type ", addr.type, "\n");426 print(" authid ", addr.authid, "\n");427 print(" authdom ", addr.authdom, "\n");428 print(" chal ", addr.chal, "\n");429 print(" hostid ", addr.hostid, "\n");430 print(" uid ", addr.uid, "\n");431 };433 sizeofTicket = 72;434 aggr Ticket435 {436 'C' 0 num;437 'a' 1 chal;438 'a' 9 cuid;439 'a' 37 suid;440 'a' 65 key;441 };443 defn444 Ticket(addr) {445 complex Ticket addr;446 print(" num ", addr.num, "\n");447 print(" chal ", addr.chal, "\n");448 print(" cuid ", addr.cuid, "\n");449 print(" suid ", addr.suid, "\n");450 print(" key ", addr.key, "\n");451 };453 sizeofAuthenticator = 16;454 aggr Authenticator455 {456 'C' 0 num;457 'a' 1 chal;458 'U' 12 id;459 };461 defn462 Authenticator(addr) {463 complex Authenticator addr;464 print(" num ", addr.num, "\n");465 print(" chal ", addr.chal, "\n");466 print(" id ", addr.id, "\n");467 };469 sizeofPasswordreq = 92;470 aggr Passwordreq471 {472 'C' 0 num;473 'a' 1 old;474 'a' 29 new;475 'C' 57 changesecret;476 'a' 58 secret;477 };479 defn480 Passwordreq(addr) {481 complex Passwordreq addr;482 print(" num ", addr.num, "\n");483 print(" old ", addr.old, "\n");484 print(" new ", addr.new, "\n");485 print(" changesecret ", addr.changesecret, "\n");486 print(" secret ", addr.secret, "\n");487 };489 sizeofOChapreply = 48;490 aggr OChapreply491 {492 'b' 0 id;493 'a' 1 uid;494 'a' 29 resp;495 };497 defn498 OChapreply(addr) {499 complex OChapreply addr;500 print(" id ", addr.id, "\n");501 print(" uid ", addr.uid, "\n");502 print(" resp ", addr.resp, "\n");503 };505 sizeofOMSchapreply = 76;506 aggr OMSchapreply507 {508 'a' 0 uid;509 'a' 28 LMresp;510 'a' 52 NTresp;511 };513 defn514 OMSchapreply(addr) {515 complex OMSchapreply addr;516 print(" uid ", addr.uid, "\n");517 print(" LMresp ", addr.LMresp, "\n");518 print(" NTresp ", addr.NTresp, "\n");519 };521 NVwrite = 1;522 NVwriteonerr = 2;523 sizeofNvrsafe = 112;524 aggr Nvrsafe525 {526 'a' 0 machkey;527 'b' 7 machsum;528 'a' 8 authkey;529 'b' 15 authsum;530 'a' 16 config;531 'b' 30 configsum;532 'a' 31 authid;533 'b' 59 authidsum;534 'a' 60 authdom;535 'b' 108 authdomsum;536 };538 defn539 Nvrsafe(addr) {540 complex Nvrsafe addr;541 print(" machkey ", addr.machkey, "\n");542 print(" machsum ", addr.machsum, "\n");543 print(" authkey ", addr.authkey, "\n");544 print(" authsum ", addr.authsum, "\n");545 print(" config ", addr.config, "\n");546 print(" configsum ", addr.configsum, "\n");547 print(" authid ", addr.authid, "\n");548 print(" authidsum ", addr.authidsum, "\n");549 print(" authdom ", addr.authdom, "\n");550 print(" authdomsum ", addr.authdomsum, "\n");551 };553 AESbsize = 16;554 AESmaxkey = 32;555 AESmaxrounds = 14;556 sizeofAESstate = 540;557 aggr AESstate558 {559 'U' 0 setup;560 'D' 4 rounds;561 'D' 8 keybytes;562 'a' 12 key;563 'a' 44 ekey;564 'a' 284 dkey;565 'a' 524 ivec;566 };568 defn569 AESstate(addr) {570 complex AESstate addr;571 print(" setup ", addr.setup, "\n");572 print(" rounds ", addr.rounds, "\n");573 print(" keybytes ", addr.keybytes, "\n");574 print(" key ", addr.key, "\n");575 print(" ekey ", addr.ekey, "\n");576 print(" dkey ", addr.dkey, "\n");577 print(" ivec ", addr.ivec, "\n");578 };580 BFbsize = 8;581 BFrounds = 16;582 sizeofBFstate = 4236;583 aggr BFstate584 {585 'U' 0 setup;586 'a' 4 key;587 'a' 60 ivec;588 'a' 68 pbox;589 'a' 140 sbox;590 };592 defn593 BFstate(addr) {594 complex BFstate addr;595 print(" setup ", addr.setup, "\n");596 print(" key ", addr.key, "\n");597 print(" ivec ", addr.ivec, "\n");598 print(" pbox ", addr.pbox, "\n");599 print(" sbox ", addr.sbox, "\n");600 };602 DESbsize = 8;603 sizeofDESstate = 148;604 aggr DESstate605 {606 'U' 0 setup;607 'a' 4 key;608 'a' 12 expanded;609 'a' 140 ivec;610 };612 defn613 DESstate(addr) {614 complex DESstate addr;615 print(" setup ", addr.setup, "\n");616 print(" key ", addr.key, "\n");617 print(" expanded ", addr.expanded, "\n");618 print(" ivec ", addr.ivec, "\n");619 };621 DES3E = 0;622 DES3D = 1;623 DES3EEE = 0;624 DES3EDE = 2;625 DES3DED = 5;626 DES3DDD = 7;627 sizeofDES3state = 420;628 aggr DES3state629 {630 'U' 0 setup;631 'a' 4 key;632 'a' 28 expanded;633 'a' 412 ivec;634 };636 defn637 DES3state(addr) {638 complex DES3state addr;639 print(" setup ", addr.setup, "\n");640 print(" key ", addr.key, "\n");641 print(" expanded ", addr.expanded, "\n");642 print(" ivec ", addr.ivec, "\n");643 };645 SHA1dlen = 20;646 MD4dlen = 16;647 MD5dlen = 16;648 sizeofDigestState = 160;649 aggr DigestState650 {651 'U' 0 len;652 'a' 4 state;653 'a' 24 buf;654 'D' 152 blen;655 'C' 156 malloced;656 'C' 157 seeded;657 };659 defn660 DigestState(addr) {661 complex DigestState addr;662 print(" len ", addr.len, "\n");663 print(" state ", addr.state, "\n");664 print(" buf ", addr.buf, "\n");665 print(" blen ", addr.blen, "\n");666 print(" malloced ", addr.malloced, "\n");667 print(" seeded ", addr.seeded, "\n");668 };670 sizeofRC4state = 260;671 aggr RC4state672 {673 'a' 0 state;674 'b' 256 x;675 'b' 257 y;676 };678 defn679 RC4state(addr) {680 complex RC4state addr;681 print(" state ", addr.state, "\n");682 print(" x ", addr.x, "\n");683 print(" y ", addr.y, "\n");684 };686 sizeofRSApub = 8;687 aggr RSApub688 {689 'X' 0 n;690 'X' 4 ek;691 };693 defn694 RSApub(addr) {695 complex RSApub addr;696 print(" n ", addr.n\X, "\n");697 print(" ek ", addr.ek\X, "\n");698 };700 sizeofRSApriv = 32;701 aggr RSApriv702 {703 RSApub 0 pub;704 'X' 8 dk;705 'X' 12 p;706 'X' 16 q;707 'X' 20 kp;708 'X' 24 kq;709 'X' 28 c2;710 };712 defn713 RSApriv(addr) {714 complex RSApriv addr;715 print("RSApub pub {\n");716 RSApub(addr.pub);717 print("}\n");718 print(" dk ", addr.dk\X, "\n");719 print(" p ", addr.p\X, "\n");720 print(" q ", addr.q\X, "\n");721 print(" kp ", addr.kp\X, "\n");722 print(" kq ", addr.kq\X, "\n");723 print(" c2 ", addr.c2\X, "\n");724 };726 sizeofEGpub = 12;727 aggr EGpub728 {729 'X' 0 p;730 'X' 4 alpha;731 'X' 8 key;732 };734 defn735 EGpub(addr) {736 complex EGpub addr;737 print(" p ", addr.p\X, "\n");738 print(" alpha ", addr.alpha\X, "\n");739 print(" key ", addr.key\X, "\n");740 };742 sizeofEGpriv = 16;743 aggr EGpriv744 {745 EGpub 0 pub;746 'X' 12 secret;747 };749 defn750 EGpriv(addr) {751 complex EGpriv addr;752 print("EGpub pub {\n");753 EGpub(addr.pub);754 print("}\n");755 print(" secret ", addr.secret\X, "\n");756 };758 sizeofEGsig = 8;759 aggr EGsig760 {761 'X' 0 r;762 'X' 4 s;763 };765 defn766 EGsig(addr) {767 complex EGsig addr;768 print(" r ", addr.r\X, "\n");769 print(" s ", addr.s\X, "\n");770 };772 sizeofString = 20;773 aggr String774 {775 {776 'D' 0 val;777 };778 'X' 4 base;779 'X' 8 end;780 'X' 12 ptr;781 'd' 16 ref;782 'b' 18 fixed;783 };785 defn786 String(addr) {787 complex String addr;788 print("Lock {\n");789 Lock(addr+0);790 print("}\n");791 print(" base ", addr.base\X, "\n");792 print(" end ", addr.end\X, "\n");793 print(" ptr ", addr.ptr\X, "\n");794 print(" ref ", addr.ref, "\n");795 print(" fixed ", addr.fixed, "\n");796 };798 sizeofChannel = 156;799 aggr Channel800 {801 'D' 0 s;802 'U' 4 f;803 'U' 8 n;804 'D' 12 e;805 'D' 16 freed;806 'U' 20 qused;807 'a' 24 qentry;808 'a' 152 v;809 };811 defn812 Channel(addr) {813 complex Channel addr;814 print(" s ", addr.s, "\n");815 print(" f ", addr.f, "\n");816 print(" n ", addr.n, "\n");817 print(" e ", addr.e, "\n");818 print(" freed ", addr.freed, "\n");819 print(" qused ", addr.qused, "\n");820 print(" qentry ", addr.qentry, "\n");821 print(" v ", addr.v, "\n");822 };824 sizeofAlt = 20;825 aggr Alt826 {827 'A' Channel 0 c;828 'X' 4 v;829 'D' 8 op;830 'A' Channel 12 tag;831 'U' 16 q;832 };834 defn835 Alt(addr) {836 complex Alt addr;837 print(" c ", addr.c\X, "\n");838 print(" v ", addr.v\X, "\n");839 print(" op ", addr.op, "\n");840 print(" tag ", addr.tag\X, "\n");841 print(" q ", addr.q, "\n");842 };844 sizeofRef = 4;845 aggr Ref846 {847 'D' 0 ref;848 };850 defn851 Ref(addr) {852 complex Ref addr;853 print(" ref ", addr.ref, "\n");854 };856 sizeof_2_ = 8;857 aggr _2_858 {859 'U' 0 msize;860 'X' 4 version;861 };863 defn864 _2_(addr) {865 complex _2_ addr;866 print(" msize ", addr.msize, "\n");867 print(" version ", addr.version\X, "\n");868 };870 sizeof_3_ = 4;871 aggr _3_872 {873 'u' 0 oldtag;874 };876 defn877 _3_(addr) {878 complex _3_ addr;879 print(" oldtag ", addr.oldtag, "\n");880 };882 sizeof_4_ = 4;883 aggr _4_884 {885 'X' 0 ename;886 };888 defn889 _4_(addr) {890 complex _4_ addr;891 print(" ename ", addr.ename\X, "\n");892 };894 sizeof_5_ = 20;895 aggr _5_896 {897 Qid 0 qid;898 'U' 16 iounit;899 };901 defn902 _5_(addr) {903 complex _5_ addr;904 print("Qid qid {\n");905 Qid(addr.qid);906 print("}\n");907 print(" iounit ", addr.iounit, "\n");908 };910 sizeof_6_ = 16;911 aggr _6_912 {913 Qid 0 aqid;914 };916 defn917 _6_(addr) {918 complex _6_ addr;919 print("Qid aqid {\n");920 Qid(addr.aqid);921 print("}\n");922 };924 sizeof_7_ = 12;925 aggr _7_926 {927 'U' 0 afid;928 'X' 4 uname;929 'X' 8 aname;930 };932 defn933 _7_(addr) {934 complex _7_ addr;935 print(" afid ", addr.afid, "\n");936 print(" uname ", addr.uname\X, "\n");937 print(" aname ", addr.aname\X, "\n");938 };940 sizeof_8_ = 12;941 aggr _8_942 {943 'U' 0 perm;944 'X' 4 name;945 'b' 8 mode;946 };948 defn949 _8_(addr) {950 complex _8_ addr;951 print(" perm ", addr.perm, "\n");952 print(" name ", addr.name\X, "\n");953 print(" mode ", addr.mode, "\n");954 };956 sizeof_9_ = 72;957 aggr _9_958 {959 'U' 0 newfid;960 'u' 4 nwname;961 'a' 8 wname;962 };964 defn965 _9_(addr) {966 complex _9_ addr;967 print(" newfid ", addr.newfid, "\n");968 print(" nwname ", addr.nwname, "\n");969 print(" wname ", addr.wname, "\n");970 };972 sizeof_10_ = 260;973 aggr _10_974 {975 'u' 0 nwqid;976 'a' 4 wqid;977 };979 defn980 _10_(addr) {981 complex _10_ addr;982 print(" nwqid ", addr.nwqid, "\n");983 print(" wqid ", addr.wqid, "\n");984 };986 sizeof_11_ = 16;987 aggr _11_988 {989 'V' 0 offset;990 'U' 8 count;991 'X' 12 data;992 };994 defn995 _11_(addr) {996 complex _11_ addr;997 print(" offset ", addr.offset, "\n");998 print(" count ", addr.count, "\n");999 print(" data ", addr.data\X, "\n");1000 };1002 sizeof_12_ = 8;1003 aggr _12_1004 {1005 'u' 0 nstat;1006 'X' 4 stat;1007 };1009 defn1010 _12_(addr) {1011 complex _12_ addr;1012 print(" nstat ", addr.nstat, "\n");1013 print(" stat ", addr.stat\X, "\n");1014 };1016 sizeof_13_ = 260;1017 aggr _13_1018 {1019 {1020 'U' 0 msize;1021 'X' 4 version;1022 };1023 {1024 'u' 0 oldtag;1025 };1026 {1027 'X' 0 ename;1028 };1029 {1030 Qid 0 qid;1031 'U' 16 iounit;1032 };1033 {1034 Qid 0 aqid;1035 };1036 {1037 'U' 0 afid;1038 'X' 4 uname;1039 'X' 8 aname;1040 };1041 {1042 'U' 0 perm;1043 'X' 4 name;1044 'b' 8 mode;1045 };1046 {1047 'U' 0 newfid;1048 'u' 4 nwname;1049 'a' 8 wname;1050 };1051 {1052 'u' 0 nwqid;1053 'a' 4 wqid;1054 };1055 {1056 'V' 0 offset;1057 'U' 8 count;1058 'X' 12 data;1059 };1060 {1061 'u' 0 nstat;1062 'X' 4 stat;1063 };1064 };1066 defn1067 _13_(addr) {1068 complex _13_ addr;1069 print("_2_ {\n");1070 _2_(addr+0);1071 print("}\n");1072 print("_3_ {\n");1073 _3_(addr+0);1074 print("}\n");1075 print("_4_ {\n");1076 _4_(addr+0);1077 print("}\n");1078 print("_5_ {\n");1079 _5_(addr+0);1080 print("}\n");1081 print("_6_ {\n");1082 _6_(addr+0);1083 print("}\n");1084 print("_7_ {\n");1085 _7_(addr+0);1086 print("}\n");1087 print("_8_ {\n");1088 _8_(addr+0);1089 print("}\n");1090 print("_9_ {\n");1091 _9_(addr+0);1092 print("}\n");1093 print("_10_ {\n");1094 _10_(addr+0);1095 print("}\n");1096 print("_11_ {\n");1097 _11_(addr+0);1098 print("}\n");1099 print("_12_ {\n");1100 _12_(addr+0);1101 print("}\n");1102 };1104 sizeofFcall = 272;1105 aggr Fcall1106 {1107 'b' 0 type;1108 'U' 4 fid;1109 'u' 8 tag;1110 {1111 {1112 'U' 12 msize;1113 'X' 16 version;1114 };1115 {1116 'u' 12 oldtag;1117 };1118 {1119 'X' 12 ename;1120 };1121 {1122 Qid 12 qid;1123 'U' 28 iounit;1124 };1125 {1126 Qid 12 aqid;1127 };1128 {1129 'U' 12 afid;1130 'X' 16 uname;1131 'X' 20 aname;1132 };1133 {1134 'U' 12 perm;1135 'X' 16 name;1136 'b' 20 mode;1137 };1138 {1139 'U' 12 newfid;1140 'u' 16 nwname;1141 'a' 20 wname;1142 };1143 {1144 'u' 12 nwqid;1145 'a' 16 wqid;1146 };1147 {1148 'V' 12 offset;1149 'U' 20 count;1150 'X' 24 data;1151 };1152 {1153 'u' 12 nstat;1154 'X' 16 stat;1155 };1156 };1157 };1159 defn1160 Fcall(addr) {1161 complex Fcall addr;1162 print(" type ", addr.type, "\n");1163 print(" fid ", addr.fid, "\n");1164 print(" tag ", addr.tag, "\n");1165 print("_13_ {\n");1166 _13_(addr+12);1167 print("}\n");1168 };1170 Tversion = 100;1171 Rversion = 101;1172 Tauth = 102;1173 Rauth = 103;1174 Tattach = 104;1175 Rattach = 105;1176 Terror = 106;1177 Rerror = 107;1178 Tflush = 108;1179 Rflush = 109;1180 Twalk = 110;1181 Rwalk = 111;1182 Topen = 112;1183 Ropen = 113;1184 Tcreate = 114;1185 Rcreate = 115;1186 Tread = 116;1187 Rread = 117;1188 Twrite = 118;1189 Rwrite = 119;1190 Tclunk = 120;1191 Rclunk = 121;1192 Tremove = 122;1193 Rremove = 123;1194 Tstat = 124;1195 Rstat = 125;1196 Twstat = 126;1197 Rwstat = 127;1198 Tmax = 128;1199 sizeofFid = 60;1200 aggr Fid1201 {1202 'U' 0 fid;1203 'C' 4 omode;1204 'X' 8 file;1205 'X' 12 uid;1206 Qid 16 qid;1207 'X' 32 aux;1208 'X' 36 rdir;1209 Ref 40 ref;1210 'X' 44 pool;1211 'V' 48 diroffset;1212 'D' 56 dirindex;1213 };1215 defn1216 Fid(addr) {1217 complex Fid addr;1218 print(" fid ", addr.fid, "\n");1219 print(" omode ", addr.omode, "\n");1220 print(" file ", addr.file\X, "\n");1221 print(" uid ", addr.uid\X, "\n");1222 print("Qid qid {\n");1223 Qid(addr.qid);1224 print("}\n");1225 print(" aux ", addr.aux\X, "\n");1226 print(" rdir ", addr.rdir\X, "\n");1227 print("Ref ref {\n");1228 Ref(addr.ref);1229 print("}\n");1230 print(" pool ", addr.pool\X, "\n");1231 print(" diroffset ", addr.diroffset, "\n");1232 print(" dirindex ", addr.dirindex, "\n");1233 };1235 sizeofReq = 656;1236 aggr Req1237 {1238 'U' 0 tag;1239 'X' 4 aux;1240 Fcall 8 ifcall;1241 Fcall 280 ofcall;1242 Dir 552 d;1243 'A' Req 612 oldreq;1244 'A' Fid 616 fid;1245 'A' Fid 620 afid;1246 'A' Fid 624 newfid;1247 'X' 628 srv;1248 Ref 632 ref;1249 'X' 636 pool;1250 'X' 640 buf;1251 'b' 644 type;1252 'b' 645 responded;1253 'X' 648 error;1254 'X' 652 rbuf;1255 };1257 defn1258 Req(addr) {1259 complex Req addr;1260 print(" tag ", addr.tag, "\n");1261 print(" aux ", addr.aux\X, "\n");1262 print("Fcall ifcall {\n");1263 Fcall(addr.ifcall);1264 print("}\n");1265 print("Fcall ofcall {\n");1266 Fcall(addr.ofcall);1267 print("}\n");1268 print("Dir d {\n");1269 Dir(addr.d);1270 print("}\n");1271 print(" oldreq ", addr.oldreq\X, "\n");1272 print(" fid ", addr.fid\X, "\n");1273 print(" afid ", addr.afid\X, "\n");1274 print(" newfid ", addr.newfid\X, "\n");1275 print(" srv ", addr.srv\X, "\n");1276 print("Ref ref {\n");1277 Ref(addr.ref);1278 print("}\n");1279 print(" pool ", addr.pool\X, "\n");1280 print(" buf ", addr.buf\X, "\n");1281 print(" type ", addr.type, "\n");1282 print(" responded ", addr.responded, "\n");1283 print(" error ", addr.error\X, "\n");1284 print(" rbuf ", addr.rbuf\X, "\n");1285 };1287 sizeofFidpool = 12;1288 aggr Fidpool1289 {1290 'X' 0 map;1291 'X' 4 destroy;1292 'X' 8 srv;1293 };1295 defn1296 Fidpool(addr) {1297 complex Fidpool addr;1298 print(" map ", addr.map\X, "\n");1299 print(" destroy ", addr.destroy\X, "\n");1300 print(" srv ", addr.srv\X, "\n");1301 };1303 sizeofReqpool = 12;1304 aggr Reqpool1305 {1306 'X' 0 map;1307 'X' 4 destroy;1308 'X' 8 srv;1309 };1311 defn1312 Reqpool(addr) {1313 complex Reqpool addr;1314 print(" map ", addr.map\X, "\n");1315 print(" destroy ", addr.destroy\X, "\n");1316 print(" srv ", addr.srv\X, "\n");1317 };1319 sizeofFile = 108;1320 aggr File1321 {1322 {1323 'D' 0 ref;1324 };1325 {1326 'u' 4 type;1327 'U' 8 dev;1328 Qid 12 qid;1329 'U' 28 mode;1330 'U' 32 atime;1331 'U' 36 mtime;1332 'V' 40 length;1333 'X' 48 name;1334 'X' 52 uid;1335 'X' 56 gid;1336 'X' 60 muid;1337 };1338 'A' File 64 parent;1339 'X' 68 aux;1340 {1341 Lock 72 lock;1342 'D' 76 readers;1343 'D' 80 writer;1344 'A' QLp 84 $head;1345 'A' QLp 88 $tail;1346 };1347 'X' 92 filelist;1348 'X' 96 tree;1349 'D' 100 nchild;1350 'D' 104 allocd;1351 };1353 defn1354 File(addr) {1355 complex File addr;1356 print("Ref {\n");1357 Ref(addr+0);1358 print("}\n");1359 print("Dir {\n");1360 Dir(addr+4);1361 print("}\n");1362 print(" parent ", addr.parent\X, "\n");1363 print(" aux ", addr.aux\X, "\n");1364 print("RWLock {\n");1365 RWLock(addr+72);1366 print("}\n");1367 print(" filelist ", addr.filelist\X, "\n");1368 print(" tree ", addr.tree\X, "\n");1369 print(" nchild ", addr.nchild, "\n");1370 print(" allocd ", addr.allocd, "\n");1371 };1373 sizeofTree = 20;1374 aggr Tree1375 {1376 'A' File 0 root;1377 'X' 4 destroy;1378 Lock 8 genlock;1379 'U' 12 qidgen;1380 'U' 16 dirqidgen;1381 };1383 defn1384 Tree(addr) {1385 complex Tree addr;1386 print(" root ", addr.root\X, "\n");1387 print(" destroy ", addr.destroy\X, "\n");1388 print("Lock genlock {\n");1389 Lock(addr.genlock);1390 print("}\n");1391 print(" qidgen ", addr.qidgen, "\n");1392 print(" dirqidgen ", addr.dirqidgen, "\n");1393 };1395 sizeofSrv = 136;1396 aggr Srv1397 {1398 'A' Tree 0 tree;1399 'X' 4 destroyfid;1400 'X' 8 destroyreq;1401 'X' 12 end;1402 'X' 16 aux;1403 'X' 20 attach;1404 'X' 24 auth;1405 'X' 28 open;1406 'X' 32 create;1407 'X' 36 read;1408 'X' 40 write;1409 'X' 44 remove;1410 'X' 48 flush;1411 'X' 52 stat;1412 'X' 56 wstat;1413 'X' 60 walk;1414 'X' 64 clone;1415 'X' 68 walk1;1416 'D' 72 infd;1417 'D' 76 outfd;1418 'D' 80 nopipe;1419 'A' Fidpool 84 fpool;1420 'A' Reqpool 88 rpool;1421 'U' 92 msize;1422 'X' 96 rbuf;1423 QLock 100 rlock;1424 'X' 116 wbuf;1425 QLock 120 wlock;1426 };1428 defn1429 Srv(addr) {1430 complex Srv addr;1431 print(" tree ", addr.tree\X, "\n");1432 print(" destroyfid ", addr.destroyfid\X, "\n");1433 print(" destroyreq ", addr.destroyreq\X, "\n");1434 print(" end ", addr.end\X, "\n");1435 print(" aux ", addr.aux\X, "\n");1436 print(" attach ", addr.attach\X, "\n");1437 print(" auth ", addr.auth\X, "\n");1438 print(" open ", addr.open\X, "\n");1439 print(" create ", addr.create\X, "\n");1440 print(" read ", addr.read\X, "\n");1441 print(" write ", addr.write\X, "\n");1442 print(" remove ", addr.remove\X, "\n");1443 print(" flush ", addr.flush\X, "\n");1444 print(" stat ", addr.stat\X, "\n");1445 print(" wstat ", addr.wstat\X, "\n");1446 print(" walk ", addr.walk\X, "\n");1447 print(" clone ", addr.clone\X, "\n");1448 print(" walk1 ", addr.walk1\X, "\n");1449 print(" infd ", addr.infd, "\n");1450 print(" outfd ", addr.outfd, "\n");1451 print(" nopipe ", addr.nopipe, "\n");1452 print(" fpool ", addr.fpool\X, "\n");1453 print(" rpool ", addr.rpool\X, "\n");1454 print(" msize ", addr.msize, "\n");1455 print(" rbuf ", addr.rbuf\X, "\n");1456 print("QLock rlock {\n");1457 QLock(addr.rlock);1458 print("}\n");1459 print(" wbuf ", addr.wbuf\X, "\n");1460 print("QLock wlock {\n");1461 QLock(addr.wlock);1462 print("}\n");1463 };1465 OMASK = 3;1466 Maxname = 128;1467 Maxrpc = 4096;1468 Notstarted = -3;1469 Broken = -2;1470 Established = -1;1471 RpcFailure = 0;1472 RpcNeedkey = 1;1473 RpcOk = 2;1474 RpcErrstr = 3;1475 RpcToosmall = 4;1476 RpcPhase = 5;1477 sizeofAttr = 12;1478 aggr Attr1479 {1480 'A' Attr 0 next;1481 'A' String 4 name;1482 'A' String 8 val;1483 };1485 defn1486 Attr(addr) {1487 complex Attr addr;1488 print(" next ", addr.next\X, "\n");1489 print(" name ", addr.name\X, "\n");1490 print(" val ", addr.val\X, "\n");1491 };1493 sizeof_14_ = 4120;1494 aggr _14_1495 {1496 'X' 0 arg;1497 'a' 4 buf;1498 'X' 4100 verb;1499 'D' 4104 iverb;1500 'D' 4108 narg;1501 'D' 4112 nbuf;1502 'D' 4116 nwant;1503 };1505 defn1506 _14_(addr) {1507 complex _14_ addr;1508 print(" arg ", addr.arg\X, "\n");1509 print(" buf ", addr.buf, "\n");1510 print(" verb ", addr.verb\X, "\n");1511 print(" iverb ", addr.iverb, "\n");1512 print(" narg ", addr.narg, "\n");1513 print(" nbuf ", addr.nbuf, "\n");1514 print(" nwant ", addr.nwant, "\n");1515 };1517 sizeofFsstate = 4700;1518 aggr Fsstate1519 {1520 'X' 0 sysuser;1521 'D' 4 listoff;1522 _14_ 8 rpc;1523 'a' 4128 err;1524 'a' 4256 keyinfo;1525 'X' 4640 phasename;1526 'D' 4644 isclient;1527 'D' 4648 haveai;1528 'D' 4652 maxphase;1529 'D' 4656 phase;1530 'D' 4660 started;1531 'A' Attr 4664 attr;1532 AuthInfo 4668 ai;1533 'X' 4688 proto;1534 'X' 4692 ps;1535 'X' 4696 ring;1536 };1538 defn1539 Fsstate(addr) {1540 complex Fsstate addr;1541 print(" sysuser ", addr.sysuser\X, "\n");1542 print(" listoff ", addr.listoff, "\n");1543 print("_14_ rpc {\n");1544 _14_(addr.rpc);1545 print("}\n");1546 print(" err ", addr.err, "\n");1547 print(" keyinfo ", addr.keyinfo, "\n");1548 print(" phasename ", addr.phasename\X, "\n");1549 print(" isclient ", addr.isclient, "\n");1550 print(" haveai ", addr.haveai, "\n");1551 print(" maxphase ", addr.maxphase, "\n");1552 print(" phase ", addr.phase, "\n");1553 print(" started ", addr.started, "\n");1554 print(" attr ", addr.attr\X, "\n");1555 print("AuthInfo ai {\n");1556 AuthInfo(addr.ai);1557 print("}\n");1558 print(" proto ", addr.proto\X, "\n");1559 print(" ps ", addr.ps\X, "\n");1560 print(" ring ", addr.ring\X, "\n");1561 };1563 sizeofKey = 20;1564 aggr Key1565 {1566 'D' 0 ref;1567 'A' Attr 4 attr;1568 'A' Attr 8 privattr;1569 'X' 12 proto;1570 'X' 16 priv;1571 };1573 defn1574 Key(addr) {1575 complex Key addr;1576 print(" ref ", addr.ref, "\n");1577 print(" attr ", addr.attr\X, "\n");1578 print(" privattr ", addr.privattr\X, "\n");1579 print(" proto ", addr.proto\X, "\n");1580 print(" priv ", addr.priv\X, "\n");1581 };1583 sizeofKeyring = 8;1584 aggr Keyring1585 {1586 'A' Key 0 key;1587 'D' 4 nkey;1588 };1590 defn1591 Keyring(addr) {1592 complex Keyring addr;1593 print(" key ", addr.key\X, "\n");1594 print(" nkey ", addr.nkey, "\n");1595 };1597 sizeofLogbuf = 520;1598 aggr Logbuf1599 {1600 'D' 0 rp;1601 'D' 4 wp;1602 'a' 8 msg;1603 };1605 defn1606 Logbuf(addr) {1607 complex Logbuf addr;1608 print(" rp ", addr.rp, "\n");1609 print(" wp ", addr.wp, "\n");1610 print(" msg ", addr.msg, "\n");1611 };1613 sizeofProto = 28;1614 aggr Proto1615 {1616 'X' 0 name;1617 'X' 4 init;1618 'X' 8 addkey;1619 'X' 12 closekey;1620 'X' 16 write;1621 'X' 20 read;1622 'X' 24 close;1623 };1625 defn1626 Proto(addr) {1627 complex Proto addr;1628 print(" name ", addr.name\X, "\n");1629 print(" init ", addr.init\X, "\n");1630 print(" addkey ", addr.addkey\X, "\n");1631 print(" closekey ", addr.closekey\X, "\n");1632 print(" write ", addr.write\X, "\n");1633 print(" read ", addr.read\X, "\n");1634 print(" close ", addr.close\X, "\n");1635 };1637 complex Keyring ring;1638 complex Logbuf logbuf;1639 complex Proto apop;1640 complex Proto cram;1641 complex Proto p9any;1642 complex Proto p9sk1;1643 complex Proto p9sk2;1644 complex Keyring ring;1645 complex Srv fs;1646 complex Proto main:p;1647 Qroot = 0;1648 Qfactotum = 1;1649 Qrpc = 2;1650 Qkeylist = 3;1651 Qprotolist = 4;1652 Qconfirm = 5;1653 Qlog = 6;1654 Qctl = 7;1655 complex Qid mkqid:q;1656 complex Req fsattach:r;1657 sizeof_15_ = 12;1658 aggr _15_1659 {1660 'X' 0 name;1661 'D' 4 qidpath;1662 'U' 8 perm;1663 };1665 defn1666 _15_(addr) {1667 complex _15_ addr;1668 print(" name ", addr.name\X, "\n");1669 print(" qidpath ", addr.qidpath, "\n");1670 print(" perm ", addr.perm, "\n");1671 };1673 complex Dir fillstat:dir;1674 complex Dir fsdirgen:dir;1675 complex Fid fswalk1:fid;1676 complex Qid fswalk1:qid;1677 complex Req fsstat:r;1678 complex Req fsopen:r;1679 complex Fsstate fsopen:fss;1680 complex Fid fsdestroyfid:fid;1681 complex Req readlist:r;1682 complex Key keylist:k;1683 complex Req fsread:r;1684 complex Fsstate fsread:s;1685 complex Req fswrite:r;1686 complex Srv fs;