cache.acid (11960B)
1 sizeof_1_ = 8; 2 aggr _1_ 3 { 4 'U' 0 lo; 5 'U' 4 hi; 6 }; 7 8 defn 9 _1_(addr) { 10 complex _1_ addr; 11 print(" lo ", addr.lo, "\n"); 12 print(" hi ", addr.hi, "\n"); 13 }; 14 15 sizeofFPdbleword = 8; 16 aggr FPdbleword 17 { 18 'F' 0 x; 19 { 20 'U' 0 lo; 21 'U' 4 hi; 22 }; 23 }; 24 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 }; 33 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 }; 54 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 }; 71 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 }; 100 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 }; 115 116 PNPROC = 1; 117 PNGROUP = 2; 118 sizeofLock = 4; 119 aggr Lock 120 { 121 'D' 0 val; 122 }; 123 124 defn 125 Lock(addr) { 126 complex Lock addr; 127 print(" val ", addr.val, "\n"); 128 }; 129 130 sizeofQLp = 12; 131 aggr QLp 132 { 133 'D' 0 inuse; 134 'A' QLp 4 next; 135 'C' 8 state; 136 }; 137 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 }; 145 146 sizeofQLock = 16; 147 aggr QLock 148 { 149 Lock 0 lock; 150 'D' 4 locked; 151 'A' QLp 8 $head; 152 'A' QLp 12 $tail; 153 }; 154 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 }; 165 166 sizeofRWLock = 20; 167 aggr RWLock 168 { 169 Lock 0 lock; 170 'D' 4 readers; 171 'D' 8 writer; 172 'A' QLp 12 $head; 173 'A' QLp 16 $tail; 174 }; 175 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 }; 187 188 sizeofRendez = 12; 189 aggr Rendez 190 { 191 'A' QLock 0 l; 192 'A' QLp 4 $head; 193 'A' QLp 8 $tail; 194 }; 195 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 }; 203 204 sizeofNetConnInfo = 28; 205 aggr NetConnInfo 206 { 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 }; 215 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 }; 227 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 242 { 243 'W' 0 path; 244 'U' 8 vers; 245 'b' 12 type; 246 }; 247 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 }; 255 256 sizeofDir = 60; 257 aggr Dir 258 { 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 }; 271 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 }; 289 290 sizeofWaitmsg = 20; 291 aggr Waitmsg 292 { 293 'D' 0 pid; 294 'a' 4 time; 295 'X' 16 msg; 296 }; 297 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 }; 305 306 sizeofIOchunk = 8; 307 aggr IOchunk 308 { 309 'X' 0 addr; 310 'U' 4 len; 311 }; 312 313 defn 314 IOchunk(addr) { 315 complex IOchunk addr; 316 print(" addr ", addr.addr\X, "\n"); 317 print(" len ", addr.len, "\n"); 318 }; 319 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 339 { 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 }; 348 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 }; 360 361 sizeofVtRoot = 300; 362 aggr VtRoot 363 { 364 'a' 0 name; 365 'a' 128 type; 366 'a' 256 score; 367 'u' 276 blocksize; 368 'a' 278 prev; 369 }; 370 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 }; 380 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 415 { 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 }; 436 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 }; 460 461 VtStateAlloc = 0; 462 VtStateConnected = 1; 463 VtStateClosed = 2; 464 sizeofVtConn = 1148; 465 aggr VtConn 466 { 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 }; 487 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 }; 521 522 NilBlock = -1; 523 sizeofVtBlock = 88; 524 aggr VtBlock 525 { 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 }; 542 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 }; 564 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 578 { 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 }; 592 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 }; 611 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;