1sizeof_1_ = 8; 2aggr _1_ 3{ 4 'D' 0 lo; 5 'D' 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 'D' 0 lo; 21 'D' 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 = 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; 173RFNOMNT = 16384; 174sizeofQid = 16; 175aggr Qid 176{ 177 'W' 0 path; 178 'U' 8 vers; 179 'b' 12 type; 180}; 181 182defn 183Qid(addr) { 184 complex Qid addr; 185 print(" path ", addr.path, "\n"); 186 print(" vers ", addr.vers, "\n"); 187 print(" type ", addr.type, "\n"); 188}; 189 190sizeofDir = 60; 191aggr Dir 192{ 193 'u' 0 type; 194 'U' 4 dev; 195 Qid 8 qid; 196 'U' 24 mode; 197 'U' 28 atime; 198 'U' 32 mtime; 199 'V' 36 length; 200 'X' 44 name; 201 'X' 48 uid; 202 'X' 52 gid; 203 'X' 56 muid; 204}; 205 206defn 207Dir(addr) { 208 complex Dir addr; 209 print(" type ", addr.type, "\n"); 210 print(" dev ", addr.dev, "\n"); 211 print("Qid qid {\n"); 212 Qid(addr.qid); 213 print("}\n"); 214 print(" mode ", addr.mode, "\n"); 215 print(" atime ", addr.atime, "\n"); 216 print(" mtime ", addr.mtime, "\n"); 217 print(" length ", addr.length, "\n"); 218 print(" name ", addr.name\X, "\n"); 219 print(" uid ", addr.uid\X, "\n"); 220 print(" gid ", addr.gid\X, "\n"); 221 print(" muid ", addr.muid\X, "\n"); 222}; 223 224sizeofWaitmsg = 20; 225aggr Waitmsg 226{ 227 'D' 0 pid; 228 'a' 4 time; 229 'X' 16 msg; 230}; 231 232defn 233Waitmsg(addr) { 234 complex Waitmsg addr; 235 print(" pid ", addr.pid, "\n"); 236 print(" time ", addr.time, "\n"); 237 print(" msg ", addr.msg\X, "\n"); 238}; 239 240sizeofIOchunk = 8; 241aggr IOchunk 242{ 243 'X' 0 addr; 244 'U' 4 len; 245}; 246 247defn 248IOchunk(addr) { 249 complex IOchunk addr; 250 print(" addr ", addr.addr\X, "\n"); 251 print(" len ", addr.len, "\n"); 252}; 253 254sizeofPool = 88; 255aggr Pool 256{ 257 'X' 0 name; 258 'U' 4 maxsize; 259 'U' 8 cursize; 260 'U' 12 curfree; 261 'U' 16 curalloc; 262 'U' 20 minarena; 263 'U' 24 quantum; 264 'U' 28 minblock; 265 'X' 32 freeroot; 266 'X' 36 arenalist; 267 'X' 40 alloc; 268 'X' 44 merge; 269 'X' 48 move; 270 'D' 52 flags; 271 'D' 56 nfree; 272 'D' 60 lastcompact; 273 'X' 64 lock; 274 'X' 68 unlock; 275 'X' 72 print; 276 'X' 76 panic; 277 'X' 80 logstack; 278 'X' 84 private; 279}; 280 281defn 282Pool(addr) { 283 complex Pool addr; 284 print(" name ", addr.name\X, "\n"); 285 print(" maxsize ", addr.maxsize, "\n"); 286 print(" cursize ", addr.cursize, "\n"); 287 print(" curfree ", addr.curfree, "\n"); 288 print(" curalloc ", addr.curalloc, "\n"); 289 print(" minarena ", addr.minarena, "\n"); 290 print(" quantum ", addr.quantum, "\n"); 291 print(" minblock ", addr.minblock, "\n"); 292 print(" freeroot ", addr.freeroot\X, "\n"); 293 print(" arenalist ", addr.arenalist\X, "\n"); 294 print(" alloc ", addr.alloc\X, "\n"); 295 print(" merge ", addr.merge\X, "\n"); 296 print(" move ", addr.move\X, "\n"); 297 print(" flags ", addr.flags, "\n"); 298 print(" nfree ", addr.nfree, "\n"); 299 print(" lastcompact ", addr.lastcompact, "\n"); 300 print(" lock ", addr.lock\X, "\n"); 301 print(" unlock ", addr.unlock\X, "\n"); 302 print(" print ", addr.print\X, "\n"); 303 print(" panic ", addr.panic\X, "\n"); 304 print(" logstack ", addr.logstack\X, "\n"); 305 print(" private ", addr.private\X, "\n"); 306}; 307 308sizeofTraverse = 20; 309aggr Traverse 310{ 311 'X' 0 visit; 312 'D' 4 maxvisit; 313 'X' 8 a; 314 'X' 12 b; 315 'X' 16 prev; 316}; 317 318defn 319Traverse(addr) { 320 complex Traverse addr; 321 print(" visit ", addr.visit\X, "\n"); 322 print(" maxvisit ", addr.maxvisit, "\n"); 323 print(" a ", addr.a\X, "\n"); 324 print(" b ", addr.b\X, "\n"); 325 print(" prev ", addr.prev\X, "\n"); 326}; 327 328complex Pool mainmem; 329complex Pool imagmem; 330POOL_ANTAGONISM = 1; 331POOL_PARANOIA = 2; 332POOL_VERBOSITY = 4; 333POOL_DEBUGGING = 8; 334POOL_LOGGING = 16; 335POOL_TOLERANCE = 32; 336sizeofPrivate = 8; 337aggr Private 338{ 339 Lock 0 lk; 340 'D' 4 printfd; 341}; 342 343defn 344Private(addr) { 345 complex Private addr; 346 print("Lock lk {\n"); 347 Lock(addr.lk); 348 print("}\n"); 349 print(" printfd ", addr.printfd, "\n"); 350}; 351 352complex Private sbrkmempriv; 353complex Pool sbrkmem; 354complex Pool mainmem; 355complex Pool imagmem; 356complex Pool plock:p; 357complex Private plock:pv; 358complex Pool punlock:p; 359complex Private punlock:pv; 360complex Pool pprint:p; 361complex Private pprint:pv; 362complex Pool ppanic:p; 363complex Private ppanic:pv; 364Npadlong = 2; 365MallocOffset = 0; 366ReallocOffset = 1; 367