]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libventi/cache.acid
fix typo
[plan9front.git] / sys / src / libventi / cache.acid
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;