URI:
       tcache.acid - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tcache.acid (11960B)
       ---
            1 sizeof_1_ = 8;
            2 aggr _1_
            3 {
            4         'U' 0 lo;
            5         'U' 4 hi;
            6 };
            7 
            8 defn
            9 _1_(addr) {
           10         complex _1_ addr;
           11         print("        lo        ", addr.lo, "\n");
           12         print("        hi        ", addr.hi, "\n");
           13 };
           14 
           15 sizeofFPdbleword = 8;
           16 aggr FPdbleword
           17 {
           18         'F' 0 x;
           19         {
           20         'U' 0 lo;
           21         'U' 4 hi;
           22         };
           23 };
           24 
           25 defn
           26 FPdbleword(addr) {
           27         complex FPdbleword addr;
           28         print("        x        ", addr.x, "\n");
           29         print("_1_ {\n");
           30                 _1_(addr+0);
           31         print("}\n");
           32 };
           33 
           34 UTFmax = 3;
           35 Runesync = 128;
           36 Runeself = 128;
           37 Runeerror = 128;
           38 sizeofFmt = 48;
           39 aggr Fmt
           40 {
           41         'b' 0 runes;
           42         'X' 4 start;
           43         'X' 8 to;
           44         'X' 12 stop;
           45         'X' 16 flush;
           46         'X' 20 farg;
           47         'D' 24 nfmt;
           48         'X' 28 args;
           49         'D' 32 r;
           50         'D' 36 width;
           51         'D' 40 prec;
           52         'U' 44 flags;
           53 };
           54 
           55 defn
           56 Fmt(addr) {
           57         complex Fmt addr;
           58         print("        runes        ", addr.runes, "\n");
           59         print("        start        ", addr.start\X, "\n");
           60         print("        to        ", addr.to\X, "\n");
           61         print("        stop        ", addr.stop\X, "\n");
           62         print("        flush        ", addr.flush\X, "\n");
           63         print("        farg        ", addr.farg\X, "\n");
           64         print("        nfmt        ", addr.nfmt, "\n");
           65         print("        args        ", addr.args\X, "\n");
           66         print("        r        ", addr.r, "\n");
           67         print("        width        ", addr.width, "\n");
           68         print("        prec        ", addr.prec, "\n");
           69         print("        flags        ", addr.flags, "\n");
           70 };
           71 
           72 FmtWidth = 1;
           73 FmtLeft = 2;
           74 FmtPrec = 4;
           75 FmtSharp = 8;
           76 FmtSpace = 16;
           77 FmtSign = 32;
           78 FmtZero = 64;
           79 FmtUnsigned = 128;
           80 FmtShort = 256;
           81 FmtLong = 512;
           82 FmtVLong = 1024;
           83 FmtComma = 2048;
           84 FmtByte = 4096;
           85 FmtFlag = 8192;
           86 sizeofTm = 40;
           87 aggr Tm
           88 {
           89         'D' 0 sec;
           90         'D' 4 min;
           91         'D' 8 hour;
           92         'D' 12 mday;
           93         'D' 16 mon;
           94         'D' 20 year;
           95         'D' 24 wday;
           96         'D' 28 yday;
           97         'a' 32 zone;
           98         'D' 36 tzoff;
           99 };
          100 
          101 defn
          102 Tm(addr) {
          103         complex Tm addr;
          104         print("        sec        ", addr.sec, "\n");
          105         print("        min        ", addr.min, "\n");
          106         print("        hour        ", addr.hour, "\n");
          107         print("        mday        ", addr.mday, "\n");
          108         print("        mon        ", addr.mon, "\n");
          109         print("        year        ", addr.year, "\n");
          110         print("        wday        ", addr.wday, "\n");
          111         print("        yday        ", addr.yday, "\n");
          112         print("        zone        ", addr.zone, "\n");
          113         print("        tzoff        ", addr.tzoff, "\n");
          114 };
          115 
          116 PNPROC = 1;
          117 PNGROUP = 2;
          118 sizeofLock = 4;
          119 aggr Lock
          120 {
          121         'D' 0 val;
          122 };
          123 
          124 defn
          125 Lock(addr) {
          126         complex Lock addr;
          127         print("        val        ", addr.val, "\n");
          128 };
          129 
          130 sizeofQLp = 12;
          131 aggr QLp
          132 {
          133         'D' 0 inuse;
          134         'A' QLp 4 next;
          135         'C' 8 state;
          136 };
          137 
          138 defn
          139 QLp(addr) {
          140         complex QLp addr;
          141         print("        inuse        ", addr.inuse, "\n");
          142         print("        next        ", addr.next\X, "\n");
          143         print("        state        ", addr.state, "\n");
          144 };
          145 
          146 sizeofQLock = 16;
          147 aggr QLock
          148 {
          149         Lock 0 lock;
          150         'D' 4 locked;
          151         'A' QLp 8 $head;
          152         'A' QLp 12 $tail;
          153 };
          154 
          155 defn
          156 QLock(addr) {
          157         complex QLock addr;
          158         print("Lock lock {\n");
          159         Lock(addr.lock);
          160         print("}\n");
          161         print("        locked        ", addr.locked, "\n");
          162         print("        $head        ", addr.$head\X, "\n");
          163         print("        $tail        ", addr.$tail\X, "\n");
          164 };
          165 
          166 sizeofRWLock = 20;
          167 aggr RWLock
          168 {
          169         Lock 0 lock;
          170         'D' 4 readers;
          171         'D' 8 writer;
          172         'A' QLp 12 $head;
          173         'A' QLp 16 $tail;
          174 };
          175 
          176 defn
          177 RWLock(addr) {
          178         complex RWLock addr;
          179         print("Lock lock {\n");
          180         Lock(addr.lock);
          181         print("}\n");
          182         print("        readers        ", addr.readers, "\n");
          183         print("        writer        ", addr.writer, "\n");
          184         print("        $head        ", addr.$head\X, "\n");
          185         print("        $tail        ", addr.$tail\X, "\n");
          186 };
          187 
          188 sizeofRendez = 12;
          189 aggr Rendez
          190 {
          191         'A' QLock 0 l;
          192         'A' QLp 4 $head;
          193         'A' QLp 8 $tail;
          194 };
          195 
          196 defn
          197 Rendez(addr) {
          198         complex Rendez addr;
          199         print("        l        ", addr.l\X, "\n");
          200         print("        $head        ", addr.$head\X, "\n");
          201         print("        $tail        ", addr.$tail\X, "\n");
          202 };
          203 
          204 sizeofNetConnInfo = 28;
          205 aggr NetConnInfo
          206 {
          207         'X' 0 dir;
          208         'X' 4 root;
          209         'X' 8 spec;
          210         'X' 12 lsys;
          211         'X' 16 lserv;
          212         'X' 20 rsys;
          213         'X' 24 rserv;
          214 };
          215 
          216 defn
          217 NetConnInfo(addr) {
          218         complex NetConnInfo addr;
          219         print("        dir        ", addr.dir\X, "\n");
          220         print("        root        ", addr.root\X, "\n");
          221         print("        spec        ", addr.spec\X, "\n");
          222         print("        lsys        ", addr.lsys\X, "\n");
          223         print("        lserv        ", addr.lserv\X, "\n");
          224         print("        rsys        ", addr.rsys\X, "\n");
          225         print("        rserv        ", addr.rserv\X, "\n");
          226 };
          227 
          228 RFNAMEG = 1;
          229 RFENVG = 2;
          230 RFFDG = 4;
          231 RFNOTEG = 8;
          232 RFPROC = 16;
          233 RFMEM = 32;
          234 RFNOWAIT = 64;
          235 RFCNAMEG = 1024;
          236 RFCENVG = 2048;
          237 RFCFDG = 4096;
          238 RFREND = 8192;
          239 RFNOMNT = 16384;
          240 sizeofQid = 16;
          241 aggr Qid
          242 {
          243         'W' 0 path;
          244         'U' 8 vers;
          245         'b' 12 type;
          246 };
          247 
          248 defn
          249 Qid(addr) {
          250         complex Qid addr;
          251         print("        path        ", addr.path, "\n");
          252         print("        vers        ", addr.vers, "\n");
          253         print("        type        ", addr.type, "\n");
          254 };
          255 
          256 sizeofDir = 60;
          257 aggr Dir
          258 {
          259         'u' 0 type;
          260         'U' 4 dev;
          261         Qid 8 qid;
          262         'U' 24 mode;
          263         'U' 28 atime;
          264         'U' 32 mtime;
          265         'V' 36 length;
          266         'X' 44 name;
          267         'X' 48 uid;
          268         'X' 52 gid;
          269         'X' 56 muid;
          270 };
          271 
          272 defn
          273 Dir(addr) {
          274         complex Dir addr;
          275         print("        type        ", addr.type, "\n");
          276         print("        dev        ", addr.dev, "\n");
          277         print("Qid qid {\n");
          278         Qid(addr.qid);
          279         print("}\n");
          280         print("        mode        ", addr.mode, "\n");
          281         print("        atime        ", addr.atime, "\n");
          282         print("        mtime        ", addr.mtime, "\n");
          283         print("        length        ", addr.length, "\n");
          284         print("        name        ", addr.name\X, "\n");
          285         print("        uid        ", addr.uid\X, "\n");
          286         print("        gid        ", addr.gid\X, "\n");
          287         print("        muid        ", addr.muid\X, "\n");
          288 };
          289 
          290 sizeofWaitmsg = 20;
          291 aggr Waitmsg
          292 {
          293         'D' 0 pid;
          294         'a' 4 time;
          295         'X' 16 msg;
          296 };
          297 
          298 defn
          299 Waitmsg(addr) {
          300         complex Waitmsg addr;
          301         print("        pid        ", addr.pid, "\n");
          302         print("        time        ", addr.time, "\n");
          303         print("        msg        ", addr.msg\X, "\n");
          304 };
          305 
          306 sizeofIOchunk = 8;
          307 aggr IOchunk
          308 {
          309         'X' 0 addr;
          310         'U' 4 len;
          311 };
          312 
          313 defn
          314 IOchunk(addr) {
          315         complex IOchunk addr;
          316         print("        addr        ", addr.addr\X, "\n");
          317         print("        len        ", addr.len, "\n");
          318 };
          319 
          320 MaxFragSize = 9216;
          321 VtScoreSize = 20;
          322 VtMaxStringSize = 1024;
          323 VtMaxFileSize = 281474976710655;
          324 VtMaxLumpSize = 57344;
          325 VtPointerDepth = 7;
          326 VtDataType = 0;
          327 VtDirType = 8;
          328 VtRootType = 16;
          329 VtMaxType = 17;
          330 VtTypeDepthMask = 7;
          331 VtEntryActive = 1;
          332 VtEntryDir = 2;
          333 VtEntryDepthShift = 2;
          334 VtEntryDepthMask = 28;
          335 VtEntryLocal = 32;
          336 VtEntrySize = 40;
          337 sizeofVtEntry = 40;
          338 aggr VtEntry
          339 {
          340         'U' 0 gen;
          341         'u' 4 psize;
          342         'u' 6 dsize;
          343         'b' 8 type;
          344         'b' 9 flags;
          345         'W' 12 size;
          346         'a' 20 score;
          347 };
          348 
          349 defn
          350 VtEntry(addr) {
          351         complex VtEntry addr;
          352         print("        gen        ", addr.gen, "\n");
          353         print("        psize        ", addr.psize, "\n");
          354         print("        dsize        ", addr.dsize, "\n");
          355         print("        type        ", addr.type, "\n");
          356         print("        flags        ", addr.flags, "\n");
          357         print("        size        ", addr.size, "\n");
          358         print("        score        ", addr.score, "\n");
          359 };
          360 
          361 sizeofVtRoot = 300;
          362 aggr VtRoot
          363 {
          364         'a' 0 name;
          365         'a' 128 type;
          366         'a' 256 score;
          367         'u' 276 blocksize;
          368         'a' 278 prev;
          369 };
          370 
          371 defn
          372 VtRoot(addr) {
          373         complex VtRoot addr;
          374         print("        name        ", addr.name, "\n");
          375         print("        type        ", addr.type, "\n");
          376         print("        score        ", addr.score, "\n");
          377         print("        blocksize        ", addr.blocksize, "\n");
          378         print("        prev        ", addr.prev, "\n");
          379 };
          380 
          381 VtRootSize = 300;
          382 VtRootVersion = 2;
          383 VtCryptoStrengthNone = 0;
          384 VtCryptoStrengthAuth = 1;
          385 VtCryptoStrengthWeak = 2;
          386 VtCryptoStrengthStrong = 3;
          387 VtCryptoNone = 0;
          388 VtCryptoSSL3 = 1;
          389 VtCryptoTLS1 = 2;
          390 VtCryptoMax = 3;
          391 VtCodecNone = 0;
          392 VtCodecDeflate = 1;
          393 VtCodecThwack = 2;
          394 VtCodecMax = 3;
          395 VtRerror = 1;
          396 VtTping = 2;
          397 VtRping = 3;
          398 VtThello = 4;
          399 VtRhello = 5;
          400 VtTgoodbye = 6;
          401 VtRgoodbye = 7;
          402 VtTauth0 = 8;
          403 VtRauth0 = 9;
          404 VtTauth1 = 10;
          405 VtRauth1 = 11;
          406 VtTread = 12;
          407 VtRread = 13;
          408 VtTwrite = 14;
          409 VtRwrite = 15;
          410 VtTsync = 16;
          411 VtRsync = 17;
          412 VtTmax = 18;
          413 sizeofVtFcall = 80;
          414 aggr VtFcall
          415 {
          416         'b' 0 type;
          417         'b' 1 tag;
          418         'X' 4 error;
          419         'X' 8 version;
          420         'X' 12 uid;
          421         'b' 16 strength;
          422         'X' 20 crypto;
          423         'U' 24 ncrypto;
          424         'X' 28 codec;
          425         'U' 32 ncodec;
          426         'X' 36 sid;
          427         'b' 40 rcrypto;
          428         'b' 41 rcodec;
          429         'X' 44 auth;
          430         'U' 48 nauth;
          431         'a' 52 score;
          432         'b' 72 dtype;
          433         'u' 74 count;
          434         'X' 76 data;
          435 };
          436 
          437 defn
          438 VtFcall(addr) {
          439         complex VtFcall addr;
          440         print("        type        ", addr.type, "\n");
          441         print("        tag        ", addr.tag, "\n");
          442         print("        error        ", addr.error\X, "\n");
          443         print("        version        ", addr.version\X, "\n");
          444         print("        uid        ", addr.uid\X, "\n");
          445         print("        strength        ", addr.strength, "\n");
          446         print("        crypto        ", addr.crypto\X, "\n");
          447         print("        ncrypto        ", addr.ncrypto, "\n");
          448         print("        codec        ", addr.codec\X, "\n");
          449         print("        ncodec        ", addr.ncodec, "\n");
          450         print("        sid        ", addr.sid\X, "\n");
          451         print("        rcrypto        ", addr.rcrypto, "\n");
          452         print("        rcodec        ", addr.rcodec, "\n");
          453         print("        auth        ", addr.auth\X, "\n");
          454         print("        nauth        ", addr.nauth, "\n");
          455         print("        score        ", addr.score, "\n");
          456         print("        dtype        ", addr.dtype, "\n");
          457         print("        count        ", addr.count, "\n");
          458         print("        data        ", addr.data\X, "\n");
          459 };
          460 
          461 VtStateAlloc = 0;
          462 VtStateConnected = 1;
          463 VtStateClosed = 2;
          464 sizeofVtConn = 1148;
          465 aggr VtConn
          466 {
          467         QLock 0 lk;
          468         QLock 16 inlk;
          469         QLock 32 outlk;
          470         'D' 48 debug;
          471         'D' 52 infd;
          472         'D' 56 outfd;
          473         'D' 60 muxer;
          474         'X' 64 writeq;
          475         'X' 68 readq;
          476         'D' 72 state;
          477         'a' 76 wait;
          478         'U' 1100 ntag;
          479         'U' 1104 nsleep;
          480         'X' 1108 part;
          481         Rendez 1112 tagrend;
          482         Rendez 1124 rpcfork;
          483         'X' 1136 version;
          484         'X' 1140 uid;
          485         'X' 1144 sid;
          486 };
          487 
          488 defn
          489 VtConn(addr) {
          490         complex VtConn addr;
          491         print("QLock lk {\n");
          492         QLock(addr.lk);
          493         print("}\n");
          494         print("QLock inlk {\n");
          495         QLock(addr.inlk);
          496         print("}\n");
          497         print("QLock outlk {\n");
          498         QLock(addr.outlk);
          499         print("}\n");
          500         print("        debug        ", addr.debug, "\n");
          501         print("        infd        ", addr.infd, "\n");
          502         print("        outfd        ", addr.outfd, "\n");
          503         print("        muxer        ", addr.muxer, "\n");
          504         print("        writeq        ", addr.writeq\X, "\n");
          505         print("        readq        ", addr.readq\X, "\n");
          506         print("        state        ", addr.state, "\n");
          507         print("        wait        ", addr.wait, "\n");
          508         print("        ntag        ", addr.ntag, "\n");
          509         print("        nsleep        ", addr.nsleep, "\n");
          510         print("        part        ", addr.part\X, "\n");
          511         print("Rendez tagrend {\n");
          512         Rendez(addr.tagrend);
          513         print("}\n");
          514         print("Rendez rpcfork {\n");
          515         Rendez(addr.rpcfork);
          516         print("}\n");
          517         print("        version        ", addr.version\X, "\n");
          518         print("        uid        ", addr.uid\X, "\n");
          519         print("        sid        ", addr.sid\X, "\n");
          520 };
          521 
          522 NilBlock = -1;
          523 sizeofVtBlock = 88;
          524 aggr VtBlock
          525 {
          526         'X' 0 c;
          527         QLock 4 lk;
          528         'X' 20 data;
          529         'a' 24 score;
          530         'b' 44 type;
          531         'D' 48 nlock;
          532         'D' 52 iostate;
          533         'D' 56 ref;
          534         'U' 60 heap;
          535         'A' VtBlock 64 next;
          536         'A' VtBlock 68 prev;
          537         'U' 72 used;
          538         'U' 76 used2;
          539         'U' 80 addr;
          540         'D' 84 decrypted;
          541 };
          542 
          543 defn
          544 VtBlock(addr) {
          545         complex VtBlock addr;
          546         print("        c        ", addr.c\X, "\n");
          547         print("QLock lk {\n");
          548         QLock(addr.lk);
          549         print("}\n");
          550         print("        data        ", addr.data\X, "\n");
          551         print("        score        ", addr.score, "\n");
          552         print("        type        ", addr.type, "\n");
          553         print("        nlock        ", addr.nlock, "\n");
          554         print("        iostate        ", addr.iostate, "\n");
          555         print("        ref        ", addr.ref, "\n");
          556         print("        heap        ", addr.heap, "\n");
          557         print("        next        ", addr.next\X, "\n");
          558         print("        prev        ", addr.prev\X, "\n");
          559         print("        used        ", addr.used, "\n");
          560         print("        used2        ", addr.used2, "\n");
          561         print("        addr        ", addr.addr, "\n");
          562         print("        decrypted        ", addr.decrypted, "\n");
          563 };
          564 
          565 VtOREAD = 0;
          566 VtOWRITE = 1;
          567 VtORDWR = 2;
          568 VtOCREATE = 256;
          569 BioLocal = 1;
          570 BioVenti = 2;
          571 BioReading = 3;
          572 BioWriting = 4;
          573 BioEmpty = 5;
          574 BioVentiError = 6;
          575 BadHeap = -1;
          576 sizeofVtCache = 60;
          577 aggr VtCache
          578 {
          579         QLock 0 lk;
          580         'A' VtConn 16 z;
          581         'U' 20 blocksize;
          582         'U' 24 now;
          583         'A' VtBlock 28 hash;
          584         'D' 32 nhash;
          585         'A' VtBlock 36 heap;
          586         'D' 40 nheap;
          587         'A' VtBlock 44 block;
          588         'D' 48 nblock;
          589         'X' 52 mem;
          590         'D' 56 mode;
          591 };
          592 
          593 defn
          594 VtCache(addr) {
          595         complex VtCache addr;
          596         print("QLock lk {\n");
          597         QLock(addr.lk);
          598         print("}\n");
          599         print("        z        ", addr.z\X, "\n");
          600         print("        blocksize        ", addr.blocksize, "\n");
          601         print("        now        ", addr.now, "\n");
          602         print("        hash        ", addr.hash\X, "\n");
          603         print("        nhash        ", addr.nhash, "\n");
          604         print("        heap        ", addr.heap\X, "\n");
          605         print("        nheap        ", addr.nheap, "\n");
          606         print("        block        ", addr.block\X, "\n");
          607         print("        nblock        ", addr.nblock, "\n");
          608         print("        mem        ", addr.mem\X, "\n");
          609         print("        mode        ", addr.mode, "\n");
          610 };
          611 
          612 complex VtConn vtcachealloc:z;
          613 complex VtCache vtcachealloc:c;
          614 complex VtBlock vtcachealloc:b;
          615 complex VtCache vtcachefree:c;
          616 complex VtCache vtcachedump:c;
          617 complex VtBlock vtcachedump:b;
          618 complex VtCache cachecheck:c;
          619 complex VtBlock cachecheck:b;
          620 complex VtBlock upheap:b;
          621 complex VtBlock upheap:bb;
          622 complex VtCache upheap:c;
          623 complex VtBlock downheap:b;
          624 complex VtBlock downheap:bb;
          625 complex VtCache downheap:c;
          626 complex VtBlock heapdel:b;
          627 complex VtCache heapdel:c;
          628 complex VtBlock heapins:b;
          629 complex VtCache vtcachebumpblock:c;
          630 complex VtBlock vtcachebumpblock:b;
          631 complex VtCache vtcachelocal:c;
          632 complex VtBlock vtcachelocal:b;
          633 complex VtCache vtcacheallocblock:c;
          634 complex VtBlock vtcacheallocblock:b;
          635 complex VtCache vtcacheglobal:c;
          636 complex VtBlock vtcacheglobal:b;
          637 complex VtBlock vtblockduplock:b;
          638 complex VtBlock vtblockput:b;
          639 complex VtCache vtblockput:c;
          640 complex VtBlock vtblockwrite:b;
          641 complex VtCache vtblockwrite:c;
          642 complex VtCache vtcacheblocksize:c;
          643 complex VtBlock vtblockcopy:b;
          644 complex VtBlock vtblockcopy:bb;