]> git.lizzy.rs Git - plan9front.git/blob - sys/src/liboventi/plan9-thread.acid
bootrc: simplify bootargs splitting avoiding awk
[plan9front.git] / sys / src / liboventi / plan9-thread.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 = 65533;
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 Profoff = 0;
119 Profuser = 1;
120 Profkernel = 2;
121 Proftime = 3;
122 Profsample = 4;
123 sizeofLock = 4;
124 aggr Lock
125 {
126         'D' 0 val;
127 };
128
129 defn
130 Lock(addr) {
131         complex Lock addr;
132         print(" val     ", addr.val, "\n");
133 };
134
135 sizeofQLp = 12;
136 aggr QLp
137 {
138         'D' 0 inuse;
139         'A' QLp 4 next;
140         'C' 8 state;
141 };
142
143 defn
144 QLp(addr) {
145         complex QLp addr;
146         print(" inuse   ", addr.inuse, "\n");
147         print(" next    ", addr.next\X, "\n");
148         print(" state   ", addr.state, "\n");
149 };
150
151 sizeofQLock = 16;
152 aggr QLock
153 {
154         Lock 0 lock;
155         'D' 4 locked;
156         'A' QLp 8 $head;
157         'A' QLp 12 $tail;
158 };
159
160 defn
161 QLock(addr) {
162         complex QLock addr;
163         print("Lock lock {\n");
164         Lock(addr.lock);
165         print("}\n");
166         print(" locked  ", addr.locked, "\n");
167         print(" $head   ", addr.$head\X, "\n");
168         print(" $tail   ", addr.$tail\X, "\n");
169 };
170
171 sizeofRWLock = 20;
172 aggr RWLock
173 {
174         Lock 0 lock;
175         'D' 4 readers;
176         'D' 8 writer;
177         'A' QLp 12 $head;
178         'A' QLp 16 $tail;
179 };
180
181 defn
182 RWLock(addr) {
183         complex RWLock addr;
184         print("Lock lock {\n");
185         Lock(addr.lock);
186         print("}\n");
187         print(" readers ", addr.readers, "\n");
188         print(" writer  ", addr.writer, "\n");
189         print(" $head   ", addr.$head\X, "\n");
190         print(" $tail   ", addr.$tail\X, "\n");
191 };
192
193 sizeofRendez = 12;
194 aggr Rendez
195 {
196         'A' QLock 0 l;
197         'A' QLp 4 $head;
198         'A' QLp 8 $tail;
199 };
200
201 defn
202 Rendez(addr) {
203         complex Rendez addr;
204         print(" l       ", addr.l\X, "\n");
205         print(" $head   ", addr.$head\X, "\n");
206         print(" $tail   ", addr.$tail\X, "\n");
207 };
208
209 sizeofNetConnInfo = 36;
210 aggr NetConnInfo
211 {
212         'X' 0 dir;
213         'X' 4 root;
214         'X' 8 spec;
215         'X' 12 lsys;
216         'X' 16 lserv;
217         'X' 20 rsys;
218         'X' 24 rserv;
219         'X' 28 laddr;
220         'X' 32 raddr;
221 };
222
223 defn
224 NetConnInfo(addr) {
225         complex NetConnInfo addr;
226         print(" dir     ", addr.dir\X, "\n");
227         print(" root    ", addr.root\X, "\n");
228         print(" spec    ", addr.spec\X, "\n");
229         print(" lsys    ", addr.lsys\X, "\n");
230         print(" lserv   ", addr.lserv\X, "\n");
231         print(" rsys    ", addr.rsys\X, "\n");
232         print(" rserv   ", addr.rserv\X, "\n");
233         print(" laddr   ", addr.laddr\X, "\n");
234         print(" raddr   ", addr.raddr\X, "\n");
235 };
236
237 RFNAMEG = 1;
238 RFENVG = 2;
239 RFFDG = 4;
240 RFNOTEG = 8;
241 RFPROC = 16;
242 RFMEM = 32;
243 RFNOWAIT = 64;
244 RFCNAMEG = 1024;
245 RFCENVG = 2048;
246 RFCFDG = 4096;
247 RFREND = 8192;
248 RFNOMNT = 16384;
249 sizeofQid = 16;
250 aggr Qid
251 {
252         'W' 0 path;
253         'U' 8 vers;
254         'b' 12 type;
255 };
256
257 defn
258 Qid(addr) {
259         complex Qid addr;
260         print(" path    ", addr.path, "\n");
261         print(" vers    ", addr.vers, "\n");
262         print(" type    ", addr.type, "\n");
263 };
264
265 sizeofDir = 60;
266 aggr Dir
267 {
268         'u' 0 type;
269         'U' 4 dev;
270         Qid 8 qid;
271         'U' 24 mode;
272         'U' 28 atime;
273         'U' 32 mtime;
274         'V' 36 length;
275         'X' 44 name;
276         'X' 48 uid;
277         'X' 52 gid;
278         'X' 56 muid;
279 };
280
281 defn
282 Dir(addr) {
283         complex Dir addr;
284         print(" type    ", addr.type, "\n");
285         print(" dev     ", addr.dev, "\n");
286         print("Qid qid {\n");
287         Qid(addr.qid);
288         print("}\n");
289         print(" mode    ", addr.mode, "\n");
290         print(" atime   ", addr.atime, "\n");
291         print(" mtime   ", addr.mtime, "\n");
292         print(" length  ", addr.length, "\n");
293         print(" name    ", addr.name\X, "\n");
294         print(" uid     ", addr.uid\X, "\n");
295         print(" gid     ", addr.gid\X, "\n");
296         print(" muid    ", addr.muid\X, "\n");
297 };
298
299 sizeofWaitmsg = 20;
300 aggr Waitmsg
301 {
302         'D' 0 pid;
303         'a' 4 time;
304         'X' 16 msg;
305 };
306
307 defn
308 Waitmsg(addr) {
309         complex Waitmsg addr;
310         print(" pid     ", addr.pid, "\n");
311         print(" time    ", addr.time, "\n");
312         print(" msg     ", addr.msg\X, "\n");
313 };
314
315 sizeofIOchunk = 8;
316 aggr IOchunk
317 {
318         'X' 0 addr;
319         'U' 4 len;
320 };
321
322 defn
323 IOchunk(addr) {
324         complex IOchunk addr;
325         print(" addr    ", addr.addr\X, "\n");
326         print(" len     ", addr.len, "\n");
327 };
328
329 VtScoreSize = 20;
330 VtMaxLumpSize = 57344;
331 VtPointerDepth = 7;
332 VtEntrySize = 40;
333 VtRootSize = 300;
334 VtMaxStringSize = 1000;
335 VtAuthSize = 1024;
336 MaxFragSize = 9216;
337 VtMaxFileSize = 281474976710655;
338 VtRootVersion = 2;
339 VtCryptoStrengthNone = 0;
340 VtCryptoStrengthAuth = 1;
341 VtCryptoStrengthWeak = 2;
342 VtCryptoStrengthStrong = 3;
343 VtCryptoNone = 0;
344 VtCryptoSSL3 = 1;
345 VtCryptoTLS1 = 2;
346 VtCryptoMax = 3;
347 VtCodecNone = 0;
348 VtCodecDeflate = 1;
349 VtCodecThwack = 2;
350 VtCodecMax = 3;
351 VtErrType = 0;
352 VtRootType = 1;
353 VtDirType = 2;
354 VtPointerType0 = 3;
355 VtPointerType1 = 4;
356 VtPointerType2 = 5;
357 VtPointerType3 = 6;
358 VtPointerType4 = 7;
359 VtPointerType5 = 8;
360 VtPointerType6 = 9;
361 VtPointerType7 = 10;
362 VtPointerType8 = 11;
363 VtPointerType9 = 12;
364 VtDataType = 13;
365 VtMaxType = 14;
366 VtEntryActive = 1;
367 VtEntryDir = 2;
368 VtEntryDepthShift = 2;
369 VtEntryDepthMask = 28;
370 VtEntryLocal = 32;
371 VtEntryNoArchive = 64;
372 sizeofVtRoot = 300;
373 aggr VtRoot
374 {
375         'u' 0 version;
376         'a' 2 name;
377         'a' 130 type;
378         'a' 258 score;
379         'u' 278 blockSize;
380         'a' 280 prev;
381 };
382
383 defn
384 VtRoot(addr) {
385         complex VtRoot addr;
386         print(" version ", addr.version, "\n");
387         print(" name    ", addr.name, "\n");
388         print(" type    ", addr.type, "\n");
389         print(" score   ", addr.score, "\n");
390         print(" blockSize       ", addr.blockSize, "\n");
391         print(" prev    ", addr.prev, "\n");
392 };
393
394 sizeofVtEntry = 40;
395 aggr VtEntry
396 {
397         'U' 0 gen;
398         'u' 4 psize;
399         'u' 6 dsize;
400         'b' 8 depth;
401         'b' 9 flags;
402         'W' 12 size;
403         'a' 20 score;
404 };
405
406 defn
407 VtEntry(addr) {
408         complex VtEntry addr;
409         print(" gen     ", addr.gen, "\n");
410         print(" psize   ", addr.psize, "\n");
411         print(" dsize   ", addr.dsize, "\n");
412         print(" depth   ", addr.depth, "\n");
413         print(" flags   ", addr.flags, "\n");
414         print(" size    ", addr.size, "\n");
415         print(" score   ", addr.score, "\n");
416 };
417
418 sizeofVtServerVtbl = 16;
419 aggr VtServerVtbl
420 {
421         'X' 0 read;
422         'X' 4 write;
423         'X' 8 closing;
424         'X' 12 sync;
425 };
426
427 defn
428 VtServerVtbl(addr) {
429         complex VtServerVtbl addr;
430         print(" read    ", addr.read\X, "\n");
431         print(" write   ", addr.write\X, "\n");
432         print(" closing ", addr.closing\X, "\n");
433         print(" sync    ", addr.sync\X, "\n");
434 };
435
436 VtVersion01 = 1;
437 VtVersion02 = 2;
438 QueuingW = 0;
439 QueuingR = 1;
440 sizeofThread = 20;
441 aggr Thread
442 {
443         'D' 0 pid;
444         'D' 4 ref;
445         'X' 8 error;
446         'D' 12 state;
447         'A' Thread 16 next;
448 };
449
450 defn
451 Thread(addr) {
452         complex Thread addr;
453         print(" pid     ", addr.pid, "\n");
454         print(" ref     ", addr.ref, "\n");
455         print(" error   ", addr.error\X, "\n");
456         print(" state   ", addr.state, "\n");
457         print(" next    ", addr.next\X, "\n");
458 };
459
460 sizeofVtLock = 20;
461 aggr VtLock
462 {
463         Lock 0 lk;
464         'A' Thread 4 writer;
465         'D' 8 readers;
466         'A' Thread 12 qfirst;
467         'A' Thread 16 qlast;
468 };
469
470 defn
471 VtLock(addr) {
472         complex VtLock addr;
473         print("Lock lk {\n");
474         Lock(addr.lk);
475         print("}\n");
476         print(" writer  ", addr.writer\X, "\n");
477         print(" readers ", addr.readers, "\n");
478         print(" qfirst  ", addr.qfirst\X, "\n");
479         print(" qlast   ", addr.qlast\X, "\n");
480 };
481
482 sizeofVtRendez = 12;
483 aggr VtRendez
484 {
485         'A' VtLock 0 lk;
486         'A' Thread 4 wfirst;
487         'A' Thread 8 wlast;
488 };
489
490 defn
491 VtRendez(addr) {
492         complex VtRendez addr;
493         print(" lk      ", addr.lk\X, "\n");
494         print(" wfirst  ", addr.wfirst\X, "\n");
495         print(" wlast   ", addr.wlast\X, "\n");
496 };
497
498 ERROR = 0;
499 complex Thread vtRock;
500 complex Thread vtAttach:p;
501 complex Lock lk$4;
502 complex Thread vtDetach:p;
503 complex Thread vtSetError:p;
504 complex Lock lk$12;
505 complex VtLock vtLockFree:p;
506 complex VtLock vtRendezAlloc:p;
507 complex VtRendez vtRendezAlloc:q;
508 complex VtRendez vtRendezFree:q;
509 complex VtLock vtCanLock:p;
510 complex Thread vtCanLock:t;
511 complex VtLock vtLock:p;
512 complex Thread vtLock:t;
513 complex VtLock vtCanRLock:p;
514 complex VtLock vtRLock:p;
515 complex Thread vtRLock:t;
516 complex VtLock vtUnlock:p;
517 complex Thread vtUnlock:t;
518 complex Thread vtUnlock:tt;
519 complex VtLock vtRUnlock:p;
520 complex Thread vtRUnlock:t;
521 complex VtRendez vtSleep:q;
522 complex Thread vtSleep:s;
523 complex Thread vtSleep:t;
524 complex Thread vtSleep:tt;
525 complex VtLock vtSleep:p;
526 complex VtRendez vtWakeup:q;
527 complex Thread vtWakeup:t;
528 complex VtLock vtWakeup:p;
529 complex VtRendez vtWakeupAll:q;
530 complex Thread threadSleep:t;
531 complex Thread threadWakeup:t;