Blob


1 sizeof_1_ = 8;
2 aggr _1_
3 {
4 'D' 0 lo;
5 'D' 4 hi;
6 };
8 defn
9 _1_(addr) {
10 complex _1_ addr;
11 print(" lo ", addr.lo, "\n");
12 print(" hi ", addr.hi, "\n");
13 };
15 sizeofFPdbleword = 8;
16 aggr FPdbleword
17 {
18 'F' 0 x;
19 {
20 'D' 0 lo;
21 'D' 4 hi;
22 };
23 };
25 defn
26 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 Fconv
40 {
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 defn
50 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 Tm
62 {
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 defn
76 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 Lock
94 {
95 'D' 0 val;
96 };
98 defn
99 Lock(addr) {
100 complex Lock addr;
101 print(" val ", addr.val, "\n");
102 };
104 sizeofQLp = 12;
105 aggr QLp
107 'D' 0 inuse;
108 'A' QLp 4 next;
109 'C' 8 state;
110 };
112 defn
113 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 QLock
123 Lock 0 lock;
124 'D' 4 locked;
125 'A' QLp 8 $head;
126 'A' QLp 12 $tail;
127 };
129 defn
130 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 RWLock
143 Lock 0 lock;
144 'D' 4 readers;
145 'D' 8 writer;
146 'A' QLp 12 $head;
147 'A' QLp 16 $tail;
148 };
150 defn
151 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 Qid
177 'W' 0 path;
178 'U' 8 vers;
179 'b' 12 type;
180 };
182 defn
183 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 Dir
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 defn
207 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 Waitmsg
227 'D' 0 pid;
228 'a' 4 time;
229 'X' 16 msg;
230 };
232 defn
233 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 IOchunk
243 'X' 0 addr;
244 'U' 4 len;
245 };
247 defn
248 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 AuthRpc
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 defn
280 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 AuthInfo
293 'X' 0 cuid;
294 'X' 4 suid;
295 'X' 8 cap;
296 'D' 12 nsecret;
297 'X' 16 secret;
298 };
300 defn
301 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 Chalstate
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 defn
325 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 Chapreply
341 'b' 0 id;
342 'a' 1 resp;
343 };
345 defn
346 Chapreply(addr) {
347 complex Chapreply addr;
348 print(" id ", addr.id, "\n");
349 print(" resp ", addr.resp, "\n");
350 };
352 sizeofMSchapreply = 48;
353 aggr MSchapreply
355 'a' 0 LMresp;
356 'a' 24 NTresp;
357 };
359 defn
360 MSchapreply(addr) {
361 complex MSchapreply addr;
362 print(" LMresp ", addr.LMresp, "\n");
363 print(" NTresp ", addr.NTresp, "\n");
364 };
366 sizeofUserPasswd = 8;
367 aggr UserPasswd
369 'X' 0 user;
370 'X' 4 passwd;
371 };
373 defn
374 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 Ticketreq
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 defn
423 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 Ticket
436 'C' 0 num;
437 'a' 1 chal;
438 'a' 9 cuid;
439 'a' 37 suid;
440 'a' 65 key;
441 };
443 defn
444 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 Authenticator
456 'C' 0 num;
457 'a' 1 chal;
458 'U' 12 id;
459 };
461 defn
462 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 Passwordreq
472 'C' 0 num;
473 'a' 1 old;
474 'a' 29 new;
475 'C' 57 changesecret;
476 'a' 58 secret;
477 };
479 defn
480 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 OChapreply
492 'b' 0 id;
493 'a' 1 uid;
494 'a' 29 resp;
495 };
497 defn
498 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 OMSchapreply
508 'a' 0 uid;
509 'a' 28 LMresp;
510 'a' 52 NTresp;
511 };
513 defn
514 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 Nvrsafe
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 defn
539 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 AESstate
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 defn
569 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 BFstate
585 'U' 0 setup;
586 'a' 4 key;
587 'a' 60 ivec;
588 'a' 68 pbox;
589 'a' 140 sbox;
590 };
592 defn
593 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 DESstate
606 'U' 0 setup;
607 'a' 4 key;
608 'a' 12 expanded;
609 'a' 140 ivec;
610 };
612 defn
613 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 DES3state
630 'U' 0 setup;
631 'a' 4 key;
632 'a' 28 expanded;
633 'a' 412 ivec;
634 };
636 defn
637 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 DigestState
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 defn
660 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 RC4state
673 'a' 0 state;
674 'b' 256 x;
675 'b' 257 y;
676 };
678 defn
679 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 RSApub
689 'X' 0 n;
690 'X' 4 ek;
691 };
693 defn
694 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 RSApriv
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 defn
713 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 EGpub
729 'X' 0 p;
730 'X' 4 alpha;
731 'X' 8 key;
732 };
734 defn
735 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 EGpriv
745 EGpub 0 pub;
746 'X' 12 secret;
747 };
749 defn
750 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 EGsig
761 'X' 0 r;
762 'X' 4 s;
763 };
765 defn
766 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 String
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 defn
786 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 Channel
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 defn
812 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 Alt
827 'A' Channel 0 c;
828 'X' 4 v;
829 'D' 8 op;
830 'A' Channel 12 tag;
831 'U' 16 q;
832 };
834 defn
835 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 Ref
847 'D' 0 ref;
848 };
850 defn
851 Ref(addr) {
852 complex Ref addr;
853 print(" ref ", addr.ref, "\n");
854 };
856 sizeof_2_ = 8;
857 aggr _2_
859 'U' 0 msize;
860 'X' 4 version;
861 };
863 defn
864 _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_
873 'u' 0 oldtag;
874 };
876 defn
877 _3_(addr) {
878 complex _3_ addr;
879 print(" oldtag ", addr.oldtag, "\n");
880 };
882 sizeof_4_ = 4;
883 aggr _4_
885 'X' 0 ename;
886 };
888 defn
889 _4_(addr) {
890 complex _4_ addr;
891 print(" ename ", addr.ename\X, "\n");
892 };
894 sizeof_5_ = 20;
895 aggr _5_
897 Qid 0 qid;
898 'U' 16 iounit;
899 };
901 defn
902 _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_
913 Qid 0 aqid;
914 };
916 defn
917 _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_
927 'U' 0 afid;
928 'X' 4 uname;
929 'X' 8 aname;
930 };
932 defn
933 _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_
943 'U' 0 perm;
944 'X' 4 name;
945 'b' 8 mode;
946 };
948 defn
949 _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_
959 'U' 0 newfid;
960 'u' 4 nwname;
961 'a' 8 wname;
962 };
964 defn
965 _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_
975 'u' 0 nwqid;
976 'a' 4 wqid;
977 };
979 defn
980 _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_
989 'V' 0 offset;
990 'U' 8 count;
991 'X' 12 data;
992 };
994 defn
995 _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");
1002 sizeof_12_ = 8;
1003 aggr _12_
1005 'u' 0 nstat;
1006 'X' 4 stat;
1009 defn
1010 _12_(addr) {
1011 complex _12_ addr;
1012 print(" nstat ", addr.nstat, "\n");
1013 print(" stat ", addr.stat\X, "\n");
1016 sizeof_13_ = 260;
1017 aggr _13_
1020 'U' 0 msize;
1021 'X' 4 version;
1024 'u' 0 oldtag;
1027 'X' 0 ename;
1030 Qid 0 qid;
1031 'U' 16 iounit;
1034 Qid 0 aqid;
1037 'U' 0 afid;
1038 'X' 4 uname;
1039 'X' 8 aname;
1042 'U' 0 perm;
1043 'X' 4 name;
1044 'b' 8 mode;
1047 'U' 0 newfid;
1048 'u' 4 nwname;
1049 'a' 8 wname;
1052 'u' 0 nwqid;
1053 'a' 4 wqid;
1056 'V' 0 offset;
1057 'U' 8 count;
1058 'X' 12 data;
1061 'u' 0 nstat;
1062 'X' 4 stat;
1066 defn
1067 _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");
1104 sizeofFcall = 272;
1105 aggr Fcall
1107 'b' 0 type;
1108 'U' 4 fid;
1109 'u' 8 tag;
1112 'U' 12 msize;
1113 'X' 16 version;
1116 'u' 12 oldtag;
1119 'X' 12 ename;
1122 Qid 12 qid;
1123 'U' 28 iounit;
1126 Qid 12 aqid;
1129 'U' 12 afid;
1130 'X' 16 uname;
1131 'X' 20 aname;
1134 'U' 12 perm;
1135 'X' 16 name;
1136 'b' 20 mode;
1139 'U' 12 newfid;
1140 'u' 16 nwname;
1141 'a' 20 wname;
1144 'u' 12 nwqid;
1145 'a' 16 wqid;
1148 'V' 12 offset;
1149 'U' 20 count;
1150 'X' 24 data;
1153 'u' 12 nstat;
1154 'X' 16 stat;
1159 defn
1160 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");
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 Fid
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;
1215 defn
1216 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");
1235 sizeofReq = 656;
1236 aggr Req
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;
1257 defn
1258 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");
1287 sizeofFidpool = 12;
1288 aggr Fidpool
1290 'X' 0 map;
1291 'X' 4 destroy;
1292 'X' 8 srv;
1295 defn
1296 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");
1303 sizeofReqpool = 12;
1304 aggr Reqpool
1306 'X' 0 map;
1307 'X' 4 destroy;
1308 'X' 8 srv;
1311 defn
1312 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");
1319 sizeofFile = 108;
1320 aggr File
1323 'D' 0 ref;
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;
1338 'A' File 64 parent;
1339 'X' 68 aux;
1341 Lock 72 lock;
1342 'D' 76 readers;
1343 'D' 80 writer;
1344 'A' QLp 84 $head;
1345 'A' QLp 88 $tail;
1347 'X' 92 filelist;
1348 'X' 96 tree;
1349 'D' 100 nchild;
1350 'D' 104 allocd;
1353 defn
1354 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");
1373 sizeofTree = 20;
1374 aggr Tree
1376 'A' File 0 root;
1377 'X' 4 destroy;
1378 Lock 8 genlock;
1379 'U' 12 qidgen;
1380 'U' 16 dirqidgen;
1383 defn
1384 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");
1395 sizeofSrv = 136;
1396 aggr Srv
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;
1428 defn
1429 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");
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 Attr
1480 'A' Attr 0 next;
1481 'A' String 4 name;
1482 'A' String 8 val;
1485 defn
1486 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");
1493 sizeof_14_ = 4120;
1494 aggr _14_
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;
1505 defn
1506 _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");
1517 sizeofFsstate = 4700;
1518 aggr Fsstate
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;
1538 defn
1539 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");
1563 sizeofKey = 20;
1564 aggr Key
1566 'D' 0 ref;
1567 'A' Attr 4 attr;
1568 'A' Attr 8 privattr;
1569 'X' 12 proto;
1570 'X' 16 priv;
1573 defn
1574 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");
1583 sizeofKeyring = 8;
1584 aggr Keyring
1586 'A' Key 0 key;
1587 'D' 4 nkey;
1590 defn
1591 Keyring(addr) {
1592 complex Keyring addr;
1593 print(" key ", addr.key\X, "\n");
1594 print(" nkey ", addr.nkey, "\n");
1597 sizeofLogbuf = 520;
1598 aggr Logbuf
1600 'D' 0 rp;
1601 'D' 4 wp;
1602 'a' 8 msg;
1605 defn
1606 Logbuf(addr) {
1607 complex Logbuf addr;
1608 print(" rp ", addr.rp, "\n");
1609 print(" wp ", addr.wp, "\n");
1610 print(" msg ", addr.msg, "\n");
1613 sizeofProto = 28;
1614 aggr Proto
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;
1625 defn
1626 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");
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_
1660 'X' 0 name;
1661 'D' 4 qidpath;
1662 'U' 8 perm;
1665 defn
1666 _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");
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;