sizeof_1_ = 8; aggr _1_ { 'D' 0 lo; 'D' 4 hi; }; defn _1_(addr) { complex _1_ addr; print(" lo ", addr.lo, "\n"); print(" hi ", addr.hi, "\n"); }; sizeofFPdbleword = 8; aggr FPdbleword { 'F' 0 x; { 'D' 0 lo; 'D' 4 hi; }; }; defn FPdbleword(addr) { complex FPdbleword addr; print(" x ", addr.x, "\n"); print("_1_ {\n"); _1_(addr+0); print("}\n"); }; UTFmax = 3; Runesync = 128; Runeself = 128; Runeerror = 128; sizeofFconv = 24; aggr Fconv { 'X' 0 out; 'X' 4 eout; 'D' 8 f1; 'D' 12 f2; 'D' 16 f3; 'D' 20 chr; }; defn Fconv(addr) { complex Fconv addr; print(" out ", addr.out\X, "\n"); print(" eout ", addr.eout\X, "\n"); print(" f1 ", addr.f1, "\n"); print(" f2 ", addr.f2, "\n"); print(" f3 ", addr.f3, "\n"); print(" chr ", addr.chr, "\n"); }; sizeofTm = 40; aggr Tm { 'D' 0 sec; 'D' 4 min; 'D' 8 hour; 'D' 12 mday; 'D' 16 mon; 'D' 20 year; 'D' 24 wday; 'D' 28 yday; 'a' 32 zone; 'D' 36 tzoff; }; defn Tm(addr) { complex Tm addr; print(" sec ", addr.sec, "\n"); print(" min ", addr.min, "\n"); print(" hour ", addr.hour, "\n"); print(" mday ", addr.mday, "\n"); print(" mon ", addr.mon, "\n"); print(" year ", addr.year, "\n"); print(" wday ", addr.wday, "\n"); print(" yday ", addr.yday, "\n"); print(" zone ", addr.zone, "\n"); print(" tzoff ", addr.tzoff, "\n"); }; PNPROC = 1; PNGROUP = 2; sizeofLock = 4; aggr Lock { 'D' 0 val; }; defn Lock(addr) { complex Lock addr; print(" val ", addr.val, "\n"); }; sizeofQLp = 12; aggr QLp { 'D' 0 inuse; 'A' QLp 4 next; 'C' 8 state; }; defn QLp(addr) { complex QLp addr; print(" inuse ", addr.inuse, "\n"); print(" next ", addr.next\X, "\n"); print(" state ", addr.state, "\n"); }; sizeofQLock = 16; aggr QLock { Lock 0 lock; 'D' 4 locked; 'A' QLp 8 $head; 'A' QLp 12 $tail; }; defn QLock(addr) { complex QLock addr; print("Lock lock {\n"); Lock(addr.lock); print("}\n"); print(" locked ", addr.locked, "\n"); print(" $head ", addr.$head\X, "\n"); print(" $tail ", addr.$tail\X, "\n"); }; sizeofRWLock = 20; aggr RWLock { Lock 0 lock; 'D' 4 readers; 'D' 8 writer; 'A' QLp 12 $head; 'A' QLp 16 $tail; }; defn RWLock(addr) { complex RWLock addr; print("Lock lock {\n"); Lock(addr.lock); print("}\n"); print(" readers ", addr.readers, "\n"); print(" writer ", addr.writer, "\n"); print(" $head ", addr.$head\X, "\n"); print(" $tail ", addr.$tail\X, "\n"); }; RFNAMEG = 1; RFENVG = 2; RFFDG = 4; RFNOTEG = 8; RFPROC = 16; RFMEM = 32; RFNOWAIT = 64; RFCNAMEG = 1024; RFCENVG = 2048; RFCFDG = 4096; RFREND = 8192; RFNOMNT = 16384; sizeofQid = 16; aggr Qid { 'W' 0 path; 'U' 8 vers; 'b' 12 type; }; defn Qid(addr) { complex Qid addr; print(" path ", addr.path, "\n"); print(" vers ", addr.vers, "\n"); print(" type ", addr.type, "\n"); }; sizeofDir = 60; aggr Dir { 'u' 0 type; 'U' 4 dev; Qid 8 qid; 'U' 24 mode; 'U' 28 atime; 'U' 32 mtime; 'V' 36 length; 'X' 44 name; 'X' 48 uid; 'X' 52 gid; 'X' 56 muid; }; defn Dir(addr) { complex Dir addr; print(" type ", addr.type, "\n"); print(" dev ", addr.dev, "\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(" length ", addr.length, "\n"); print(" name ", addr.name\X, "\n"); print(" uid ", addr.uid\X, "\n"); print(" gid ", addr.gid\X, "\n"); print(" muid ", addr.muid\X, "\n"); }; sizeofWaitmsg = 20; aggr Waitmsg { 'D' 0 pid; 'a' 4 time; 'X' 16 msg; }; defn Waitmsg(addr) { complex Waitmsg addr; print(" pid ", addr.pid, "\n"); print(" time ", addr.time, "\n"); print(" msg ", addr.msg\X, "\n"); }; sizeofIOchunk = 8; aggr IOchunk { 'X' 0 addr; 'U' 4 len; }; defn IOchunk(addr) { complex IOchunk addr; print(" addr ", addr.addr\X, "\n"); print(" len ", addr.len, "\n"); }; DOpaque = 4294967295; DTransparent = 0; DBlack = 255; DWhite = 4294967295; DRed = 4278190335; DGreen = 16711935; DBlue = 65535; DCyan = 16777215; DMagenta = 4278255615; DYellow = 4294902015; DPaleyellow = 4294945535; DDarkyellow = 4008615679; DDarkgreen = 1149781247; DPalegreen = 2868882175; DMedgreen = 2295105791; DDarkblue = 22015; DPalebluegreen = 2868903935; DPaleblue = 48127; DBluegreen = 8947967; DGreygreen = 1437248255; DPalegreygreen = 2666458879; DYellowgreen = 2576960767; DMedblue = 39423; DGreyblue = 6142975; DPalegreyblue = 1234427391; DPurpleblue = 2290666751; DNotacolor = 4294967040; DNofill = 4294967040; Displaybufsize = 8000; ICOSSCALE = 1024; Borderwidth = 4; Refbackup = 0; Refnone = 1; Refmesg = 2; Endsquare = 0; Enddisc = 1; Endarrow = 2; Endmask = 31; CRed = 0; CGreen = 1; CBlue = 2; CGrey = 3; CAlpha = 4; CMap = 5; CIgnore = 6; NChan = 7; GREY1 = 49; GREY2 = 50; GREY4 = 52; GREY8 = 56; CMAP8 = 88; RGB15 = 1627723045; RGB16 = 333349; RGB24 = 530472; RGBA32 = 135800904; ARGB32 = 1208490024; XRGB32 = 1745360936; sizeofPoint = 8; aggr Point { 'D' 0 x; 'D' 4 y; }; defn Point(addr) { complex Point addr; print(" x ", addr.x, "\n"); print(" y ", addr.y, "\n"); }; sizeofRectangle = 16; aggr Rectangle { Point 0 min; Point 8 max; }; defn Rectangle(addr) { complex Rectangle addr; print("Point min {\n"); Point(addr.min); print("}\n"); print("Point max {\n"); Point(addr.max); print("}\n"); }; sizeofScreen = 16; aggr Screen { 'X' 0 display; 'D' 4 id; 'X' 8 image; 'X' 12 fill; }; defn Screen(addr) { complex Screen addr; print(" display ", addr.display\X, "\n"); print(" id ", addr.id, "\n"); print(" image ", addr.image\X, "\n"); print(" fill ", addr.fill\X, "\n"); }; sizeofDisplay = 176; aggr Display { QLock 0 qlock; 'D' 16 locking; 'D' 20 dirno; 'D' 24 fd; 'D' 28 reffd; 'D' 32 ctlfd; 'D' 36 imageid; 'D' 40 $local; 'D' 44 depth; 'U' 48 chan; 'X' 52 error; 'X' 56 devdir; 'X' 60 windir; 'a' 64 oldlabel; 'U' 128 dataqid; 'X' 132 white; 'X' 136 black; 'X' 140 image; 'X' 144 opaque; 'X' 148 transparent; 'X' 152 buf; 'D' 156 bufsize; 'X' 160 bufp; 'X' 164 defaultfont; 'X' 168 defaultsubfont; 'X' 172 windows; }; defn Display(addr) { complex Display addr; print("QLock qlock {\n"); QLock(addr.qlock); print("}\n"); print(" locking ", addr.locking, "\n"); print(" dirno ", addr.dirno, "\n"); print(" fd ", addr.fd, "\n"); print(" reffd ", addr.reffd, "\n"); print(" ctlfd ", addr.ctlfd, "\n"); print(" imageid ", addr.imageid, "\n"); print(" $local ", addr.$local, "\n"); print(" depth ", addr.depth, "\n"); print(" chan ", addr.chan, "\n"); print(" error ", addr.error\X, "\n"); print(" devdir ", addr.devdir\X, "\n"); print(" windir ", addr.windir\X, "\n"); print(" oldlabel ", addr.oldlabel, "\n"); print(" dataqid ", addr.dataqid, "\n"); print(" white ", addr.white\X, "\n"); print(" black ", addr.black\X, "\n"); print(" image ", addr.image\X, "\n"); print(" opaque ", addr.opaque\X, "\n"); print(" transparent ", addr.transparent\X, "\n"); print(" buf ", addr.buf\X, "\n"); print(" bufsize ", addr.bufsize, "\n"); print(" bufp ", addr.bufp\X, "\n"); print(" defaultfont ", addr.defaultfont\X, "\n"); print(" defaultsubfont ", addr.defaultsubfont\X, "\n"); print(" windows ", addr.windows\X, "\n"); }; sizeofImage = 60; aggr Image { 'A' Display 0 display; 'D' 4 id; Rectangle 8 r; Rectangle 24 clipr; 'D' 40 depth; 'U' 44 chan; 'D' 48 repl; 'A' Screen 52 screen; 'A' Image 56 next; }; defn Image(addr) { complex Image addr; print(" display ", addr.display\X, "\n"); print(" id ", addr.id, "\n"); print("Rectangle r {\n"); Rectangle(addr.r); print("}\n"); print("Rectangle clipr {\n"); Rectangle(addr.clipr); print("}\n"); print(" depth ", addr.depth, "\n"); print(" chan ", addr.chan, "\n"); print(" repl ", addr.repl, "\n"); print(" screen ", addr.screen\X, "\n"); print(" next ", addr.next\X, "\n"); }; sizeofRGB = 12; aggr RGB { 'U' 0 red; 'U' 4 green; 'U' 8 blue; }; defn RGB(addr) { complex RGB addr; print(" red ", addr.red, "\n"); print(" green ", addr.green, "\n"); print(" blue ", addr.blue, "\n"); }; sizeofFontchar = 8; aggr Fontchar { 'D' 0 x; 'b' 4 top; 'b' 5 bottom; 'C' 6 left; 'b' 7 width; }; defn Fontchar(addr) { complex Fontchar addr; print(" x ", addr.x, "\n"); print(" top ", addr.top, "\n"); print(" bottom ", addr.bottom, "\n"); print(" left ", addr.left, "\n"); print(" width ", addr.width, "\n"); }; sizeofSubfont = 20; aggr Subfont { 'X' 0 name; 'd' 4 n; 'b' 6 height; 'C' 7 ascent; 'A' Fontchar 8 info; 'A' Image 12 bits; 'D' 16 ref; }; defn Subfont(addr) { complex Subfont addr; print(" name ", addr.name\X, "\n"); print(" n ", addr.n, "\n"); print(" height ", addr.height, "\n"); print(" ascent ", addr.ascent, "\n"); print(" info ", addr.info\X, "\n"); print(" bits ", addr.bits\X, "\n"); print(" ref ", addr.ref, "\n"); }; LOG2NFCACHE = 6; NFCACHE = 64; NFLOOK = 5; NFSUBF = 2; MAXFCACHE = 1029; MAXSUBF = 50; DSUBF = 4; SUBFAGE = 10000; CACHEAGE = 10000; sizeofCachefont = 16; aggr Cachefont { 'u' 0 min; 'u' 2 max; 'D' 4 offset; 'X' 8 name; 'X' 12 subfontname; }; defn Cachefont(addr) { complex Cachefont addr; print(" min ", addr.min, "\n"); print(" max ", addr.max, "\n"); print(" offset ", addr.offset, "\n"); print(" name ", addr.name\X, "\n"); print(" subfontname ", addr.subfontname\X, "\n"); }; sizeofCacheinfo = 8; aggr Cacheinfo { 'u' 0 x; 'b' 2 width; 'C' 3 left; 'u' 4 value; 'u' 6 age; }; defn Cacheinfo(addr) { complex Cacheinfo addr; print(" x ", addr.x, "\n"); print(" width ", addr.width, "\n"); print(" left ", addr.left, "\n"); print(" value ", addr.value, "\n"); print(" age ", addr.age, "\n"); }; sizeofCachesubf = 12; aggr Cachesubf { 'U' 0 age; 'A' Cachefont 4 cf; 'A' Subfont 8 f; }; defn Cachesubf(addr) { complex Cachesubf addr; print(" age ", addr.age, "\n"); print(" cf ", addr.cf\X, "\n"); print(" f ", addr.f\X, "\n"); }; sizeofFont = 48; aggr Font { 'X' 0 name; 'A' Display 4 display; 'd' 8 height; 'd' 10 ascent; 'd' 12 width; 'd' 14 nsub; 'U' 16 age; 'D' 20 maxdepth; 'D' 24 ncache; 'D' 28 nsubf; 'A' Cacheinfo 32 cache; 'A' Cachesubf 36 subf; 'A' Cachefont 40 sub; 'A' Image 44 cacheimage; }; defn Font(addr) { complex Font addr; print(" name ", addr.name\X, "\n"); print(" display ", addr.display\X, "\n"); print(" height ", addr.height, "\n"); print(" ascent ", addr.ascent, "\n"); print(" width ", addr.width, "\n"); print(" nsub ", addr.nsub, "\n"); print(" age ", addr.age, "\n"); print(" maxdepth ", addr.maxdepth, "\n"); print(" ncache ", addr.ncache, "\n"); print(" nsubf ", addr.nsubf, "\n"); print(" cache ", addr.cache\X, "\n"); print(" subf ", addr.subf\X, "\n"); print(" sub ", addr.sub\X, "\n"); print(" cacheimage ", addr.cacheimage\X, "\n"); }; complex Point ZP; complex Rectangle ZR; complex Display display; complex Font font; complex Image screen; complex Screen _screen; sizeofChannel = 156; aggr Channel { 'D' 0 s; 'U' 4 f; 'U' 8 n; 'D' 12 e; 'D' 16 freed; 'U' 20 qused; 'a' 24 qentry; 'a' 152 v; }; defn Channel(addr) { complex Channel addr; print(" s ", addr.s, "\n"); print(" f ", addr.f, "\n"); print(" n ", addr.n, "\n"); print(" e ", addr.e, "\n"); print(" freed ", addr.freed, "\n"); print(" qused ", addr.qused, "\n"); print(" qentry ", addr.qentry, "\n"); print(" v ", addr.v, "\n"); }; sizeofAlt = 20; aggr Alt { 'A' Channel 0 c; 'X' 4 v; 'D' 8 op; 'A' Channel 12 tag; 'U' 16 q; }; defn Alt(addr) { complex Alt addr; print(" c ", addr.c\X, "\n"); print(" v ", addr.v\X, "\n"); print(" op ", addr.op, "\n"); print(" tag ", addr.tag\X, "\n"); print(" q ", addr.q, "\n"); }; sizeofRef = 4; aggr Ref { 'D' 0 ref; }; defn Ref(addr) { complex Ref addr; print(" ref ", addr.ref, "\n"); }; sizeofCursor = 72; aggr Cursor { Point 0 offset; 'a' 8 clr; 'a' 40 set; }; defn Cursor(addr) { complex Cursor addr; print("Point offset {\n"); Point(addr.offset); print("}\n"); print(" clr ", addr.clr, "\n"); print(" set ", addr.set, "\n"); }; sizeofMouse = 16; aggr Mouse { 'D' 0 buttons; Point 4 xy; 'U' 12 msec; }; defn Mouse(addr) { complex Mouse addr; print(" buttons ", addr.buttons, "\n"); print("Point xy {\n"); Point(addr.xy); print("}\n"); print(" msec ", addr.msec, "\n"); }; sizeofMousectl = 44; aggr Mousectl { { 'D' 0 buttons; Point 4 xy; 'U' 12 msec; }; 'A' Channel 16 c; 'A' Channel 20 resizec; 'X' 24 file; 'D' 28 mfd; 'D' 32 cfd; 'D' 36 pid; 'A' Image 40 image; }; defn Mousectl(addr) { complex Mousectl addr; print("Mouse {\n"); Mouse(addr+0); print("}\n"); print(" c ", addr.c\X, "\n"); print(" resizec ", addr.resizec\X, "\n"); print(" file ", addr.file\X, "\n"); print(" mfd ", addr.mfd, "\n"); print(" cfd ", addr.cfd, "\n"); print(" pid ", addr.pid, "\n"); print(" image ", addr.image\X, "\n"); }; sizeofMenu = 12; aggr Menu { 'X' 0 item; 'X' 4 gen; 'D' 8 lasthit; }; defn Menu(addr) { complex Menu addr; print(" item ", addr.item\X, "\n"); print(" gen ", addr.gen\X, "\n"); print(" lasthit ", addr.lasthit, "\n"); }; sizeofKeyboardctl = 20; aggr Keyboardctl { 'A' Channel 0 c; 'X' 4 file; 'D' 8 consfd; 'D' 12 ctlfd; 'D' 16 pid; }; defn Keyboardctl(addr) { complex Keyboardctl addr; print(" c ", addr.c\X, "\n"); print(" file ", addr.file\X, "\n"); print(" consfd ", addr.consfd, "\n"); print(" ctlfd ", addr.ctlfd, "\n"); print(" pid ", addr.pid, "\n"); }; KF = 61440; Khome = 61453; Kup = 61454; Kpgup = 61455; Kprint = 61456; Kleft = 61457; Kright = 61458; Kdown = 128; Kview = 128; Kpgdown = 61459; Kins = 61460; Kend = 13; Kalt = 61461; Kshift = 61462; Kctl = 61463; BACK = 0; HIGH = 1; BORD = 2; TEXT = 3; HTEXT = 4; NCOL = 5; sizeof_2_ = 4; aggr _2_ { 'd' 0 bc; 'd' 2 minwid; }; defn _2_(addr) { complex _2_ addr; print(" bc ", addr.bc, "\n"); print(" minwid ", addr.minwid, "\n"); }; sizeof_3_ = 4; aggr _3_ { 'X' 0 ptr; { 'd' 0 bc; 'd' 2 minwid; }; }; defn _3_(addr) { complex _3_ addr; print(" ptr ", addr.ptr\X, "\n"); print("_2_ {\n"); _2_(addr+0); print("}\n"); }; sizeofFrbox = 12; aggr Frbox { 'D' 0 wid; 'D' 4 nrune; { 'X' 8 ptr; { 'd' 8 bc; 'd' 10 minwid; }; }; }; defn Frbox(addr) { complex Frbox addr; print(" wid ", addr.wid, "\n"); print(" nrune ", addr.nrune, "\n"); print("_3_ {\n"); _3_(addr+8); print("}\n"); }; complex Font font; complex Display display; sizeofFrame = 108; aggr Frame { 'A' Font 0 font; 'A' Display 4 display; 'A' Image 8 b; 'a' 12 cols; Rectangle 32 r; Rectangle 48 entire; 'X' 64 scroll; 'A' Frbox 68 box; 'U' 72 p0; 'U' 76 p1; 'u' 80 nbox; 'u' 82 nalloc; 'u' 84 maxtab; 'u' 86 nchars; 'u' 88 nlines; 'u' 90 maxlines; 'u' 92 lastlinefull; 'u' 94 modified; 'A' Image 96 tick; 'A' Image 100 tickback; 'D' 104 ticked; }; defn Frame(addr) { complex Frame addr; print(" font ", addr.font\X, "\n"); print(" display ", addr.display\X, "\n"); print(" b ", addr.b\X, "\n"); print(" cols ", addr.cols, "\n"); print("Rectangle r {\n"); Rectangle(addr.r); print("}\n"); print("Rectangle entire {\n"); Rectangle(addr.entire); print("}\n"); print(" scroll ", addr.scroll\X, "\n"); print(" box ", addr.box\X, "\n"); print(" p0 ", addr.p0, "\n"); print(" p1 ", addr.p1, "\n"); print(" nbox ", addr.nbox, "\n"); print(" nalloc ", addr.nalloc, "\n"); print(" maxtab ", addr.maxtab, "\n"); print(" nchars ", addr.nchars, "\n"); print(" nlines ", addr.nlines, "\n"); print(" maxlines ", addr.maxlines, "\n"); print(" lastlinefull ", addr.lastlinefull, "\n"); print(" modified ", addr.modified, "\n"); print(" tick ", addr.tick\X, "\n"); print(" tickback ", addr.tickback\X, "\n"); print(" ticked ", addr.ticked, "\n"); }; MAXCHLEN = 256; MAXNAMELEN = 256; MD5LEN = 16; ARok = 0; ARdone = 1; ARerror = 2; ARneedkey = 3; ARbadkey = 4; ARwritenext = 5; ARtoosmall = 6; ARtoobig = 7; ARrpcfailure = 8; ARphase = 9; AuthRpcMax = 4096; sizeofAuthRpc = 8204; aggr AuthRpc { 'D' 0 afd; 'a' 4 ibuf; 'a' 4100 obuf; 'X' 8196 arg; 'U' 8200 narg; }; defn AuthRpc(addr) { complex AuthRpc addr; print(" afd ", addr.afd, "\n"); print(" ibuf ", addr.ibuf, "\n"); print(" obuf ", addr.obuf, "\n"); print(" arg ", addr.arg\X, "\n"); print(" narg ", addr.narg, "\n"); }; sizeofAuthInfo = 20; aggr AuthInfo { 'X' 0 cuid; 'X' 4 suid; 'X' 8 cap; 'D' 12 nsecret; 'X' 16 secret; }; defn AuthInfo(addr) { complex AuthInfo addr; print(" cuid ", addr.cuid\X, "\n"); print(" suid ", addr.suid\X, "\n"); print(" cap ", addr.cap\X, "\n"); print(" nsecret ", addr.nsecret, "\n"); print(" secret ", addr.secret\X, "\n"); }; sizeofChalstate = 540; aggr Chalstate { 'X' 0 user; 'a' 4 chal; 'D' 260 nchal; 'X' 264 resp; 'D' 268 nresp; 'D' 272 afd; 'A' AuthRpc 276 rpc; 'a' 280 userbuf; 'D' 536 userinchal; }; defn Chalstate(addr) { complex Chalstate addr; print(" user ", addr.user\X, "\n"); print(" chal ", addr.chal, "\n"); print(" nchal ", addr.nchal, "\n"); print(" resp ", addr.resp\X, "\n"); print(" nresp ", addr.nresp, "\n"); print(" afd ", addr.afd, "\n"); print(" rpc ", addr.rpc\X, "\n"); print(" userbuf ", addr.userbuf, "\n"); print(" userinchal ", addr.userinchal, "\n"); }; sizeofChapreply = 20; aggr Chapreply { 'b' 0 id; 'a' 1 resp; }; defn Chapreply(addr) { complex Chapreply addr; print(" id ", addr.id, "\n"); print(" resp ", addr.resp, "\n"); }; sizeofMSchapreply = 48; aggr MSchapreply { 'a' 0 LMresp; 'a' 24 NTresp; }; defn MSchapreply(addr) { complex MSchapreply addr; print(" LMresp ", addr.LMresp, "\n"); print(" NTresp ", addr.NTresp, "\n"); }; sizeofUserPasswd = 8; aggr UserPasswd { 'X' 0 user; 'X' 4 passwd; }; defn UserPasswd(addr) { complex UserPasswd addr; print(" user ", addr.user\X, "\n"); print(" passwd ", addr.passwd\X, "\n"); }; sizeof_4_ = 8; aggr _4_ { 'U' 0 msize; 'X' 4 version; }; defn _4_(addr) { complex _4_ addr; print(" msize ", addr.msize, "\n"); print(" version ", addr.version\X, "\n"); }; sizeof_5_ = 4; aggr _5_ { 'u' 0 oldtag; }; defn _5_(addr) { complex _5_ addr; print(" oldtag ", addr.oldtag, "\n"); }; sizeof_6_ = 4; aggr _6_ { 'X' 0 ename; }; defn _6_(addr) { complex _6_ addr; print(" ename ", addr.ename\X, "\n"); }; sizeof_7_ = 20; aggr _7_ { Qid 0 qid; 'U' 16 iounit; }; defn _7_(addr) { complex _7_ addr; print("Qid qid {\n"); Qid(addr.qid); print("}\n"); print(" iounit ", addr.iounit, "\n"); }; sizeof_8_ = 16; aggr _8_ { Qid 0 aqid; }; defn _8_(addr) { complex _8_ addr; print("Qid aqid {\n"); Qid(addr.aqid); print("}\n"); }; sizeof_9_ = 12; aggr _9_ { 'U' 0 afid; 'X' 4 uname; 'X' 8 aname; }; defn _9_(addr) { complex _9_ addr; print(" afid ", addr.afid, "\n"); print(" uname ", addr.uname\X, "\n"); print(" aname ", addr.aname\X, "\n"); }; sizeof_10_ = 12; aggr _10_ { 'U' 0 perm; 'X' 4 name; 'b' 8 mode; }; defn _10_(addr) { complex _10_ addr; print(" perm ", addr.perm, "\n"); print(" name ", addr.name\X, "\n"); print(" mode ", addr.mode, "\n"); }; sizeof_11_ = 72; aggr _11_ { 'U' 0 newfid; 'u' 4 nwname; 'a' 8 wname; }; defn _11_(addr) { complex _11_ addr; print(" newfid ", addr.newfid, "\n"); print(" nwname ", addr.nwname, "\n"); print(" wname ", addr.wname, "\n"); }; sizeof_12_ = 260; aggr _12_ { 'u' 0 nwqid; 'a' 4 wqid; }; defn _12_(addr) { complex _12_ addr; print(" nwqid ", addr.nwqid, "\n"); print(" wqid ", addr.wqid, "\n"); }; sizeof_13_ = 16; aggr _13_ { 'V' 0 offset; 'U' 8 count; 'X' 12 data; }; defn _13_(addr) { complex _13_ addr; print(" offset ", addr.offset, "\n"); print(" count ", addr.count, "\n"); print(" data ", addr.data\X, "\n"); }; sizeof_14_ = 8; aggr _14_ { 'u' 0 nstat; 'X' 4 stat; }; defn _14_(addr) { complex _14_ addr; print(" nstat ", addr.nstat, "\n"); print(" stat ", addr.stat\X, "\n"); }; sizeof_15_ = 260; aggr _15_ { { 'U' 0 msize; 'X' 4 version; }; { 'u' 0 oldtag; }; { 'X' 0 ename; }; { Qid 0 qid; 'U' 16 iounit; }; { Qid 0 aqid; }; { 'U' 0 afid; 'X' 4 uname; 'X' 8 aname; }; { 'U' 0 perm; 'X' 4 name; 'b' 8 mode; }; { 'U' 0 newfid; 'u' 4 nwname; 'a' 8 wname; }; { 'u' 0 nwqid; 'a' 4 wqid; }; { 'V' 0 offset; 'U' 8 count; 'X' 12 data; }; { 'u' 0 nstat; 'X' 4 stat; }; }; defn _15_(addr) { complex _15_ addr; print("_4_ {\n"); _4_(addr+0); print("}\n"); print("_5_ {\n"); _5_(addr+0); print("}\n"); print("_6_ {\n"); _6_(addr+0); print("}\n"); 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"); print("_13_ {\n"); _13_(addr+0); print("}\n"); print("_14_ {\n"); _14_(addr+0); print("}\n"); }; sizeofFcall = 272; aggr Fcall { 'b' 0 type; 'U' 4 fid; 'u' 8 tag; { { 'U' 12 msize; 'X' 16 version; }; { 'u' 12 oldtag; }; { 'X' 12 ename; }; { Qid 12 qid; 'U' 28 iounit; }; { Qid 12 aqid; }; { 'U' 12 afid; 'X' 16 uname; 'X' 20 aname; }; { 'U' 12 perm; 'X' 16 name; 'b' 20 mode; }; { 'U' 12 newfid; 'u' 16 nwname; 'a' 20 wname; }; { 'u' 12 nwqid; 'a' 16 wqid; }; { 'V' 12 offset; 'U' 20 count; 'X' 24 data; }; { 'u' 12 nstat; 'X' 16 stat; }; }; }; defn Fcall(addr) { complex Fcall addr; print(" type ", addr.type, "\n"); print(" fid ", addr.fid, "\n"); print(" tag ", addr.tag, "\n"); print("_15_ {\n"); _15_(addr+12); print("}\n"); }; Tversion = 100; Rversion = 101; Tauth = 102; Rauth = 103; Tattach = 104; Rattach = 105; Terror = 106; Rerror = 107; Tflush = 108; Rflush = 109; Twalk = 110; Rwalk = 111; Topen = 112; Ropen = 113; Tcreate = 114; Rcreate = 115; Tread = 116; Rread = 117; Twrite = 118; Rwrite = 119; Tclunk = 120; Rclunk = 121; Tremove = 122; Rremove = 123; Tstat = 124; Rstat = 125; Twstat = 126; Rwstat = 127; Tmax = 128; sizeofPlumbmsg = 28; aggr Plumbmsg { 'X' 0 src; 'X' 4 dst; 'X' 8 wdir; 'X' 12 type; 'X' 16 attr; 'D' 20 ndata; 'X' 24 data; }; defn Plumbmsg(addr) { complex Plumbmsg addr; print(" src ", addr.src\X, "\n"); print(" dst ", addr.dst\X, "\n"); print(" wdir ", addr.wdir\X, "\n"); print(" type ", addr.type\X, "\n"); print(" attr ", addr.attr\X, "\n"); print(" ndata ", addr.ndata, "\n"); print(" data ", addr.data\X, "\n"); }; sizeofPlumbattr = 12; aggr Plumbattr { 'X' 0 name; 'X' 4 value; 'A' Plumbattr 8 next; }; defn Plumbattr(addr) { complex Plumbattr addr; print(" name ", addr.name\X, "\n"); print(" value ", addr.value\X, "\n"); print(" next ", addr.next\X, "\n"); }; Qdir = 0; Qcons = 1; Qconsctl = 2; Qcursor = 3; Qwdir = 4; Qwinid = 5; Qwinname = 6; Qkbdin = 7; Qlabel = 8; Qmouse = 9; Qnew = 10; Qscreen = 11; Qsnarf = 12; Qtext = 13; Qwctl = 14; Qwindow = 15; Qwsys = 16; Qwsysdir = 17; QMAX = 18; Selborder = 4; Unselborder = 1; Scrollwid = 12; Scrollgap = 4; BIG = 3; TRUE = 1; FALSE = 0; Wakeup = 0; Reshaped = 1; Moved = 2; Refresh = 3; Movemouse = 4; Rawon = 5; Rawoff = 6; Holdon = 7; Holdoff = 8; Deleted = 9; Exited = 10; sizeofWctlmesg = 24; aggr Wctlmesg { 'D' 0 type; Rectangle 4 r; 'A' Image 20 image; }; defn Wctlmesg(addr) { complex Wctlmesg addr; print(" type ", addr.type, "\n"); print("Rectangle r {\n"); Rectangle(addr.r); print("}\n"); print(" image ", addr.image\X, "\n"); }; sizeofConswritemesg = 4; aggr Conswritemesg { 'A' Channel 0 cw; }; defn Conswritemesg(addr) { complex Conswritemesg addr; print(" cw ", addr.cw\X, "\n"); }; sizeofConsreadmesg = 8; aggr Consreadmesg { 'A' Channel 0 c1; 'A' Channel 4 c2; }; defn Consreadmesg(addr) { complex Consreadmesg addr; print(" c1 ", addr.c1\X, "\n"); print(" c2 ", addr.c2\X, "\n"); }; sizeofMousereadmesg = 4; aggr Mousereadmesg { 'A' Channel 0 cm; }; defn Mousereadmesg(addr) { complex Mousereadmesg addr; print(" cm ", addr.cm\X, "\n"); }; sizeofStringpair = 8; aggr Stringpair { 'X' 0 s; 'D' 4 ns; }; defn Stringpair(addr) { complex Stringpair addr; print(" s ", addr.s\X, "\n"); print(" ns ", addr.ns, "\n"); }; sizeofMousestate = 20; aggr Mousestate { { 'D' 0 buttons; Point 4 xy; 'U' 12 msec; }; 'U' 16 counter; }; defn Mousestate(addr) { complex Mousestate addr; print("Mouse {\n"); Mouse(addr+0); print("}\n"); print(" counter ", addr.counter, "\n"); }; sizeofMouseinfo = 344; aggr Mouseinfo { 'a' 0 queue; 'D' 320 ri; 'D' 324 wi; 'U' 328 counter; 'U' 332 lastcounter; 'D' 336 lastb; 'b' 340 qfull; }; defn Mouseinfo(addr) { complex Mouseinfo addr; print(" queue ", addr.queue, "\n"); print(" ri ", addr.ri, "\n"); print(" wi ", addr.wi, "\n"); print(" counter ", addr.counter, "\n"); print(" lastcounter ", addr.lastcounter, "\n"); print(" lastb ", addr.lastb, "\n"); print(" qfull ", addr.qfull, "\n"); }; sizeofWindow = 784; aggr Window { { 'D' 0 ref; }; { Lock 4 lock; 'D' 8 locked; 'A' QLp 12 $head; 'A' QLp 16 $tail; }; { 'A' Font 20 font; 'A' Display 24 display; 'A' Image 28 b; 'a' 32 cols; Rectangle 52 r; Rectangle 68 entire; 'X' 84 scroll; 'A' Frbox 88 box; 'U' 92 p0; 'U' 96 p1; 'u' 100 nbox; 'u' 102 nalloc; 'u' 104 maxtab; 'u' 106 nchars; 'u' 108 nlines; 'u' 110 maxlines; 'u' 112 lastlinefull; 'u' 114 modified; 'A' Image 116 tick; 'A' Image 120 tickback; 'D' 124 ticked; }; 'A' Image 128 i; Mousectl 132 mc; Mouseinfo 176 mouse; 'A' Channel 520 ck; 'A' Channel 524 cctl; 'A' Channel 528 conswrite; 'A' Channel 532 consread; 'A' Channel 536 mouseread; 'A' Channel 540 wctlread; 'U' 544 nr; 'U' 548 maxr; 'X' 552 r; 'U' 556 nraw; 'X' 560 raw; 'U' 564 org; 'U' 568 q0; 'U' 572 q1; 'U' 576 qh; 'D' 580 id; 'a' 584 name; 'U' 616 namecount; Rectangle 620 scrollr; Rectangle 636 screenr; 'D' 652 resized; 'D' 656 wctlready; Rectangle 660 lastsr; 'D' 676 topped; 'D' 680 notefd; 'b' 684 scrolling; Cursor 688 cursor; 'A' Cursor 760 cursorp; 'b' 764 holding; 'b' 765 rawing; 'b' 766 ctlopen; 'b' 767 wctlopen; 'b' 768 deleted; 'b' 769 mouseopen; 'X' 772 label; 'D' 776 pid; 'X' 780 dir; }; defn Window(addr) { complex Window addr; print("Ref {\n"); Ref(addr+0); print("}\n"); print("QLock {\n"); QLock(addr+4); print("}\n"); print("Frame {\n"); Frame(addr+20); print("}\n"); print(" i ", addr.i\X, "\n"); print("Mousectl mc {\n"); Mousectl(addr.mc); print("}\n"); print("Mouseinfo mouse {\n"); Mouseinfo(addr.mouse); print("}\n"); print(" ck ", addr.ck\X, "\n"); print(" cctl ", addr.cctl\X, "\n"); print(" conswrite ", addr.conswrite\X, "\n"); print(" consread ", addr.consread\X, "\n"); print(" mouseread ", addr.mouseread\X, "\n"); print(" wctlread ", addr.wctlread\X, "\n"); print(" nr ", addr.nr, "\n"); print(" maxr ", addr.maxr, "\n"); print(" r ", addr.r\X, "\n"); print(" nraw ", addr.nraw, "\n"); print(" raw ", addr.raw\X, "\n"); print(" org ", addr.org, "\n"); print(" q0 ", addr.q0, "\n"); print(" q1 ", addr.q1, "\n"); print(" qh ", addr.qh, "\n"); print(" id ", addr.id, "\n"); print(" name ", addr.name, "\n"); print(" namecount ", addr.namecount, "\n"); print("Rectangle scrollr {\n"); Rectangle(addr.scrollr); print("}\n"); print("Rectangle screenr {\n"); Rectangle(addr.screenr); print("}\n"); print(" resized ", addr.resized, "\n"); print(" wctlready ", addr.wctlready, "\n"); print("Rectangle lastsr {\n"); Rectangle(addr.lastsr); print("}\n"); print(" topped ", addr.topped, "\n"); print(" notefd ", addr.notefd, "\n"); print(" scrolling ", addr.scrolling, "\n"); print("Cursor cursor {\n"); Cursor(addr.cursor); print("}\n"); print(" cursorp ", addr.cursorp\X, "\n"); print(" holding ", addr.holding, "\n"); print(" rawing ", addr.rawing, "\n"); print(" ctlopen ", addr.ctlopen, "\n"); print(" wctlopen ", addr.wctlopen, "\n"); print(" deleted ", addr.deleted, "\n"); print(" mouseopen ", addr.mouseopen, "\n"); print(" label ", addr.label\X, "\n"); print(" pid ", addr.pid, "\n"); print(" dir ", addr.dir\X, "\n"); }; sizeofDirtab = 16; aggr Dirtab { 'X' 0 name; 'b' 4 type; 'U' 8 qid; 'U' 12 perm; }; defn Dirtab(addr) { complex Dirtab addr; print(" name ", addr.name\X, "\n"); print(" type ", addr.type, "\n"); print(" qid ", addr.qid, "\n"); print(" perm ", addr.perm, "\n"); }; sizeofFid = 52; aggr Fid { 'D' 0 fid; 'D' 4 busy; 'D' 8 open; 'D' 12 mode; Qid 16 qid; 'A' Window 32 w; 'A' Dirtab 36 dir; 'A' Fid 40 next; 'D' 44 nrpart; 'a' 48 rpart; }; defn Fid(addr) { complex Fid addr; print(" fid ", addr.fid, "\n"); print(" busy ", addr.busy, "\n"); print(" open ", addr.open, "\n"); print(" mode ", addr.mode, "\n"); print("Qid qid {\n"); Qid(addr.qid); print("}\n"); print(" w ", addr.w\X, "\n"); print(" dir ", addr.dir\X, "\n"); print(" next ", addr.next\X, "\n"); print(" nrpart ", addr.nrpart, "\n"); print(" rpart ", addr.rpart, "\n"); }; sizeofXfid = 328; aggr Xfid { { 'D' 0 ref; }; 'A' Xfid 4 next; 'A' Xfid 8 free; { 'b' 12 type; 'U' 16 fid; 'u' 20 tag; { { 'U' 24 msize; 'X' 28 version; }; { 'u' 24 oldtag; }; { 'X' 24 ename; }; { Qid 24 qid; 'U' 40 iounit; }; { Qid 24 aqid; }; { 'U' 24 afid; 'X' 28 uname; 'X' 32 aname; }; { 'U' 24 perm; 'X' 28 name; 'b' 32 mode; }; { 'U' 24 newfid; 'u' 28 nwname; 'a' 32 wname; }; { 'u' 24 nwqid; 'a' 28 wqid; }; { 'V' 24 offset; 'U' 32 count; 'X' 36 data; }; { 'u' 24 nstat; 'X' 28 stat; }; }; }; 'A' Channel 284 c; 'A' Fid 288 f; 'X' 292 buf; 'X' 296 fs; QLock 300 active; 'D' 316 flushing; 'D' 320 flushtag; 'A' Channel 324 flushc; }; defn Xfid(addr) { complex Xfid addr; print("Ref {\n"); Ref(addr+0); print("}\n"); print(" next ", addr.next\X, "\n"); print(" free ", addr.free\X, "\n"); print("Fcall {\n"); Fcall(addr+12); print("}\n"); print(" c ", addr.c\X, "\n"); print(" f ", addr.f\X, "\n"); print(" buf ", addr.buf\X, "\n"); print(" fs ", addr.fs\X, "\n"); print("QLock active {\n"); QLock(addr.active); print("}\n"); print(" flushing ", addr.flushing, "\n"); print(" flushtag ", addr.flushtag, "\n"); print(" flushc ", addr.flushc\X, "\n"); }; Nhash = 16; sizeofFilsys = 84; aggr Filsys { 'D' 0 cfd; 'D' 4 sfd; 'D' 8 pid; 'X' 12 user; 'A' Channel 16 cxfidalloc; 'a' 20 fids; }; defn Filsys(addr) { complex Filsys addr; print(" cfd ", addr.cfd, "\n"); print(" sfd ", addr.sfd, "\n"); print(" pid ", addr.pid, "\n"); print(" user ", addr.user\X, "\n"); print(" cxfidalloc ", addr.cxfidalloc\X, "\n"); print(" fids ", addr.fids, "\n"); }; sizeofTimer = 16; aggr Timer { 'D' 0 dt; 'D' 4 cancel; 'A' Channel 8 c; 'A' Timer 12 next; }; defn Timer(addr) { complex Timer addr; print(" dt ", addr.dt, "\n"); print(" cancel ", addr.cancel, "\n"); print(" c ", addr.c\X, "\n"); print(" next ", addr.next\X, "\n"); }; complex Font font; complex Mousectl mousectl; complex Mouse mouse; complex Keyboardctl keyboardctl; complex Display display; complex Image view; complex Screen wscreen; complex Cursor boxcursor; complex Cursor crosscursor; complex Cursor sightcursor; complex Cursor whitearrow; complex Cursor query; complex Image background; complex Image lightgrey; complex Image red; complex Window window; complex Window wkeyboard; complex Window input; complex QLock all; complex Filsys filsys; complex Channel winclosechan; complex Channel deletechan; complex Channel exitchan; complex Channel winclosechan; complex Rectangle viewr; New = 0; Reshape = 1; Move = 2; Delete = 3; Hide = 4; Exit = 5; Cut = 0; Paste = 1; Snarf = 2; Plumb = 3; Send = 4; Scroll = 5; complex Menu menu2; complex Menu menu3; complex Image threadmain:i; complex Rectangle threadmain:r; complex Window whichcorner:w; complex Point whichcorner:p; complex Window cornercursor:w; complex Point cornercursor:p; complex Window winclosethread:w; complex Image deletethread:i; complex Window mousethread:oin; complex Window mousethread:w; complex Window mousethread:winput; complex Image mousethread:i; complex Rectangle mousethread:r; complex Point mousethread:xy; complex Mouse mousethread:tmp; MReshape = 0; MMouse = 1; NALT = 2; complex Image resized:im; complex Rectangle resized:r; complex Point resized:o; complex Point resized:n; complex Window resized:w; complex Window button2menu:w; complex Point onscreen:p; complex Image sweep:i; complex Image sweep:oi; complex Rectangle sweep:r; complex Point sweep:p0; complex Point sweep:p; complex Window drag:w; complex Rectangle drag:rp; complex Image drag:i; complex Image drag:ni; complex Point drag:p; complex Point drag:op; complex Point drag:d; complex Point drag:dm; complex Point drag:om; complex Rectangle drag:r; complex Rectangle whichrect:r; complex Point whichrect:p; complex Window bandsize:w; complex Image bandsize:i; complex Rectangle bandsize:r; complex Rectangle bandsize:or; complex Point bandsize:p; complex Point bandsize:startp; complex Window pointto:w; complex Window $delete:w; complex Window resize:w; complex Image resize:i; complex Window move:w; complex Image move:i; complex Rectangle move:r; complex Window whide:w; complex Image whide:i; complex Image wunhide:i; complex Window wunhide:w; complex Window hide:w; complex Window unhide:w; complex Image new:i; complex Window new:w; complex Mousectl new:mc; complex Channel new:cm; complex Channel new:ck; complex Channel new:cctl; complex Channel new:cpid;