1sizeof_1_ = 8; 2aggr _1_ 3{ 4 'U' 0 lo; 5 'U' 4 hi; 6}; 7 8defn 9_1_(addr) { 10 complex _1_ addr; 11 print(" lo ", addr.lo, "\n"); 12 print(" hi ", addr.hi, "\n"); 13}; 14 15sizeofFPdbleword = 8; 16aggr FPdbleword 17{ 18 'F' 0 x; 19 { 20 'U' 0 lo; 21 'U' 4 hi; 22 }; 23}; 24 25defn 26FPdbleword(addr) { 27 complex FPdbleword addr; 28 print(" x ", addr.x, "\n"); 29 print("_1_ {\n"); 30 _1_(addr+0); 31 print("}\n"); 32}; 33 34UTFmax = 3; 35Runesync = 128; 36Runeself = 128; 37Runeerror = 65533; 38sizeofFmt = 48; 39aggr 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 55defn 56Fmt(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 72FmtWidth = 1; 73FmtLeft = 2; 74FmtPrec = 4; 75FmtSharp = 8; 76FmtSpace = 16; 77FmtSign = 32; 78FmtZero = 64; 79FmtUnsigned = 128; 80FmtShort = 256; 81FmtLong = 512; 82FmtVLong = 1024; 83FmtComma = 2048; 84FmtByte = 4096; 85FmtFlag = 8192; 86sizeofTm = 40; 87aggr 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 101defn 102Tm(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 116PNPROC = 1; 117PNGROUP = 2; 118Profoff = 0; 119Profuser = 1; 120Profkernel = 2; 121Proftime = 3; 122Profsample = 4; 123sizeofLock = 4; 124aggr Lock 125{ 126 'D' 0 val; 127}; 128 129defn 130Lock(addr) { 131 complex Lock addr; 132 print(" val ", addr.val, "\n"); 133}; 134 135sizeofQLp = 12; 136aggr QLp 137{ 138 'D' 0 inuse; 139 'A' QLp 4 next; 140 'C' 8 state; 141}; 142 143defn 144QLp(addr) { 145 complex QLp addr; 146 print(" inuse ", addr.inuse, "\n"); 147 print(" next ", addr.next\X, "\n"); 148 print(" state ", addr.state, "\n"); 149}; 150 151sizeofQLock = 16; 152aggr QLock 153{ 154 Lock 0 lock; 155 'D' 4 locked; 156 'A' QLp 8 $head; 157 'A' QLp 12 $tail; 158}; 159 160defn 161QLock(addr) { 162 complex QLock addr; 163 print("Lock lock {\n"); 164 Lock(addr.lock); 165 print("}\n"); 166 print(" locked ", addr.locked, "\n"); 167 print(" $head ", addr.$head\X, "\n"); 168 print(" $tail ", addr.$tail\X, "\n"); 169}; 170 171sizeofRWLock = 20; 172aggr RWLock 173{ 174 Lock 0 lock; 175 'D' 4 readers; 176 'D' 8 writer; 177 'A' QLp 12 $head; 178 'A' QLp 16 $tail; 179}; 180 181defn 182RWLock(addr) { 183 complex RWLock addr; 184 print("Lock lock {\n"); 185 Lock(addr.lock); 186 print("}\n"); 187 print(" readers ", addr.readers, "\n"); 188 print(" writer ", addr.writer, "\n"); 189 print(" $head ", addr.$head\X, "\n"); 190 print(" $tail ", addr.$tail\X, "\n"); 191}; 192 193sizeofRendez = 12; 194aggr Rendez 195{ 196 'A' QLock 0 l; 197 'A' QLp 4 $head; 198 'A' QLp 8 $tail; 199}; 200 201defn 202Rendez(addr) { 203 complex Rendez addr; 204 print(" l ", addr.l\X, "\n"); 205 print(" $head ", addr.$head\X, "\n"); 206 print(" $tail ", addr.$tail\X, "\n"); 207}; 208 209sizeofNetConnInfo = 36; 210aggr NetConnInfo 211{ 212 'X' 0 dir; 213 'X' 4 root; 214 'X' 8 spec; 215 'X' 12 lsys; 216 'X' 16 lserv; 217 'X' 20 rsys; 218 'X' 24 rserv; 219 'X' 28 laddr; 220 'X' 32 raddr; 221}; 222 223defn 224NetConnInfo(addr) { 225 complex NetConnInfo addr; 226 print(" dir ", addr.dir\X, "\n"); 227 print(" root ", addr.root\X, "\n"); 228 print(" spec ", addr.spec\X, "\n"); 229 print(" lsys ", addr.lsys\X, "\n"); 230 print(" lserv ", addr.lserv\X, "\n"); 231 print(" rsys ", addr.rsys\X, "\n"); 232 print(" rserv ", addr.rserv\X, "\n"); 233 print(" laddr ", addr.laddr\X, "\n"); 234 print(" raddr ", addr.raddr\X, "\n"); 235}; 236 237RFNAMEG = 1; 238RFENVG = 2; 239RFFDG = 4; 240RFNOTEG = 8; 241RFPROC = 16; 242RFMEM = 32; 243RFNOWAIT = 64; 244RFCNAMEG = 1024; 245RFCENVG = 2048; 246RFCFDG = 4096; 247RFREND = 8192; 248RFNOMNT = 16384; 249sizeofQid = 16; 250aggr Qid 251{ 252 'W' 0 path; 253 'U' 8 vers; 254 'b' 12 type; 255}; 256 257defn 258Qid(addr) { 259 complex Qid addr; 260 print(" path ", addr.path, "\n"); 261 print(" vers ", addr.vers, "\n"); 262 print(" type ", addr.type, "\n"); 263}; 264 265sizeofDir = 60; 266aggr Dir 267{ 268 'u' 0 type; 269 'U' 4 dev; 270 Qid 8 qid; 271 'U' 24 mode; 272 'U' 28 atime; 273 'U' 32 mtime; 274 'V' 36 length; 275 'X' 44 name; 276 'X' 48 uid; 277 'X' 52 gid; 278 'X' 56 muid; 279}; 280 281defn 282Dir(addr) { 283 complex Dir addr; 284 print(" type ", addr.type, "\n"); 285 print(" dev ", addr.dev, "\n"); 286 print("Qid qid {\n"); 287 Qid(addr.qid); 288 print("}\n"); 289 print(" mode ", addr.mode, "\n"); 290 print(" atime ", addr.atime, "\n"); 291 print(" mtime ", addr.mtime, "\n"); 292 print(" length ", addr.length, "\n"); 293 print(" name ", addr.name\X, "\n"); 294 print(" uid ", addr.uid\X, "\n"); 295 print(" gid ", addr.gid\X, "\n"); 296 print(" muid ", addr.muid\X, "\n"); 297}; 298 299sizeofWaitmsg = 20; 300aggr Waitmsg 301{ 302 'D' 0 pid; 303 'a' 4 time; 304 'X' 16 msg; 305}; 306 307defn 308Waitmsg(addr) { 309 complex Waitmsg addr; 310 print(" pid ", addr.pid, "\n"); 311 print(" time ", addr.time, "\n"); 312 print(" msg ", addr.msg\X, "\n"); 313}; 314 315sizeofIOchunk = 8; 316aggr IOchunk 317{ 318 'X' 0 addr; 319 'U' 4 len; 320}; 321 322defn 323IOchunk(addr) { 324 complex IOchunk addr; 325 print(" addr ", addr.addr\X, "\n"); 326 print(" len ", addr.len, "\n"); 327}; 328 329sizeofPool = 88; 330aggr Pool 331{ 332 'X' 0 name; 333 'U' 4 maxsize; 334 'U' 8 cursize; 335 'U' 12 curfree; 336 'U' 16 curalloc; 337 'U' 20 minarena; 338 'U' 24 quantum; 339 'U' 28 minblock; 340 'X' 32 freeroot; 341 'X' 36 arenalist; 342 'X' 40 alloc; 343 'X' 44 merge; 344 'X' 48 move; 345 'D' 52 flags; 346 'D' 56 nfree; 347 'D' 60 lastcompact; 348 'X' 64 lock; 349 'X' 68 unlock; 350 'X' 72 print; 351 'X' 76 panic; 352 'X' 80 logstack; 353 'X' 84 private; 354}; 355 356defn 357Pool(addr) { 358 complex Pool addr; 359 print(" name ", addr.name\X, "\n"); 360 print(" maxsize ", addr.maxsize, "\n"); 361 print(" cursize ", addr.cursize, "\n"); 362 print(" curfree ", addr.curfree, "\n"); 363 print(" curalloc ", addr.curalloc, "\n"); 364 print(" minarena ", addr.minarena, "\n"); 365 print(" quantum ", addr.quantum, "\n"); 366 print(" minblock ", addr.minblock, "\n"); 367 print(" freeroot ", addr.freeroot\X, "\n"); 368 print(" arenalist ", addr.arenalist\X, "\n"); 369 print(" alloc ", addr.alloc\X, "\n"); 370 print(" merge ", addr.merge\X, "\n"); 371 print(" move ", addr.move\X, "\n"); 372 print(" flags ", addr.flags, "\n"); 373 print(" nfree ", addr.nfree, "\n"); 374 print(" lastcompact ", addr.lastcompact, "\n"); 375 print(" lock ", addr.lock\X, "\n"); 376 print(" unlock ", addr.unlock\X, "\n"); 377 print(" print ", addr.print\X, "\n"); 378 print(" panic ", addr.panic\X, "\n"); 379 print(" logstack ", addr.logstack\X, "\n"); 380 print(" private ", addr.private\X, "\n"); 381}; 382 383complex Pool mainmem; 384complex Pool imagmem; 385POOL_ANTAGONISM = 1; 386POOL_PARANOIA = 2; 387POOL_VERBOSITY = 4; 388POOL_DEBUGGING = 8; 389POOL_LOGGING = 16; 390POOL_TOLERANCE = 32; 391POOL_NOREUSE = 64; 392sizeofBhdr = 8; 393aggr Bhdr 394{ 395 'U' 0 magic; 396 'U' 4 size; 397}; 398 399defn 400Bhdr(addr) { 401 complex Bhdr addr; 402 print(" magic ", addr.magic, "\n"); 403 print(" size ", addr.size, "\n"); 404}; 405 406NOT_MAGIC = 3735943697; 407DEAD_MAGIC = 3735936685; 408TAIL_MAGIC0 = 190; 409TAIL_MAGIC1 = 239; 410sizeofBtail = 8; 411aggr Btail 412{ 413 'b' 0 magic0; 414 'a' 1 datasize; 415 'b' 3 magic1; 416 'U' 4 size; 417}; 418 419defn 420Btail(addr) { 421 complex Btail addr; 422 print(" magic0 ", addr.magic0, "\n"); 423 print(" datasize ", addr.datasize, "\n"); 424 print(" magic1 ", addr.magic1, "\n"); 425 print(" size ", addr.size, "\n"); 426}; 427 428sizeofFree = 24; 429aggr Free 430{ 431 { 432 'U' 0 magic; 433 'U' 4 size; 434 }; 435 'A' Free 8 left; 436 'A' Free 12 right; 437 'A' Free 16 next; 438 'A' Free 20 prev; 439}; 440 441defn 442Free(addr) { 443 complex Free addr; 444 print("Bhdr {\n"); 445 Bhdr(addr+0); 446 print("}\n"); 447 print(" left ", addr.left\X, "\n"); 448 print(" right ", addr.right\X, "\n"); 449 print(" next ", addr.next\X, "\n"); 450 print(" prev ", addr.prev\X, "\n"); 451}; 452 453FREE_MAGIC = 3126770193; 454sizeofAlloc = 8; 455aggr Alloc 456{ 457 { 458 'U' 0 magic; 459 'U' 4 size; 460 }; 461}; 462 463defn 464Alloc(addr) { 465 complex Alloc addr; 466 print("Bhdr {\n"); 467 Bhdr(addr+0); 468 print("}\n"); 469}; 470 471ALLOC_MAGIC = 168889353; 472UNALLOC_MAGIC = 3400535327; 473sizeofArena = 24; 474aggr Arena 475{ 476 { 477 'U' 0 magic; 478 'U' 4 size; 479 }; 480 'A' Arena 8 aup; 481 'A' Arena 12 down; 482 'U' 16 asize; 483 'U' 20 pad; 484}; 485 486defn 487Arena(addr) { 488 complex Arena addr; 489 print("Bhdr {\n"); 490 Bhdr(addr+0); 491 print("}\n"); 492 print(" aup ", addr.aup\X, "\n"); 493 print(" down ", addr.down\X, "\n"); 494 print(" asize ", addr.asize, "\n"); 495 print(" pad ", addr.pad, "\n"); 496}; 497 498ARENA_MAGIC = 3231835599; 499ARENATAIL_MAGIC = 3965590029; 500ALIGN_MAGIC = 2716979649; 501MINBLOCKSIZE = 32; 502complex Free checklist:t; 503complex Free checklist:q; 504complex Free checktree:t; 505complex Free ltreewalk:t; 506complex Free treelookup:t; 507complex Free treeinsert:tree; 508complex Free treeinsert:node; 509complex Free treeinsert:loc; 510complex Free treeinsert:repl; 511complex Free treedelete:tree; 512complex Free treedelete:node; 513complex Free treedelete:loc; 514complex Free treedelete:lsucc; 515complex Free treedelete:succ; 516complex Free treelookupgt:t; 517complex Free treelookupgt:lastgood; 518complex Free listadd:list; 519complex Free listadd:node; 520complex Free listdelete:list; 521complex Free listdelete:node; 522complex Pool pooladd:p; 523complex Alloc pooladd:anode; 524complex Free pooladd:lst; 525complex Free pooladd:olst; 526complex Free pooladd:node; 527complex Free pooladd:parent; 528complex Pool pooldel:p; 529complex Free pooldel:node; 530complex Free pooldel:lst; 531complex Free pooldel:olst; 532complex Free pooldel:parent; 533complex Pool dsize2bsize:p; 534complex Pool bsize2asize:p; 535complex Pool blockmerge:pool; 536complex Bhdr blockmerge:a; 537complex Bhdr blockmerge:b; 538complex Btail blockmerge:t; 539complex Bhdr blocksetsize:b; 540complex Btail blocksetsize:t; 541complex Alloc getdsize:b; 542complex Btail getdsize:t; 543complex Pool blocksetdsize:p; 544complex Alloc blocksetdsize:b; 545complex Btail blocksetdsize:t; 546complex Pool trim:p; 547complex Alloc trim:b; 548complex Alloc trim:frag; 549complex Pool freefromfront:p; 550complex Alloc freefromfront:b; 551complex Alloc freefromfront:bb; 552complex Arena arenasetsize:a; 553complex Bhdr arenasetsize:atail; 554complex Pool poolnewarena:p; 555complex Arena poolnewarena:a; 556complex Arena poolnewarena:ap; 557complex Arena poolnewarena:lastap; 558complex Alloc poolnewarena:b; 559complex Pool blockgrow:p; 560complex Bhdr blockgrow:b; 561complex Alloc blockgrow:a; 562complex Bhdr blockgrow:bnxt; 563complex Alloc blockgrow:a; 564complex Pool arenamerge:p; 565complex Arena arenamerge:bot; 566complex Arena arenamerge:top; 567complex Bhdr arenamerge:bbot; 568complex Bhdr arenamerge:btop; 569complex Btail arenamerge:t; 570complex Pool dumpblock:p; 571complex Bhdr dumpblock:b; 572complex Pool printblock:p; 573complex Bhdr printblock:b; 574complex Pool panicblock:p; 575complex Bhdr panicblock:b; 576complex Pool blockcheck:p; 577complex Bhdr blockcheck:b; 578complex Alloc blockcheck:a; 579complex Btail blockcheck:t; 580FLOATING_MAGIC = 3419130827; 581complex Pool arenacompact:p; 582complex Arena arenacompact:a; 583complex Bhdr arenacompact:b; 584complex Bhdr arenacompact:wb; 585complex Bhdr arenacompact:eb; 586complex Bhdr arenacompact:nxt; 587complex Pool poolcompactl:pool; 588complex Arena poolcompactl:a; 589complex Pool B2D:p; 590complex Alloc B2D:a; 591complex Pool D2B:p; 592complex Alloc D2B:a; 593complex Pool poolallocl:p; 594complex Free poolallocl:fb; 595complex Alloc poolallocl:ab; 596complex Pool poolreallocl:p; 597complex Alloc poolreallocl:a; 598complex Bhdr poolreallocl:left; 599complex Bhdr poolreallocl:right; 600complex Bhdr poolreallocl:newb; 601complex Btail poolreallocl:t; 602complex Pool poolallocalignl:p; 603complex Alloc poolallocalignl:b; 604complex Pool poolfreel:p; 605complex Alloc poolfreel:ab; 606complex Bhdr poolfreel:back; 607complex Bhdr poolfreel:fwd; 608complex Pool poolalloc:p; 609complex Pool poolallocalign:p; 610complex Pool poolcompact:p; 611complex Pool poolrealloc:p; 612complex Pool poolfree:p; 613complex Pool poolmsize:p; 614complex Alloc poolmsize:b; 615complex Pool poolcheckarena:p; 616complex Arena poolcheckarena:a; 617complex Bhdr poolcheckarena:b; 618complex Bhdr poolcheckarena:atail; 619complex Pool poolcheckl:p; 620complex Arena poolcheckl:a; 621complex Pool poolcheck:p; 622complex Pool poolblockcheck:p; 623complex Pool pooldumpl:p; 624complex Arena pooldumpl:a; 625complex Pool pooldump:p; 626complex Pool pooldumparena:p; 627complex Arena pooldumparena:a; 628complex Bhdr pooldumparena:b; 629