Blob


1 sizeof_1_ = 8;
2 aggr _1_
3 {
4 'U' 0 lo;
5 'U' 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 'U' 0 lo;
21 'U' 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 sizeofFmt = 48;
39 aggr Fmt
40 {
41 'b' 0 runes;
42 'X' 4 start;
43 'X' 8 to;
44 'X' 12 stop;
45 'X' 16 flush;
46 'X' 20 farg;
47 'D' 24 nfmt;
48 'X' 28 args;
49 'D' 32 r;
50 'D' 36 width;
51 'D' 40 prec;
52 'U' 44 flags;
53 };
55 defn
56 Fmt(addr) {
57 complex Fmt addr;
58 print(" runes ", addr.runes, "\n");
59 print(" start ", addr.start\X, "\n");
60 print(" to ", addr.to\X, "\n");
61 print(" stop ", addr.stop\X, "\n");
62 print(" flush ", addr.flush\X, "\n");
63 print(" farg ", addr.farg\X, "\n");
64 print(" nfmt ", addr.nfmt, "\n");
65 print(" args ", addr.args\X, "\n");
66 print(" r ", addr.r, "\n");
67 print(" width ", addr.width, "\n");
68 print(" prec ", addr.prec, "\n");
69 print(" flags ", addr.flags, "\n");
70 };
72 FmtWidth = 1;
73 FmtLeft = 2;
74 FmtPrec = 4;
75 FmtSharp = 8;
76 FmtSpace = 16;
77 FmtSign = 32;
78 FmtZero = 64;
79 FmtUnsigned = 128;
80 FmtShort = 256;
81 FmtLong = 512;
82 FmtVLong = 1024;
83 FmtComma = 2048;
84 FmtByte = 4096;
85 FmtFlag = 8192;
86 sizeofTm = 40;
87 aggr Tm
88 {
89 'D' 0 sec;
90 'D' 4 min;
91 'D' 8 hour;
92 'D' 12 mday;
93 'D' 16 mon;
94 'D' 20 year;
95 'D' 24 wday;
96 'D' 28 yday;
97 'a' 32 zone;
98 'D' 36 tzoff;
99 };
101 defn
102 Tm(addr) {
103 complex Tm addr;
104 print(" sec ", addr.sec, "\n");
105 print(" min ", addr.min, "\n");
106 print(" hour ", addr.hour, "\n");
107 print(" mday ", addr.mday, "\n");
108 print(" mon ", addr.mon, "\n");
109 print(" year ", addr.year, "\n");
110 print(" wday ", addr.wday, "\n");
111 print(" yday ", addr.yday, "\n");
112 print(" zone ", addr.zone, "\n");
113 print(" tzoff ", addr.tzoff, "\n");
114 };
116 PNPROC = 1;
117 PNGROUP = 2;
118 sizeofLock = 4;
119 aggr Lock
121 'D' 0 val;
122 };
124 defn
125 Lock(addr) {
126 complex Lock addr;
127 print(" val ", addr.val, "\n");
128 };
130 sizeofQLp = 12;
131 aggr QLp
133 'D' 0 inuse;
134 'A' QLp 4 next;
135 'C' 8 state;
136 };
138 defn
139 QLp(addr) {
140 complex QLp addr;
141 print(" inuse ", addr.inuse, "\n");
142 print(" next ", addr.next\X, "\n");
143 print(" state ", addr.state, "\n");
144 };
146 sizeofQLock = 16;
147 aggr QLock
149 Lock 0 lock;
150 'D' 4 locked;
151 'A' QLp 8 $head;
152 'A' QLp 12 $tail;
153 };
155 defn
156 QLock(addr) {
157 complex QLock addr;
158 print("Lock lock {\n");
159 Lock(addr.lock);
160 print("}\n");
161 print(" locked ", addr.locked, "\n");
162 print(" $head ", addr.$head\X, "\n");
163 print(" $tail ", addr.$tail\X, "\n");
164 };
166 sizeofRWLock = 20;
167 aggr RWLock
169 Lock 0 lock;
170 'D' 4 readers;
171 'D' 8 writer;
172 'A' QLp 12 $head;
173 'A' QLp 16 $tail;
174 };
176 defn
177 RWLock(addr) {
178 complex RWLock addr;
179 print("Lock lock {\n");
180 Lock(addr.lock);
181 print("}\n");
182 print(" readers ", addr.readers, "\n");
183 print(" writer ", addr.writer, "\n");
184 print(" $head ", addr.$head\X, "\n");
185 print(" $tail ", addr.$tail\X, "\n");
186 };
188 sizeofRendez = 12;
189 aggr Rendez
191 'A' QLock 0 l;
192 'A' QLp 4 $head;
193 'A' QLp 8 $tail;
194 };
196 defn
197 Rendez(addr) {
198 complex Rendez addr;
199 print(" l ", addr.l\X, "\n");
200 print(" $head ", addr.$head\X, "\n");
201 print(" $tail ", addr.$tail\X, "\n");
202 };
204 sizeofNetConnInfo = 28;
205 aggr NetConnInfo
207 'X' 0 dir;
208 'X' 4 root;
209 'X' 8 spec;
210 'X' 12 lsys;
211 'X' 16 lserv;
212 'X' 20 rsys;
213 'X' 24 rserv;
214 };
216 defn
217 NetConnInfo(addr) {
218 complex NetConnInfo addr;
219 print(" dir ", addr.dir\X, "\n");
220 print(" root ", addr.root\X, "\n");
221 print(" spec ", addr.spec\X, "\n");
222 print(" lsys ", addr.lsys\X, "\n");
223 print(" lserv ", addr.lserv\X, "\n");
224 print(" rsys ", addr.rsys\X, "\n");
225 print(" rserv ", addr.rserv\X, "\n");
226 };
228 RFNAMEG = 1;
229 RFENVG = 2;
230 RFFDG = 4;
231 RFNOTEG = 8;
232 RFPROC = 16;
233 RFMEM = 32;
234 RFNOWAIT = 64;
235 RFCNAMEG = 1024;
236 RFCENVG = 2048;
237 RFCFDG = 4096;
238 RFREND = 8192;
239 RFNOMNT = 16384;
240 sizeofQid = 16;
241 aggr Qid
243 'W' 0 path;
244 'U' 8 vers;
245 'b' 12 type;
246 };
248 defn
249 Qid(addr) {
250 complex Qid addr;
251 print(" path ", addr.path, "\n");
252 print(" vers ", addr.vers, "\n");
253 print(" type ", addr.type, "\n");
254 };
256 sizeofDir = 60;
257 aggr Dir
259 'u' 0 type;
260 'U' 4 dev;
261 Qid 8 qid;
262 'U' 24 mode;
263 'U' 28 atime;
264 'U' 32 mtime;
265 'V' 36 length;
266 'X' 44 name;
267 'X' 48 uid;
268 'X' 52 gid;
269 'X' 56 muid;
270 };
272 defn
273 Dir(addr) {
274 complex Dir addr;
275 print(" type ", addr.type, "\n");
276 print(" dev ", addr.dev, "\n");
277 print("Qid qid {\n");
278 Qid(addr.qid);
279 print("}\n");
280 print(" mode ", addr.mode, "\n");
281 print(" atime ", addr.atime, "\n");
282 print(" mtime ", addr.mtime, "\n");
283 print(" length ", addr.length, "\n");
284 print(" name ", addr.name\X, "\n");
285 print(" uid ", addr.uid\X, "\n");
286 print(" gid ", addr.gid\X, "\n");
287 print(" muid ", addr.muid\X, "\n");
288 };
290 sizeofWaitmsg = 20;
291 aggr Waitmsg
293 'D' 0 pid;
294 'a' 4 time;
295 'X' 16 msg;
296 };
298 defn
299 Waitmsg(addr) {
300 complex Waitmsg addr;
301 print(" pid ", addr.pid, "\n");
302 print(" time ", addr.time, "\n");
303 print(" msg ", addr.msg\X, "\n");
304 };
306 sizeofIOchunk = 8;
307 aggr IOchunk
309 'X' 0 addr;
310 'U' 4 len;
311 };
313 defn
314 IOchunk(addr) {
315 complex IOchunk addr;
316 print(" addr ", addr.addr\X, "\n");
317 print(" len ", addr.len, "\n");
318 };
320 MaxFragSize = 9216;
321 VtScoreSize = 20;
322 VtMaxStringSize = 1024;
323 VtMaxFileSize = 281474976710655;
324 VtMaxLumpSize = 57344;
325 VtPointerDepth = 7;
326 VtDataType = 0;
327 VtDirType = 8;
328 VtRootType = 16;
329 VtMaxType = 17;
330 VtTypeDepthMask = 7;
331 VtEntryActive = 1;
332 VtEntryDir = 2;
333 VtEntryDepthShift = 2;
334 VtEntryDepthMask = 28;
335 VtEntryLocal = 32;
336 VtEntrySize = 40;
337 sizeofVtEntry = 40;
338 aggr VtEntry
340 'U' 0 gen;
341 'u' 4 psize;
342 'u' 6 dsize;
343 'b' 8 type;
344 'b' 9 flags;
345 'W' 12 size;
346 'a' 20 score;
347 };
349 defn
350 VtEntry(addr) {
351 complex VtEntry addr;
352 print(" gen ", addr.gen, "\n");
353 print(" psize ", addr.psize, "\n");
354 print(" dsize ", addr.dsize, "\n");
355 print(" type ", addr.type, "\n");
356 print(" flags ", addr.flags, "\n");
357 print(" size ", addr.size, "\n");
358 print(" score ", addr.score, "\n");
359 };
361 sizeofVtRoot = 300;
362 aggr VtRoot
364 'a' 0 name;
365 'a' 128 type;
366 'a' 256 score;
367 'u' 276 blocksize;
368 'a' 278 prev;
369 };
371 defn
372 VtRoot(addr) {
373 complex VtRoot addr;
374 print(" name ", addr.name, "\n");
375 print(" type ", addr.type, "\n");
376 print(" score ", addr.score, "\n");
377 print(" blocksize ", addr.blocksize, "\n");
378 print(" prev ", addr.prev, "\n");
379 };
381 VtRootSize = 300;
382 VtRootVersion = 2;
383 VtCryptoStrengthNone = 0;
384 VtCryptoStrengthAuth = 1;
385 VtCryptoStrengthWeak = 2;
386 VtCryptoStrengthStrong = 3;
387 VtCryptoNone = 0;
388 VtCryptoSSL3 = 1;
389 VtCryptoTLS1 = 2;
390 VtCryptoMax = 3;
391 VtCodecNone = 0;
392 VtCodecDeflate = 1;
393 VtCodecThwack = 2;
394 VtCodecMax = 3;
395 VtRerror = 1;
396 VtTping = 2;
397 VtRping = 3;
398 VtThello = 4;
399 VtRhello = 5;
400 VtTgoodbye = 6;
401 VtRgoodbye = 7;
402 VtTauth0 = 8;
403 VtRauth0 = 9;
404 VtTauth1 = 10;
405 VtRauth1 = 11;
406 VtTread = 12;
407 VtRread = 13;
408 VtTwrite = 14;
409 VtRwrite = 15;
410 VtTsync = 16;
411 VtRsync = 17;
412 VtTmax = 18;
413 sizeofVtFcall = 80;
414 aggr VtFcall
416 'b' 0 type;
417 'b' 1 tag;
418 'X' 4 error;
419 'X' 8 version;
420 'X' 12 uid;
421 'b' 16 strength;
422 'X' 20 crypto;
423 'U' 24 ncrypto;
424 'X' 28 codec;
425 'U' 32 ncodec;
426 'X' 36 sid;
427 'b' 40 rcrypto;
428 'b' 41 rcodec;
429 'X' 44 auth;
430 'U' 48 nauth;
431 'a' 52 score;
432 'b' 72 dtype;
433 'u' 74 count;
434 'X' 76 data;
435 };
437 defn
438 VtFcall(addr) {
439 complex VtFcall addr;
440 print(" type ", addr.type, "\n");
441 print(" tag ", addr.tag, "\n");
442 print(" error ", addr.error\X, "\n");
443 print(" version ", addr.version\X, "\n");
444 print(" uid ", addr.uid\X, "\n");
445 print(" strength ", addr.strength, "\n");
446 print(" crypto ", addr.crypto\X, "\n");
447 print(" ncrypto ", addr.ncrypto, "\n");
448 print(" codec ", addr.codec\X, "\n");
449 print(" ncodec ", addr.ncodec, "\n");
450 print(" sid ", addr.sid\X, "\n");
451 print(" rcrypto ", addr.rcrypto, "\n");
452 print(" rcodec ", addr.rcodec, "\n");
453 print(" auth ", addr.auth\X, "\n");
454 print(" nauth ", addr.nauth, "\n");
455 print(" score ", addr.score, "\n");
456 print(" dtype ", addr.dtype, "\n");
457 print(" count ", addr.count, "\n");
458 print(" data ", addr.data\X, "\n");
459 };
461 VtStateAlloc = 0;
462 VtStateConnected = 1;
463 VtStateClosed = 2;
464 sizeofVtConn = 1148;
465 aggr VtConn
467 QLock 0 lk;
468 QLock 16 inlk;
469 QLock 32 outlk;
470 'D' 48 debug;
471 'D' 52 infd;
472 'D' 56 outfd;
473 'D' 60 muxer;
474 'X' 64 writeq;
475 'X' 68 readq;
476 'D' 72 state;
477 'a' 76 wait;
478 'U' 1100 ntag;
479 'U' 1104 nsleep;
480 'X' 1108 part;
481 Rendez 1112 tagrend;
482 Rendez 1124 rpcfork;
483 'X' 1136 version;
484 'X' 1140 uid;
485 'X' 1144 sid;
486 };
488 defn
489 VtConn(addr) {
490 complex VtConn addr;
491 print("QLock lk {\n");
492 QLock(addr.lk);
493 print("}\n");
494 print("QLock inlk {\n");
495 QLock(addr.inlk);
496 print("}\n");
497 print("QLock outlk {\n");
498 QLock(addr.outlk);
499 print("}\n");
500 print(" debug ", addr.debug, "\n");
501 print(" infd ", addr.infd, "\n");
502 print(" outfd ", addr.outfd, "\n");
503 print(" muxer ", addr.muxer, "\n");
504 print(" writeq ", addr.writeq\X, "\n");
505 print(" readq ", addr.readq\X, "\n");
506 print(" state ", addr.state, "\n");
507 print(" wait ", addr.wait, "\n");
508 print(" ntag ", addr.ntag, "\n");
509 print(" nsleep ", addr.nsleep, "\n");
510 print(" part ", addr.part\X, "\n");
511 print("Rendez tagrend {\n");
512 Rendez(addr.tagrend);
513 print("}\n");
514 print("Rendez rpcfork {\n");
515 Rendez(addr.rpcfork);
516 print("}\n");
517 print(" version ", addr.version\X, "\n");
518 print(" uid ", addr.uid\X, "\n");
519 print(" sid ", addr.sid\X, "\n");
520 };
522 NilBlock = -1;
523 sizeofVtBlock = 88;
524 aggr VtBlock
526 'X' 0 c;
527 QLock 4 lk;
528 'X' 20 data;
529 'a' 24 score;
530 'b' 44 type;
531 'D' 48 nlock;
532 'D' 52 iostate;
533 'D' 56 ref;
534 'U' 60 heap;
535 'A' VtBlock 64 next;
536 'A' VtBlock 68 prev;
537 'U' 72 used;
538 'U' 76 used2;
539 'U' 80 addr;
540 'D' 84 decrypted;
541 };
543 defn
544 VtBlock(addr) {
545 complex VtBlock addr;
546 print(" c ", addr.c\X, "\n");
547 print("QLock lk {\n");
548 QLock(addr.lk);
549 print("}\n");
550 print(" data ", addr.data\X, "\n");
551 print(" score ", addr.score, "\n");
552 print(" type ", addr.type, "\n");
553 print(" nlock ", addr.nlock, "\n");
554 print(" iostate ", addr.iostate, "\n");
555 print(" ref ", addr.ref, "\n");
556 print(" heap ", addr.heap, "\n");
557 print(" next ", addr.next\X, "\n");
558 print(" prev ", addr.prev\X, "\n");
559 print(" used ", addr.used, "\n");
560 print(" used2 ", addr.used2, "\n");
561 print(" addr ", addr.addr, "\n");
562 print(" decrypted ", addr.decrypted, "\n");
563 };
565 VtOREAD = 0;
566 VtOWRITE = 1;
567 VtORDWR = 2;
568 VtOCREATE = 256;
569 BioLocal = 1;
570 BioVenti = 2;
571 BioReading = 3;
572 BioWriting = 4;
573 BioEmpty = 5;
574 BioVentiError = 6;
575 BadHeap = -1;
576 sizeofVtCache = 60;
577 aggr VtCache
579 QLock 0 lk;
580 'A' VtConn 16 z;
581 'U' 20 blocksize;
582 'U' 24 now;
583 'A' VtBlock 28 hash;
584 'D' 32 nhash;
585 'A' VtBlock 36 heap;
586 'D' 40 nheap;
587 'A' VtBlock 44 block;
588 'D' 48 nblock;
589 'X' 52 mem;
590 'D' 56 mode;
591 };
593 defn
594 VtCache(addr) {
595 complex VtCache addr;
596 print("QLock lk {\n");
597 QLock(addr.lk);
598 print("}\n");
599 print(" z ", addr.z\X, "\n");
600 print(" blocksize ", addr.blocksize, "\n");
601 print(" now ", addr.now, "\n");
602 print(" hash ", addr.hash\X, "\n");
603 print(" nhash ", addr.nhash, "\n");
604 print(" heap ", addr.heap\X, "\n");
605 print(" nheap ", addr.nheap, "\n");
606 print(" block ", addr.block\X, "\n");
607 print(" nblock ", addr.nblock, "\n");
608 print(" mem ", addr.mem\X, "\n");
609 print(" mode ", addr.mode, "\n");
610 };
612 complex VtConn vtcachealloc:z;
613 complex VtCache vtcachealloc:c;
614 complex VtBlock vtcachealloc:b;
615 complex VtCache vtcachefree:c;
616 complex VtCache vtcachedump:c;
617 complex VtBlock vtcachedump:b;
618 complex VtCache cachecheck:c;
619 complex VtBlock cachecheck:b;
620 complex VtBlock upheap:b;
621 complex VtBlock upheap:bb;
622 complex VtCache upheap:c;
623 complex VtBlock downheap:b;
624 complex VtBlock downheap:bb;
625 complex VtCache downheap:c;
626 complex VtBlock heapdel:b;
627 complex VtCache heapdel:c;
628 complex VtBlock heapins:b;
629 complex VtCache vtcachebumpblock:c;
630 complex VtBlock vtcachebumpblock:b;
631 complex VtCache vtcachelocal:c;
632 complex VtBlock vtcachelocal:b;
633 complex VtCache vtcacheallocblock:c;
634 complex VtBlock vtcacheallocblock:b;
635 complex VtCache vtcacheglobal:c;
636 complex VtBlock vtcacheglobal:b;
637 complex VtBlock vtblockduplock:b;
638 complex VtBlock vtblockput:b;
639 complex VtCache vtblockput:c;
640 complex VtBlock vtblockwrite:b;
641 complex VtCache vtblockwrite:c;
642 complex VtCache vtcacheblocksize:c;
643 complex VtBlock vtblockcopy:b;
644 complex VtBlock vtblockcopy:bb;