1sizeof_1_ = 8; 2aggr _1_ 3{ 4 'D' 0 llength; 5 'D' 4 hlength; 6}; 7 8defn 9_1_(addr) { 10 complex _1_ addr; 11 print(" llength ", addr.llength, "\n"); 12 print(" hlength ", addr.hlength, "\n"); 13}; 14 15sizeof_2_ = 8; 16aggr _2_ 17{ 18 'V' 0 length; 19 { 20 'D' 0 llength; 21 'D' 4 hlength; 22 }; 23}; 24 25defn 26_2_(addr) { 27 complex _2_ addr; 28 print(" length ", addr.length, "\n"); 29 print("_1_ {\n"); 30 _1_(addr+0); 31 print("}\n"); 32}; 33 34UTFmax = 3; 35Runesync = 128; 36Runeself = 128; 37Runeerror = 128; 38sizeofFconv = 24; 39aggr 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}; 48 49defn 50Fconv(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}; 59 60sizeofTm = 40; 61aggr 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}; 74 75defn 76Tm(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}; 89 90PNPROC = 1; 91PNGROUP = 2; 92sizeofLock = 4; 93aggr Lock 94{ 95 'D' 0 val; 96}; 97 98defn 99Lock(addr) { 100 complex Lock addr; 101 print(" val ", addr.val, "\n"); 102}; 103 104sizeofQLp = 12; 105aggr QLp 106{ 107 'D' 0 inuse; 108 'A' QLp 4 next; 109 'C' 8 state; 110}; 111 112defn 113QLp(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}; 119 120sizeofQLock = 16; 121aggr QLock 122{ 123 Lock 0 lock; 124 'D' 4 locked; 125 'A' QLp 8 $head; 126 'A' QLp 12 $tail; 127}; 128 129defn 130QLock(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}; 139 140sizeofRWLock = 20; 141aggr RWLock 142{ 143 Lock 0 lock; 144 'D' 4 readers; 145 'D' 8 writer; 146 'A' QLp 12 $head; 147 'A' QLp 16 $tail; 148}; 149 150defn 151RWLock(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}; 161 162RFNAMEG = 1; 163RFENVG = 2; 164RFFDG = 4; 165RFNOTEG = 8; 166RFPROC = 16; 167RFMEM = 32; 168RFNOWAIT = 64; 169RFCNAMEG = 1024; 170RFCENVG = 2048; 171RFCFDG = 4096; 172RFREND = 8192; 173sizeofQid = 8; 174aggr Qid 175{ 176 'U' 0 path; 177 'U' 4 vers; 178}; 179 180defn 181Qid(addr) { 182 complex Qid addr; 183 print(" path ", addr.path, "\n"); 184 print(" vers ", addr.vers, "\n"); 185}; 186 187sizeofDir = 116; 188aggr Dir 189{ 190 'a' 0 name; 191 'a' 28 uid; 192 'a' 56 gid; 193 Qid 84 qid; 194 'U' 92 mode; 195 'D' 96 atime; 196 'D' 100 mtime; 197 { 198 'V' 104 length; 199 { 200 'D' 104 llength; 201 'D' 108 hlength; 202 }; 203 }; 204 'u' 112 type; 205 'u' 114 dev; 206}; 207 208defn 209Dir(addr) { 210 complex Dir addr; 211 print(" name ", addr.name, "\n"); 212 print(" uid ", addr.uid, "\n"); 213 print(" gid ", addr.gid, "\n"); 214 print("Qid qid {\n"); 215 Qid(addr.qid); 216 print("}\n"); 217 print(" mode ", addr.mode, "\n"); 218 print(" atime ", addr.atime, "\n"); 219 print(" mtime ", addr.mtime, "\n"); 220 print("_2_ {\n"); 221 _2_(addr+104); 222 print("}\n"); 223 print(" type ", addr.type, "\n"); 224 print(" dev ", addr.dev, "\n"); 225}; 226 227sizeofWaitmsg = 112; 228aggr Waitmsg 229{ 230 'a' 0 pid; 231 'a' 12 time; 232 'a' 48 msg; 233}; 234 235defn 236Waitmsg(addr) { 237 complex Waitmsg addr; 238 print(" pid ", addr.pid, "\n"); 239 print(" time ", addr.time, "\n"); 240 print(" msg ", addr.msg, "\n"); 241}; 242 243Bsize = 8192; 244Bungetsize = 4; 245Bmagic = 3227993; 246Beof = -1; 247Bbad = -2; 248Binactive = 0; 249Bractive = 1; 250Bwactive = 2; 251Bracteof = 3; 252sizeofBiobufhdr = 52; 253aggr Biobufhdr 254{ 255 'D' 0 icount; 256 'D' 4 ocount; 257 'D' 8 rdline; 258 'D' 12 runesize; 259 'D' 16 state; 260 'D' 20 fid; 261 'D' 24 flag; 262 'V' 28 offset; 263 'D' 36 bsize; 264 'X' 40 bbuf; 265 'X' 44 ebuf; 266 'X' 48 gbuf; 267}; 268 269defn 270Biobufhdr(addr) { 271 complex Biobufhdr addr; 272 print(" icount ", addr.icount, "\n"); 273 print(" ocount ", addr.ocount, "\n"); 274 print(" rdline ", addr.rdline, "\n"); 275 print(" runesize ", addr.runesize, "\n"); 276 print(" state ", addr.state, "\n"); 277 print(" fid ", addr.fid, "\n"); 278 print(" flag ", addr.flag, "\n"); 279 print(" offset ", addr.offset, "\n"); 280 print(" bsize ", addr.bsize, "\n"); 281 print(" bbuf ", addr.bbuf\X, "\n"); 282 print(" ebuf ", addr.ebuf\X, "\n"); 283 print(" gbuf ", addr.gbuf\X, "\n"); 284}; 285 286sizeofBiobuf = 8248; 287aggr Biobuf 288{ 289 { 290 'D' 0 icount; 291 'D' 4 ocount; 292 'D' 8 rdline; 293 'D' 12 runesize; 294 'D' 16 state; 295 'D' 20 fid; 296 'D' 24 flag; 297 'V' 28 offset; 298 'D' 36 bsize; 299 'X' 40 bbuf; 300 'X' 44 ebuf; 301 'X' 48 gbuf; 302 }; 303 'a' 52 b; 304}; 305 306defn 307Biobuf(addr) { 308 complex Biobuf addr; 309 print("Biobufhdr {\n"); 310 Biobufhdr(addr+0); 311 print("}\n"); 312 print(" b ", addr.b, "\n"); 313}; 314 315sizeof_3_ = 4; 316aggr _3_ 317{ 318 'X' 0 sp; 319 'X' 0 rsp; 320}; 321 322defn 323_3_(addr) { 324 complex _3_ addr; 325 print(" sp ", addr.sp\X, "\n"); 326 print(" rsp ", addr.rsp\X, "\n"); 327}; 328 329sizeof_4_ = 4; 330aggr _4_ 331{ 332 'X' 0 ep; 333 'X' 0 rep; 334}; 335 336defn 337_4_(addr) { 338 complex _4_ addr; 339 print(" ep ", addr.ep\X, "\n"); 340 print(" rep ", addr.rep\X, "\n"); 341}; 342 343sizeofResub = 8; 344aggr Resub 345{ 346 { 347 'X' 0 sp; 348 'X' 0 rsp; 349 }; 350 { 351 'X' 4 ep; 352 'X' 4 rep; 353 }; 354}; 355 356defn 357Resub(addr) { 358 complex Resub addr; 359 print("_3_ {\n"); 360 _3_(addr+0); 361 print("}\n"); 362 print("_4_ {\n"); 363 _4_(addr+4); 364 print("}\n"); 365}; 366 367sizeofReclass = 132; 368aggr Reclass 369{ 370 'X' 0 end; 371 'a' 4 spans; 372}; 373 374defn 375Reclass(addr) { 376 complex Reclass addr; 377 print(" end ", addr.end\X, "\n"); 378 print(" spans ", addr.spans, "\n"); 379}; 380 381sizeof_5_ = 4; 382aggr _5_ 383{ 384 'A' Reclass 0 cp; 385 'u' 0 r; 386 'D' 0 subid; 387 'X' 0 right; 388}; 389 390defn 391_5_(addr) { 392 complex _5_ addr; 393 print(" cp ", addr.cp\X, "\n"); 394 print(" r ", addr.r, "\n"); 395 print(" subid ", addr.subid, "\n"); 396 print(" right ", addr.right\X, "\n"); 397}; 398 399sizeof_6_ = 4; 400aggr _6_ 401{ 402 'X' 0 left; 403 'X' 0 next; 404}; 405 406defn 407_6_(addr) { 408 complex _6_ addr; 409 print(" left ", addr.left\X, "\n"); 410 print(" next ", addr.next\X, "\n"); 411}; 412 413sizeofReinst = 12; 414aggr Reinst 415{ 416 'D' 0 type; 417 { 418 'A' Reclass 4 cp; 419 'u' 4 r; 420 'D' 4 subid; 421 'A' Reinst 4 right; 422 }; 423 { 424 'A' Reinst 8 left; 425 'A' Reinst 8 next; 426 }; 427}; 428 429defn 430Reinst(addr) { 431 complex Reinst addr; 432 print(" type ", addr.type, "\n"); 433 print("_5_ {\n"); 434 _5_(addr+4); 435 print("}\n"); 436 print("_6_ {\n"); 437 _6_(addr+8); 438 print("}\n"); 439}; 440 441sizeofReprog = 2176; 442aggr Reprog 443{ 444 'A' Reinst 0 startinst; 445 'a' 4 class; 446 'a' 2116 firstinst; 447}; 448 449defn 450Reprog(addr) { 451 complex Reprog addr; 452 print(" startinst ", addr.startinst\X, "\n"); 453 print(" class ", addr.class, "\n"); 454 print(" firstinst ", addr.firstinst, "\n"); 455}; 456 457complex Biobuf bout; 458sizeofBufblock = 16; 459aggr Bufblock 460{ 461 'A' Bufblock 0 next; 462 'X' 4 start; 463 'X' 8 end; 464 'X' 12 current; 465}; 466 467defn 468Bufblock(addr) { 469 complex Bufblock addr; 470 print(" next ", addr.next\X, "\n"); 471 print(" start ", addr.start\X, "\n"); 472 print(" end ", addr.end\X, "\n"); 473 print(" current ", addr.current\X, "\n"); 474}; 475 476sizeofWord = 8; 477aggr Word 478{ 479 'X' 0 s; 480 'A' Word 4 next; 481}; 482 483defn 484Word(addr) { 485 complex Word addr; 486 print(" s ", addr.s\X, "\n"); 487 print(" next ", addr.next\X, "\n"); 488}; 489 490sizeofEnvy = 8; 491aggr Envy 492{ 493 'X' 0 name; 494 'A' Word 4 values; 495}; 496 497defn 498Envy(addr) { 499 complex Envy addr; 500 print(" name ", addr.name\X, "\n"); 501 print(" values ", addr.values\X, "\n"); 502}; 503 504complex Envy envy; 505sizeofRule = 44; 506aggr Rule 507{ 508 'X' 0 target; 509 'A' Word 4 $tail; 510 'X' 8 recipe; 511 'd' 12 attr; 512 'd' 14 line; 513 'X' 16 file; 514 'A' Word 20 alltargets; 515 'D' 24 rule; 516 'A' Reprog 28 pat; 517 'X' 32 prog; 518 'A' Rule 36 chain; 519 'A' Rule 40 next; 520}; 521 522defn 523Rule(addr) { 524 complex Rule addr; 525 print(" target ", addr.target\X, "\n"); 526 print(" $tail ", addr.$tail\X, "\n"); 527 print(" recipe ", addr.recipe\X, "\n"); 528 print(" attr ", addr.attr, "\n"); 529 print(" line ", addr.line, "\n"); 530 print(" file ", addr.file\X, "\n"); 531 print(" alltargets ", addr.alltargets\X, "\n"); 532 print(" rule ", addr.rule, "\n"); 533 print(" pat ", addr.pat\X, "\n"); 534 print(" prog ", addr.prog\X, "\n"); 535 print(" chain ", addr.chain\X, "\n"); 536 print(" next ", addr.next\X, "\n"); 537}; 538 539complex Rule rules; 540complex Rule metarules; 541complex Rule patrule; 542sizeofArc = 64; 543aggr Arc 544{ 545 'd' 0 flag; 546 'X' 4 n; 547 'A' Rule 8 r; 548 'X' 12 stem; 549 'X' 16 prog; 550 'a' 20 match; 551 'A' Arc 60 next; 552}; 553 554defn 555Arc(addr) { 556 complex Arc addr; 557 print(" flag ", addr.flag, "\n"); 558 print(" n ", addr.n\X, "\n"); 559 print(" r ", addr.r\X, "\n"); 560 print(" stem ", addr.stem\X, "\n"); 561 print(" prog ", addr.prog\X, "\n"); 562 print(" match ", addr.match, "\n"); 563 print(" next ", addr.next\X, "\n"); 564}; 565 566sizeofNode = 20; 567aggr Node 568{ 569 'X' 0 name; 570 'D' 4 time; 571 'u' 8 flags; 572 'A' Arc 12 prereqs; 573 'A' Node 16 next; 574}; 575 576defn 577Node(addr) { 578 complex Node addr; 579 print(" name ", addr.name\X, "\n"); 580 print(" time ", addr.time, "\n"); 581 print(" flags ", addr.flags, "\n"); 582 print(" prereqs ", addr.prereqs\X, "\n"); 583 print(" next ", addr.next\X, "\n"); 584}; 585 586sizeofJob = 40; 587aggr Job 588{ 589 'A' Rule 0 r; 590 'A' Node 4 n; 591 'X' 8 stem; 592 'X' 12 match; 593 'A' Word 16 p; 594 'A' Word 20 np; 595 'A' Word 24 t; 596 'A' Word 28 at; 597 'D' 32 nproc; 598 'A' Job 36 next; 599}; 600 601defn 602Job(addr) { 603 complex Job addr; 604 print(" r ", addr.r\X, "\n"); 605 print(" n ", addr.n\X, "\n"); 606 print(" stem ", addr.stem\X, "\n"); 607 print(" match ", addr.match\X, "\n"); 608 print(" p ", addr.p\X, "\n"); 609 print(" np ", addr.np\X, "\n"); 610 print(" t ", addr.t\X, "\n"); 611 print(" at ", addr.at\X, "\n"); 612 print(" nproc ", addr.nproc, "\n"); 613 print(" next ", addr.next\X, "\n"); 614}; 615 616complex Job jobs; 617sizeofSymtab = 16; 618aggr Symtab 619{ 620 'd' 0 space; 621 'X' 4 name; 622 'X' 8 value; 623 'A' Symtab 12 next; 624}; 625 626defn 627Symtab(addr) { 628 complex Symtab addr; 629 print(" space ", addr.space, "\n"); 630 print(" name ", addr.name\X, "\n"); 631 print(" value ", addr.value\X, "\n"); 632 print(" next ", addr.next\X, "\n"); 633}; 634 635S_VAR = 0; 636S_TARGET = 1; 637S_TIME = 2; 638S_PID = 3; 639S_NODE = 4; 640S_AGG = 5; 641S_BITCH = 6; 642S_NOEXPORT = 7; 643S_OVERRIDE = 8; 644S_OUTOFDATE = 9; 645S_MAKEFILE = 10; 646S_MAKEVAR = 11; 647S_EXPORTED = 12; 648S_BULKED = 13; 649S_WESET = 14; 650S_INTERNAL = 15; 651complex Word readenv:w; 652complex Word encodenulls:w; 653complex Word encodenulls:$head; 654complex Envy exportenv:e; 655complex Word exportenv:w; 656complex Symtab exportenv:sy; 657complex Dir dirtime:d; 658complex Waitmsg waitfor:wm; 659complex Bufblock execsh:buf; 660complex Envy execsh:e; 661complex Envy pipecmd:e; 662complex Dir chgtime:sbuf; 663complex Resub rcopy:match; 664complex Dir mkdirstat:buf; 665