1sizeof_1_ = 8; 2aggr _1_ 3{ 4 'D' 0 quot; 5 'D' 4 rem; 6}; 7 8defn 9_1_(addr) { 10 complex _1_ addr; 11 print(" quot ", addr.quot, "\n"); 12 print(" rem ", addr.rem, "\n"); 13}; 14 15sizeof_2_ = 8; 16aggr _2_ 17{ 18 'D' 0 quot; 19 'D' 4 rem; 20}; 21 22defn 23_2_(addr) { 24 complex _2_ addr; 25 print(" quot ", addr.quot, "\n"); 26 print(" rem ", addr.rem, "\n"); 27}; 28 29sizeofsigaction = 12; 30aggr sigaction 31{ 32 'X' 0 sa_handler; 33 'D' 4 sa_mask; 34 'D' 8 sa_flags; 35}; 36 37defn 38sigaction(addr) { 39 complex sigaction addr; 40 print(" sa_handler ", addr.sa_handler\X, "\n"); 41 print(" sa_mask ", addr.sa_mask, "\n"); 42 print(" sa_flags ", addr.sa_flags, "\n"); 43}; 44 45sizeof_3_ = 32; 46aggr _3_ 47{ 48 'D' 0 fd; 49 'C' 4 flags; 50 'C' 5 state; 51 'X' 8 buf; 52 'X' 12 rp; 53 'X' 16 wp; 54 'X' 20 lp; 55 'U' 24 bufl; 56 'a' 28 unbuf; 57}; 58 59defn 60_3_(addr) { 61 complex _3_ addr; 62 print(" fd ", addr.fd, "\n"); 63 print(" flags ", addr.flags, "\n"); 64 print(" state ", addr.state, "\n"); 65 print(" buf ", addr.buf\X, "\n"); 66 print(" rp ", addr.rp\X, "\n"); 67 print(" wp ", addr.wp\X, "\n"); 68 print(" lp ", addr.lp\X, "\n"); 69 print(" bufl ", addr.bufl, "\n"); 70 print(" unbuf ", addr.unbuf, "\n"); 71}; 72 73sizeof_4_ = 4; 74aggr _4_ 75{ 76 'D' 0 val; 77}; 78 79defn 80_4_(addr) { 81 complex _4_ addr; 82 print(" val ", addr.val, "\n"); 83}; 84 85sizeoftimeval = 8; 86aggr timeval 87{ 88 'D' 0 tv_sec; 89 'D' 4 tv_usec; 90}; 91 92defn 93timeval(addr) { 94 complex timeval addr; 95 print(" tv_sec ", addr.tv_sec, "\n"); 96 print(" tv_usec ", addr.tv_usec, "\n"); 97}; 98 99sizeoftimezone = 8; 100aggr timezone 101{ 102 'D' 0 tz_minuteswest; 103 'D' 4 tz_dsttime; 104}; 105 106defn 107timezone(addr) { 108 complex timezone addr; 109 print(" tz_minuteswest ", addr.tz_minuteswest, "\n"); 110 print(" tz_dsttime ", addr.tz_dsttime, "\n"); 111}; 112 113sizeoffd_set = 12; 114aggr fd_set 115{ 116 'a' 0 fds_bits; 117}; 118 119defn 120fd_set(addr) { 121 complex fd_set addr; 122 mem(addr, "3X"); 123}; 124 125sizeofstat = 28; 126aggr stat 127{ 128 'u' 0 st_dev; 129 'u' 2 st_ino; 130 'u' 4 st_mode; 131 'd' 6 st_nlink; 132 'd' 8 st_uid; 133 'd' 10 st_gid; 134 'D' 12 st_size; 135 'D' 16 st_atime; 136 'D' 20 st_mtime; 137 'D' 24 st_ctime; 138}; 139 140defn 141stat(addr) { 142 complex stat addr; 143 print(" st_dev ", addr.st_dev, "\n"); 144 print(" st_ino ", addr.st_ino, "\n"); 145 print(" st_mode ", addr.st_mode, "\n"); 146 print(" st_nlink ", addr.st_nlink, "\n"); 147 print(" st_uid ", addr.st_uid, "\n"); 148 print(" st_gid ", addr.st_gid, "\n"); 149 print(" st_size ", addr.st_size, "\n"); 150 print(" st_atime ", addr.st_atime, "\n"); 151 print(" st_mtime ", addr.st_mtime, "\n"); 152 print(" st_ctime ", addr.st_ctime, "\n"); 153}; 154 155sizeofflock = 16; 156aggr flock 157{ 158 'd' 0 l_type; 159 'd' 2 l_whence; 160 'D' 4 l_start; 161 'D' 8 l_len; 162 'D' 12 l_pid; 163}; 164 165defn 166flock(addr) { 167 complex flock addr; 168 print(" l_type ", addr.l_type, "\n"); 169 print(" l_whence ", addr.l_whence, "\n"); 170 print(" l_start ", addr.l_start, "\n"); 171 print(" l_len ", addr.l_len, "\n"); 172 print(" l_pid ", addr.l_pid, "\n"); 173}; 174 175sizeofdirent = 28; 176aggr dirent 177{ 178 'a' 0 d_name; 179}; 180 181defn 182dirent(addr) { 183 complex dirent addr; 184 print(" d_name ", addr.d_name, "\n"); 185}; 186 187sizeof_dirdesc = 16; 188aggr _dirdesc 189{ 190 'D' 0 dd_fd; 191 'D' 4 dd_loc; 192 'D' 8 dd_size; 193 'X' 12 dd_buf; 194}; 195 196defn 197_dirdesc(addr) { 198 complex _dirdesc addr; 199 print(" dd_fd ", addr.dd_fd, "\n"); 200 print(" dd_loc ", addr.dd_loc, "\n"); 201 print(" dd_size ", addr.dd_size, "\n"); 202 print(" dd_buf ", addr.dd_buf\X, "\n"); 203}; 204 205sizeoftermios = 28; 206aggr termios 207{ 208 'U' 0 c_iflag; 209 'U' 4 c_oflag; 210 'U' 8 c_cflag; 211 'U' 12 c_lflag; 212 'a' 16 c_cc; 213}; 214 215defn 216termios(addr) { 217 complex termios addr; 218 print(" c_iflag ", addr.c_iflag, "\n"); 219 print(" c_oflag ", addr.c_oflag, "\n"); 220 print(" c_cflag ", addr.c_cflag, "\n"); 221 print(" c_lflag ", addr.c_lflag, "\n"); 222 print(" c_cc ", addr.c_cc, "\n"); 223}; 224 225sizeofutsname = 20; 226aggr utsname 227{ 228 'X' 0 sysname; 229 'X' 4 nodename; 230 'X' 8 release; 231 'X' 12 version; 232 'X' 16 machine; 233}; 234 235defn 236utsname(addr) { 237 complex utsname addr; 238 print(" sysname ", addr.sysname\X, "\n"); 239 print(" nodename ", addr.nodename\X, "\n"); 240 print(" release ", addr.release\X, "\n"); 241 print(" version ", addr.version\X, "\n"); 242 print(" machine ", addr.machine\X, "\n"); 243}; 244 245sizeofMuxbuf = 16400; 246aggr Muxbuf 247{ 248 'D' 0 n; 249 'X' 4 putnext; 250 'X' 8 getnext; 251 'b' 12 fd; 252 'b' 13 eof; 253 'b' 14 roomwait; 254 'b' 15 datawait; 255 'a' 16 data; 256}; 257 258defn 259Muxbuf(addr) { 260 complex Muxbuf addr; 261 print(" n ", addr.n, "\n"); 262 print(" putnext ", addr.putnext\X, "\n"); 263 print(" getnext ", addr.getnext\X, "\n"); 264 print(" fd ", addr.fd, "\n"); 265 print(" eof ", addr.eof, "\n"); 266 print(" roomwait ", addr.roomwait, "\n"); 267 print(" datawait ", addr.datawait, "\n"); 268 print(" data ", addr.data, "\n"); 269}; 270 271sizeofFdinfo = 16; 272aggr Fdinfo 273{ 274 'U' 0 flags; 275 'U' 4 oflags; 276 'X' 8 name; 277 'A' Muxbuf 12 buf; 278}; 279 280defn 281Fdinfo(addr) { 282 complex Fdinfo addr; 283 print(" flags ", addr.flags, "\n"); 284 print(" oflags ", addr.oflags, "\n"); 285 print(" name ", addr.name\X, "\n"); 286 print(" buf ", addr.buf\X, "\n"); 287}; 288 289sizeofWaitmsg = 112; 290aggr Waitmsg 291{ 292 'a' 0 pid; 293 'a' 12 time; 294 'a' 48 msg; 295}; 296 297defn 298Waitmsg(addr) { 299 complex Waitmsg addr; 300 print(" pid ", addr.pid, "\n"); 301 print(" time ", addr.time, "\n"); 302 print(" msg ", addr.msg, "\n"); 303}; 304 305sizeof_5_ = 8; 306aggr _5_ 307{ 308 'D' 0 hlength; 309 'D' 4 length; 310}; 311 312defn 313_5_(addr) { 314 complex _5_ addr; 315 print(" hlength ", addr.hlength, "\n"); 316 print(" length ", addr.length, "\n"); 317}; 318 319sizeof_6_ = 8; 320aggr _6_ 321{ 322 'a' 0 clength; 323 'D' 0 vlength; 324 { 325 'D' 0 hlength; 326 'D' 4 length; 327 }; 328}; 329 330defn 331_6_(addr) { 332 complex _6_ addr; 333 print(" clength ", addr.clength, "\n"); 334 print(" vlength ", addr.vlength, "\n"); 335 print("_5_ {\n"); 336 _5_(addr+0); 337 print("}\n"); 338}; 339 340sizeofQid = 8; 341aggr Qid 342{ 343 'U' 0 path; 344 'U' 4 vers; 345}; 346 347defn 348Qid(addr) { 349 complex Qid addr; 350 print(" path ", addr.path, "\n"); 351 print(" vers ", addr.vers, "\n"); 352}; 353 354sizeofDir = 116; 355aggr Dir 356{ 357 'a' 0 name; 358 'a' 28 uid; 359 'a' 56 gid; 360 Qid 84 qid; 361 'U' 92 mode; 362 'D' 96 atime; 363 'D' 100 mtime; 364 { 365 'a' 104 clength; 366 'D' 104 vlength; 367 { 368 'D' 104 hlength; 369 'D' 108 length; 370 }; 371 }; 372 'd' 112 type; 373 'd' 114 dev; 374}; 375 376defn 377Dir(addr) { 378 complex Dir addr; 379 print(" name ", addr.name, "\n"); 380 print(" uid ", addr.uid, "\n"); 381 print(" gid ", addr.gid, "\n"); 382 print("Qid qid {\n"); 383 Qid(addr.qid); 384 print("}\n"); 385 print(" mode ", addr.mode, "\n"); 386 print(" atime ", addr.atime, "\n"); 387 print(" mtime ", addr.mtime, "\n"); 388 print("_6_ {\n"); 389 _6_(addr+104); 390 print("}\n"); 391 print(" type ", addr.type, "\n"); 392 print(" dev ", addr.dev, "\n"); 393}; 394 395sizeof_7_ = 28; 396aggr _7_ 397{ 398 'u' 0 oldtag; 399 Qid 4 qid; 400 'a' 12 rauth; 401}; 402 403defn 404_7_(addr) { 405 complex _7_ addr; 406 print(" oldtag ", addr.oldtag, "\n"); 407 print("Qid qid {\n"); 408 Qid(addr.qid); 409 print("}\n"); 410 print(" rauth ", addr.rauth, "\n"); 411}; 412 413sizeof_8_ = 144; 414aggr _8_ 415{ 416 'a' 0 uname; 417 'a' 28 aname; 418 'a' 56 ticket; 419 'a' 128 auth; 420}; 421 422defn 423_8_(addr) { 424 complex _8_ addr; 425 print(" uname ", addr.uname, "\n"); 426 print(" aname ", addr.aname, "\n"); 427 print(" ticket ", addr.ticket, "\n"); 428 print(" auth ", addr.auth, "\n"); 429}; 430 431sizeof_9_ = 148; 432aggr _9_ 433{ 434 'a' 0 ename; 435 'a' 64 authid; 436 'a' 92 authdom; 437 'a' 140 chal; 438}; 439 440defn 441_9_(addr) { 442 complex _9_ addr; 443 print(" ename ", addr.ename, "\n"); 444 print(" authid ", addr.authid, "\n"); 445 print(" authdom ", addr.authdom, "\n"); 446 print(" chal ", addr.chal, "\n"); 447}; 448 449sizeof_10_ = 36; 450aggr _10_ 451{ 452 'D' 0 perm; 453 'd' 4 newfid; 454 'a' 6 name; 455 'C' 34 mode; 456}; 457 458defn 459_10_(addr) { 460 complex _10_ addr; 461 print(" perm ", addr.perm, "\n"); 462 print(" newfid ", addr.newfid, "\n"); 463 print(" name ", addr.name, "\n"); 464 print(" mode ", addr.mode, "\n"); 465}; 466 467sizeof_11_ = 12; 468aggr _11_ 469{ 470 'D' 0 offset; 471 'D' 4 count; 472 'X' 8 data; 473}; 474 475defn 476_11_(addr) { 477 complex _11_ addr; 478 print(" offset ", addr.offset, "\n"); 479 print(" count ", addr.count, "\n"); 480 print(" data ", addr.data\X, "\n"); 481}; 482 483sizeof_12_ = 116; 484aggr _12_ 485{ 486 'a' 0 stat; 487}; 488 489defn 490_12_(addr) { 491 complex _12_ addr; 492 print(" stat ", addr.stat, "\n"); 493}; 494 495sizeof_13_ = 148; 496aggr _13_ 497{ 498 { 499 'u' 0 oldtag; 500 Qid 4 qid; 501 'a' 12 rauth; 502 }; 503 { 504 'a' 0 uname; 505 'a' 28 aname; 506 'a' 56 ticket; 507 'a' 128 auth; 508 }; 509 { 510 'a' 0 ename; 511 'a' 64 authid; 512 'a' 92 authdom; 513 'a' 140 chal; 514 }; 515 { 516 'D' 0 perm; 517 'd' 4 newfid; 518 'a' 6 name; 519 'C' 34 mode; 520 }; 521 { 522 'D' 0 offset; 523 'D' 4 count; 524 'X' 8 data; 525 }; 526 { 527 'a' 0 stat; 528 }; 529}; 530 531defn 532_13_(addr) { 533 complex _13_ addr; 534 print("_7_ {\n"); 535 _7_(addr+0); 536 print("}\n"); 537 print("_8_ {\n"); 538 _8_(addr+0); 539 print("}\n"); 540 print("_9_ {\n"); 541 _9_(addr+0); 542 print("}\n"); 543 print("_10_ {\n"); 544 _10_(addr+0); 545 print("}\n"); 546 print("_11_ {\n"); 547 _11_(addr+0); 548 print("}\n"); 549 print("_12_ {\n"); 550 _12_(addr+0); 551 print("}\n"); 552}; 553 554sizeofFcall = 156; 555aggr Fcall 556{ 557 'C' 0 type; 558 'd' 2 fid; 559 'u' 4 tag; 560 { 561 { 562 'u' 8 oldtag; 563 Qid 12 qid; 564 'a' 20 rauth; 565 }; 566 { 567 'a' 8 uname; 568 'a' 36 aname; 569 'a' 64 ticket; 570 'a' 136 auth; 571 }; 572 { 573 'a' 8 ename; 574 'a' 72 authid; 575 'a' 100 authdom; 576 'a' 148 chal; 577 }; 578 { 579 'D' 8 perm; 580 'd' 12 newfid; 581 'a' 14 name; 582 'C' 42 mode; 583 }; 584 { 585 'D' 8 offset; 586 'D' 12 count; 587 'X' 16 data; 588 }; 589 { 590 'a' 8 stat; 591 }; 592 }; 593}; 594 595defn 596Fcall(addr) { 597 complex Fcall addr; 598 print(" type ", addr.type, "\n"); 599 print(" fid ", addr.fid, "\n"); 600 print(" tag ", addr.tag, "\n"); 601 print("_13_ {\n"); 602 _13_(addr+8); 603 print("}\n"); 604}; 605 606sizeofMuxbuf = 16400; 607aggr Muxbuf 608{ 609 'D' 0 n; 610 'X' 4 putnext; 611 'X' 8 getnext; 612 'b' 12 fd; 613 'b' 13 eof; 614 'b' 14 roomwait; 615 'b' 15 datawait; 616 'a' 16 data; 617}; 618 619defn 620Muxbuf(addr) { 621 complex Muxbuf addr; 622 print(" n ", addr.n, "\n"); 623 print(" putnext ", addr.putnext\X, "\n"); 624 print(" getnext ", addr.getnext\X, "\n"); 625 print(" fd ", addr.fd, "\n"); 626 print(" eof ", addr.eof, "\n"); 627 print(" roomwait ", addr.roomwait, "\n"); 628 print(" datawait ", addr.datawait, "\n"); 629 print(" data ", addr.data, "\n"); 630}; 631 632sizeofFdinfo = 16; 633aggr Fdinfo 634{ 635 'U' 0 flags; 636 'U' 4 oflags; 637 'X' 8 name; 638 'A' Muxbuf 12 buf; 639}; 640 641defn 642Fdinfo(addr) { 643 complex Fdinfo addr; 644 print(" flags ", addr.flags, "\n"); 645 print(" oflags ", addr.oflags, "\n"); 646 print(" name ", addr.name\X, "\n"); 647 print(" buf ", addr.buf\X, "\n"); 648}; 649 650sizeofWaitmsg = 112; 651aggr Waitmsg 652{ 653 'a' 0 pid; 654 'a' 12 time; 655 'a' 48 msg; 656}; 657 658defn 659Waitmsg(addr) { 660 complex Waitmsg addr; 661 print(" pid ", addr.pid, "\n"); 662 print(" time ", addr.time, "\n"); 663 print(" msg ", addr.msg, "\n"); 664}; 665 666sizeofMuxseg = 65640; 667aggr Muxseg 668{ 669 _4_ 0 lock; 670 'D' 4 curfds; 671 'D' 8 selwait; 672 'D' 12 waittime; 673 fd_set 16 rwant; 674 fd_set 28 ewant; 675 'a' 40 bufs; 676}; 677 678defn 679Muxseg(addr) { 680 complex Muxseg addr; 681 print("_4_ lock {\n"); 682 _4_(addr.lock); 683 print("}\n"); 684 print(" curfds ", addr.curfds, "\n"); 685 print(" selwait ", addr.selwait, "\n"); 686 print(" waittime ", addr.waittime, "\n"); 687 print("fd_set rwant {\n"); 688 fd_set(addr.rwant); 689 print("}\n"); 690 print("fd_set ewant {\n"); 691 fd_set(addr.ewant); 692 print("}\n"); 693 print(" bufs ", addr.bufs, "\n"); 694}; 695 696complex Muxseg mux; 697complex Fdinfo _startbuf:f; 698complex Muxbuf _startbuf:b; 699complex Muxbuf _copyproc:b; 700complex Muxbuf _readbuf:b; 701complex fd_set select:rfds; 702complex fd_set select:wfds; 703complex fd_set select:efds; 704complex timeval select:timeout; 705complex Fdinfo select:f; 706complex Muxbuf select:b; 707