sizeof_1_ = 8; aggr _1_ { 'D' 0 quot; 'D' 4 rem; }; defn _1_(addr) { complex _1_ addr; print(" quot ", addr.quot, "\n"); print(" rem ", addr.rem, "\n"); }; sizeof_2_ = 8; aggr _2_ { 'D' 0 quot; 'D' 4 rem; }; defn _2_(addr) { complex _2_ addr; print(" quot ", addr.quot, "\n"); print(" rem ", addr.rem, "\n"); }; sizeofsigaction = 12; aggr sigaction { 'X' 0 sa_handler; 'D' 4 sa_mask; 'D' 8 sa_flags; }; defn sigaction(addr) { complex sigaction addr; print(" sa_handler ", addr.sa_handler\X, "\n"); print(" sa_mask ", addr.sa_mask, "\n"); print(" sa_flags ", addr.sa_flags, "\n"); }; sizeof_3_ = 32; aggr _3_ { 'D' 0 fd; 'C' 4 flags; 'C' 5 state; 'X' 8 buf; 'X' 12 rp; 'X' 16 wp; 'X' 20 lp; 'U' 24 bufl; 'a' 28 unbuf; }; defn _3_(addr) { complex _3_ addr; print(" fd ", addr.fd, "\n"); print(" flags ", addr.flags, "\n"); print(" state ", addr.state, "\n"); print(" buf ", addr.buf\X, "\n"); print(" rp ", addr.rp\X, "\n"); print(" wp ", addr.wp\X, "\n"); print(" lp ", addr.lp\X, "\n"); print(" bufl ", addr.bufl, "\n"); print(" unbuf ", addr.unbuf, "\n"); }; sizeof_4_ = 4; aggr _4_ { 'D' 0 val; }; defn _4_(addr) { complex _4_ addr; print(" val ", addr.val, "\n"); }; sizeoftimeval = 8; aggr timeval { 'D' 0 tv_sec; 'D' 4 tv_usec; }; defn timeval(addr) { complex timeval addr; print(" tv_sec ", addr.tv_sec, "\n"); print(" tv_usec ", addr.tv_usec, "\n"); }; sizeoftimezone = 8; aggr timezone { 'D' 0 tz_minuteswest; 'D' 4 tz_dsttime; }; defn timezone(addr) { complex timezone addr; print(" tz_minuteswest ", addr.tz_minuteswest, "\n"); print(" tz_dsttime ", addr.tz_dsttime, "\n"); }; sizeoffd_set = 12; aggr fd_set { 'a' 0 fds_bits; }; defn fd_set(addr) { complex fd_set addr; mem(addr, "3X"); }; sizeofstat = 28; aggr stat { 'u' 0 st_dev; 'u' 2 st_ino; 'u' 4 st_mode; 'd' 6 st_nlink; 'd' 8 st_uid; 'd' 10 st_gid; 'D' 12 st_size; 'D' 16 st_atime; 'D' 20 st_mtime; 'D' 24 st_ctime; }; defn stat(addr) { complex stat addr; print(" st_dev ", addr.st_dev, "\n"); print(" st_ino ", addr.st_ino, "\n"); print(" st_mode ", addr.st_mode, "\n"); print(" st_nlink ", addr.st_nlink, "\n"); print(" st_uid ", addr.st_uid, "\n"); print(" st_gid ", addr.st_gid, "\n"); print(" st_size ", addr.st_size, "\n"); print(" st_atime ", addr.st_atime, "\n"); print(" st_mtime ", addr.st_mtime, "\n"); print(" st_ctime ", addr.st_ctime, "\n"); }; sizeofflock = 16; aggr flock { 'd' 0 l_type; 'd' 2 l_whence; 'D' 4 l_start; 'D' 8 l_len; 'D' 12 l_pid; }; defn flock(addr) { complex flock addr; print(" l_type ", addr.l_type, "\n"); print(" l_whence ", addr.l_whence, "\n"); print(" l_start ", addr.l_start, "\n"); print(" l_len ", addr.l_len, "\n"); print(" l_pid ", addr.l_pid, "\n"); }; sizeofdirent = 28; aggr dirent { 'a' 0 d_name; }; defn dirent(addr) { complex dirent addr; print(" d_name ", addr.d_name, "\n"); }; sizeof_dirdesc = 16; aggr _dirdesc { 'D' 0 dd_fd; 'D' 4 dd_loc; 'D' 8 dd_size; 'X' 12 dd_buf; }; defn _dirdesc(addr) { complex _dirdesc addr; print(" dd_fd ", addr.dd_fd, "\n"); print(" dd_loc ", addr.dd_loc, "\n"); print(" dd_size ", addr.dd_size, "\n"); print(" dd_buf ", addr.dd_buf\X, "\n"); }; sizeoftermios = 28; aggr termios { 'U' 0 c_iflag; 'U' 4 c_oflag; 'U' 8 c_cflag; 'U' 12 c_lflag; 'a' 16 c_cc; }; defn termios(addr) { complex termios addr; print(" c_iflag ", addr.c_iflag, "\n"); print(" c_oflag ", addr.c_oflag, "\n"); print(" c_cflag ", addr.c_cflag, "\n"); print(" c_lflag ", addr.c_lflag, "\n"); print(" c_cc ", addr.c_cc, "\n"); }; sizeofutsname = 20; aggr utsname { 'X' 0 sysname; 'X' 4 nodename; 'X' 8 release; 'X' 12 version; 'X' 16 machine; }; defn utsname(addr) { complex utsname addr; print(" sysname ", addr.sysname\X, "\n"); print(" nodename ", addr.nodename\X, "\n"); print(" release ", addr.release\X, "\n"); print(" version ", addr.version\X, "\n"); print(" machine ", addr.machine\X, "\n"); }; sizeofMuxbuf = 16400; aggr Muxbuf { 'D' 0 n; 'X' 4 putnext; 'X' 8 getnext; 'b' 12 fd; 'b' 13 eof; 'b' 14 roomwait; 'b' 15 datawait; 'a' 16 data; }; defn Muxbuf(addr) { complex Muxbuf addr; print(" n ", addr.n, "\n"); print(" putnext ", addr.putnext\X, "\n"); print(" getnext ", addr.getnext\X, "\n"); print(" fd ", addr.fd, "\n"); print(" eof ", addr.eof, "\n"); print(" roomwait ", addr.roomwait, "\n"); print(" datawait ", addr.datawait, "\n"); print(" data ", addr.data, "\n"); }; sizeofFdinfo = 16; aggr Fdinfo { 'U' 0 flags; 'U' 4 oflags; 'X' 8 name; 'A' Muxbuf 12 buf; }; defn Fdinfo(addr) { complex Fdinfo addr; print(" flags ", addr.flags, "\n"); print(" oflags ", addr.oflags, "\n"); print(" name ", addr.name\X, "\n"); print(" buf ", addr.buf\X, "\n"); }; sizeofWaitmsg = 112; aggr Waitmsg { 'a' 0 pid; 'a' 12 time; 'a' 48 msg; }; defn Waitmsg(addr) { complex Waitmsg addr; print(" pid ", addr.pid, "\n"); print(" time ", addr.time, "\n"); print(" msg ", addr.msg, "\n"); }; sizeof_5_ = 8; aggr _5_ { 'D' 0 hlength; 'D' 4 length; }; defn _5_(addr) { complex _5_ addr; print(" hlength ", addr.hlength, "\n"); print(" length ", addr.length, "\n"); }; sizeof_6_ = 8; aggr _6_ { 'a' 0 clength; 'D' 0 vlength; { 'D' 0 hlength; 'D' 4 length; }; }; defn _6_(addr) { complex _6_ addr; print(" clength ", addr.clength, "\n"); print(" vlength ", addr.vlength, "\n"); print("_5_ {\n"); _5_(addr+0); print("}\n"); }; sizeofQid = 8; aggr Qid { 'U' 0 path; 'U' 4 vers; }; defn Qid(addr) { complex Qid addr; print(" path ", addr.path, "\n"); print(" vers ", addr.vers, "\n"); }; sizeofDir = 116; aggr Dir { 'a' 0 name; 'a' 28 uid; 'a' 56 gid; Qid 84 qid; 'U' 92 mode; 'D' 96 atime; 'D' 100 mtime; { 'a' 104 clength; 'D' 104 vlength; { 'D' 104 hlength; 'D' 108 length; }; }; 'd' 112 type; 'd' 114 dev; }; defn Dir(addr) { complex Dir addr; print(" name ", addr.name, "\n"); print(" uid ", addr.uid, "\n"); print(" gid ", addr.gid, "\n"); print("Qid qid {\n"); Qid(addr.qid); print("}\n"); print(" mode ", addr.mode, "\n"); print(" atime ", addr.atime, "\n"); print(" mtime ", addr.mtime, "\n"); print("_6_ {\n"); _6_(addr+104); print("}\n"); print(" type ", addr.type, "\n"); print(" dev ", addr.dev, "\n"); }; sizeof_7_ = 28; aggr _7_ { 'u' 0 oldtag; Qid 4 qid; 'a' 12 rauth; }; defn _7_(addr) { complex _7_ addr; print(" oldtag ", addr.oldtag, "\n"); print("Qid qid {\n"); Qid(addr.qid); print("}\n"); print(" rauth ", addr.rauth, "\n"); }; sizeof_8_ = 144; aggr _8_ { 'a' 0 uname; 'a' 28 aname; 'a' 56 ticket; 'a' 128 auth; }; defn _8_(addr) { complex _8_ addr; print(" uname ", addr.uname, "\n"); print(" aname ", addr.aname, "\n"); print(" ticket ", addr.ticket, "\n"); print(" auth ", addr.auth, "\n"); }; sizeof_9_ = 148; aggr _9_ { 'a' 0 ename; 'a' 64 authid; 'a' 92 authdom; 'a' 140 chal; }; defn _9_(addr) { complex _9_ addr; print(" ename ", addr.ename, "\n"); print(" authid ", addr.authid, "\n"); print(" authdom ", addr.authdom, "\n"); print(" chal ", addr.chal, "\n"); }; sizeof_10_ = 36; aggr _10_ { 'D' 0 perm; 'd' 4 newfid; 'a' 6 name; 'C' 34 mode; }; defn _10_(addr) { complex _10_ addr; print(" perm ", addr.perm, "\n"); print(" newfid ", addr.newfid, "\n"); print(" name ", addr.name, "\n"); print(" mode ", addr.mode, "\n"); }; sizeof_11_ = 12; aggr _11_ { 'D' 0 offset; 'D' 4 count; 'X' 8 data; }; defn _11_(addr) { complex _11_ addr; print(" offset ", addr.offset, "\n"); print(" count ", addr.count, "\n"); print(" data ", addr.data\X, "\n"); }; sizeof_12_ = 116; aggr _12_ { 'a' 0 stat; }; defn _12_(addr) { complex _12_ addr; print(" stat ", addr.stat, "\n"); }; sizeof_13_ = 148; aggr _13_ { { 'u' 0 oldtag; Qid 4 qid; 'a' 12 rauth; }; { 'a' 0 uname; 'a' 28 aname; 'a' 56 ticket; 'a' 128 auth; }; { 'a' 0 ename; 'a' 64 authid; 'a' 92 authdom; 'a' 140 chal; }; { 'D' 0 perm; 'd' 4 newfid; 'a' 6 name; 'C' 34 mode; }; { 'D' 0 offset; 'D' 4 count; 'X' 8 data; }; { 'a' 0 stat; }; }; defn _13_(addr) { complex _13_ addr; print("_7_ {\n"); _7_(addr+0); print("}\n"); print("_8_ {\n"); _8_(addr+0); print("}\n"); print("_9_ {\n"); _9_(addr+0); print("}\n"); print("_10_ {\n"); _10_(addr+0); print("}\n"); print("_11_ {\n"); _11_(addr+0); print("}\n"); print("_12_ {\n"); _12_(addr+0); print("}\n"); }; sizeofFcall = 156; aggr Fcall { 'C' 0 type; 'd' 2 fid; 'u' 4 tag; { { 'u' 8 oldtag; Qid 12 qid; 'a' 20 rauth; }; { 'a' 8 uname; 'a' 36 aname; 'a' 64 ticket; 'a' 136 auth; }; { 'a' 8 ename; 'a' 72 authid; 'a' 100 authdom; 'a' 148 chal; }; { 'D' 8 perm; 'd' 12 newfid; 'a' 14 name; 'C' 42 mode; }; { 'D' 8 offset; 'D' 12 count; 'X' 16 data; }; { 'a' 8 stat; }; }; }; defn Fcall(addr) { complex Fcall addr; print(" type ", addr.type, "\n"); print(" fid ", addr.fid, "\n"); print(" tag ", addr.tag, "\n"); print("_13_ {\n"); _13_(addr+8); print("}\n"); }; sizeofMuxbuf = 16400; aggr Muxbuf { 'D' 0 n; 'X' 4 putnext; 'X' 8 getnext; 'b' 12 fd; 'b' 13 eof; 'b' 14 roomwait; 'b' 15 datawait; 'a' 16 data; }; defn Muxbuf(addr) { complex Muxbuf addr; print(" n ", addr.n, "\n"); print(" putnext ", addr.putnext\X, "\n"); print(" getnext ", addr.getnext\X, "\n"); print(" fd ", addr.fd, "\n"); print(" eof ", addr.eof, "\n"); print(" roomwait ", addr.roomwait, "\n"); print(" datawait ", addr.datawait, "\n"); print(" data ", addr.data, "\n"); }; sizeofFdinfo = 16; aggr Fdinfo { 'U' 0 flags; 'U' 4 oflags; 'X' 8 name; 'A' Muxbuf 12 buf; }; defn Fdinfo(addr) { complex Fdinfo addr; print(" flags ", addr.flags, "\n"); print(" oflags ", addr.oflags, "\n"); print(" name ", addr.name\X, "\n"); print(" buf ", addr.buf\X, "\n"); }; sizeofWaitmsg = 112; aggr Waitmsg { 'a' 0 pid; 'a' 12 time; 'a' 48 msg; }; defn Waitmsg(addr) { complex Waitmsg addr; print(" pid ", addr.pid, "\n"); print(" time ", addr.time, "\n"); print(" msg ", addr.msg, "\n"); }; sizeofMuxseg = 65640; aggr Muxseg { _4_ 0 lock; 'D' 4 curfds; 'D' 8 selwait; 'D' 12 waittime; fd_set 16 rwant; fd_set 28 ewant; 'a' 40 bufs; }; defn Muxseg(addr) { complex Muxseg addr; print("_4_ lock {\n"); _4_(addr.lock); print("}\n"); print(" curfds ", addr.curfds, "\n"); print(" selwait ", addr.selwait, "\n"); print(" waittime ", addr.waittime, "\n"); print("fd_set rwant {\n"); fd_set(addr.rwant); print("}\n"); print("fd_set ewant {\n"); fd_set(addr.ewant); print("}\n"); print(" bufs ", addr.bufs, "\n"); }; complex Muxseg mux; complex Fdinfo _startbuf:f; complex Muxbuf _startbuf:b; complex Muxbuf _copyproc:b; complex Muxbuf _readbuf:b; complex fd_set select:rfds; complex fd_set select:wfds; complex fd_set select:efds; complex timeval select:timeout; complex Fdinfo select:f; complex Muxbuf select:b;