plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

cache.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;