xref: /plan9/sys/src/cmd/mk/acid (revision dc5a79c1208f0704eeb474acc990728f8b4854f5)
1sizeof_1_ = 8;
2aggr _1_
3{
4	'D' 0 llength;
5	'D' 4 hlength;
6};
7
8defn
9_1_(addr) {
10	complex _1_ addr;
11	print("	llength	", addr.llength, "\n");
12	print("	hlength	", addr.hlength, "\n");
13};
14
15sizeof_2_ = 8;
16aggr _2_
17{
18	'V' 0 length;
19	{
20	'D' 0 llength;
21	'D' 4 hlength;
22	};
23};
24
25defn
26_2_(addr) {
27	complex _2_ addr;
28	print("	length	", addr.length, "\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;
173sizeofQid = 8;
174aggr Qid
175{
176	'U' 0 path;
177	'U' 4 vers;
178};
179
180defn
181Qid(addr) {
182	complex Qid addr;
183	print("	path	", addr.path, "\n");
184	print("	vers	", addr.vers, "\n");
185};
186
187sizeofDir = 116;
188aggr Dir
189{
190	'a' 0 name;
191	'a' 28 uid;
192	'a' 56 gid;
193	Qid 84 qid;
194	'U' 92 mode;
195	'D' 96 atime;
196	'D' 100 mtime;
197	{
198	'V' 104 length;
199	{
200	'D' 104 llength;
201	'D' 108 hlength;
202	};
203	};
204	'u' 112 type;
205	'u' 114 dev;
206};
207
208defn
209Dir(addr) {
210	complex Dir addr;
211	print("	name	", addr.name, "\n");
212	print("	uid	", addr.uid, "\n");
213	print("	gid	", addr.gid, "\n");
214	print("Qid qid {\n");
215	Qid(addr.qid);
216	print("}\n");
217	print("	mode	", addr.mode, "\n");
218	print("	atime	", addr.atime, "\n");
219	print("	mtime	", addr.mtime, "\n");
220	print("_2_ {\n");
221		_2_(addr+104);
222	print("}\n");
223	print("	type	", addr.type, "\n");
224	print("	dev	", addr.dev, "\n");
225};
226
227sizeofWaitmsg = 112;
228aggr Waitmsg
229{
230	'a' 0 pid;
231	'a' 12 time;
232	'a' 48 msg;
233};
234
235defn
236Waitmsg(addr) {
237	complex Waitmsg addr;
238	print("	pid	", addr.pid, "\n");
239	print("	time	", addr.time, "\n");
240	print("	msg	", addr.msg, "\n");
241};
242
243Bsize = 8192;
244Bungetsize = 4;
245Bmagic = 3227993;
246Beof = -1;
247Bbad = -2;
248Binactive = 0;
249Bractive = 1;
250Bwactive = 2;
251Bracteof = 3;
252sizeofBiobufhdr = 52;
253aggr Biobufhdr
254{
255	'D' 0 icount;
256	'D' 4 ocount;
257	'D' 8 rdline;
258	'D' 12 runesize;
259	'D' 16 state;
260	'D' 20 fid;
261	'D' 24 flag;
262	'V' 28 offset;
263	'D' 36 bsize;
264	'X' 40 bbuf;
265	'X' 44 ebuf;
266	'X' 48 gbuf;
267};
268
269defn
270Biobufhdr(addr) {
271	complex Biobufhdr addr;
272	print("	icount	", addr.icount, "\n");
273	print("	ocount	", addr.ocount, "\n");
274	print("	rdline	", addr.rdline, "\n");
275	print("	runesize	", addr.runesize, "\n");
276	print("	state	", addr.state, "\n");
277	print("	fid	", addr.fid, "\n");
278	print("	flag	", addr.flag, "\n");
279	print("	offset	", addr.offset, "\n");
280	print("	bsize	", addr.bsize, "\n");
281	print("	bbuf	", addr.bbuf\X, "\n");
282	print("	ebuf	", addr.ebuf\X, "\n");
283	print("	gbuf	", addr.gbuf\X, "\n");
284};
285
286sizeofBiobuf = 8248;
287aggr Biobuf
288{
289	{
290	'D' 0 icount;
291	'D' 4 ocount;
292	'D' 8 rdline;
293	'D' 12 runesize;
294	'D' 16 state;
295	'D' 20 fid;
296	'D' 24 flag;
297	'V' 28 offset;
298	'D' 36 bsize;
299	'X' 40 bbuf;
300	'X' 44 ebuf;
301	'X' 48 gbuf;
302	};
303	'a' 52 b;
304};
305
306defn
307Biobuf(addr) {
308	complex Biobuf addr;
309	print("Biobufhdr {\n");
310		Biobufhdr(addr+0);
311	print("}\n");
312	print("	b	", addr.b, "\n");
313};
314
315sizeof_3_ = 4;
316aggr _3_
317{
318	'X' 0 sp;
319	'X' 0 rsp;
320};
321
322defn
323_3_(addr) {
324	complex _3_ addr;
325	print("	sp	", addr.sp\X, "\n");
326	print("	rsp	", addr.rsp\X, "\n");
327};
328
329sizeof_4_ = 4;
330aggr _4_
331{
332	'X' 0 ep;
333	'X' 0 rep;
334};
335
336defn
337_4_(addr) {
338	complex _4_ addr;
339	print("	ep	", addr.ep\X, "\n");
340	print("	rep	", addr.rep\X, "\n");
341};
342
343sizeofResub = 8;
344aggr Resub
345{
346	{
347	'X' 0 sp;
348	'X' 0 rsp;
349	};
350	{
351	'X' 4 ep;
352	'X' 4 rep;
353	};
354};
355
356defn
357Resub(addr) {
358	complex Resub addr;
359	print("_3_ {\n");
360		_3_(addr+0);
361	print("}\n");
362	print("_4_ {\n");
363		_4_(addr+4);
364	print("}\n");
365};
366
367sizeofReclass = 132;
368aggr Reclass
369{
370	'X' 0 end;
371	'a' 4 spans;
372};
373
374defn
375Reclass(addr) {
376	complex Reclass addr;
377	print("	end	", addr.end\X, "\n");
378	print("	spans	", addr.spans, "\n");
379};
380
381sizeof_5_ = 4;
382aggr _5_
383{
384	'A' Reclass 0 cp;
385	'u' 0 r;
386	'D' 0 subid;
387	'X' 0 right;
388};
389
390defn
391_5_(addr) {
392	complex _5_ addr;
393	print("	cp	", addr.cp\X, "\n");
394	print("	r	", addr.r, "\n");
395	print("	subid	", addr.subid, "\n");
396	print("	right	", addr.right\X, "\n");
397};
398
399sizeof_6_ = 4;
400aggr _6_
401{
402	'X' 0 left;
403	'X' 0 next;
404};
405
406defn
407_6_(addr) {
408	complex _6_ addr;
409	print("	left	", addr.left\X, "\n");
410	print("	next	", addr.next\X, "\n");
411};
412
413sizeofReinst = 12;
414aggr Reinst
415{
416	'D' 0 type;
417	{
418	'A' Reclass 4 cp;
419	'u' 4 r;
420	'D' 4 subid;
421	'A' Reinst 4 right;
422	};
423	{
424	'A' Reinst 8 left;
425	'A' Reinst 8 next;
426	};
427};
428
429defn
430Reinst(addr) {
431	complex Reinst addr;
432	print("	type	", addr.type, "\n");
433	print("_5_ {\n");
434		_5_(addr+4);
435	print("}\n");
436	print("_6_ {\n");
437		_6_(addr+8);
438	print("}\n");
439};
440
441sizeofReprog = 2176;
442aggr Reprog
443{
444	'A' Reinst 0 startinst;
445	'a' 4 class;
446	'a' 2116 firstinst;
447};
448
449defn
450Reprog(addr) {
451	complex Reprog addr;
452	print("	startinst	", addr.startinst\X, "\n");
453	print("	class	", addr.class, "\n");
454	print("	firstinst	", addr.firstinst, "\n");
455};
456
457complex Biobuf bout;
458sizeofBufblock = 16;
459aggr Bufblock
460{
461	'A' Bufblock 0 next;
462	'X' 4 start;
463	'X' 8 end;
464	'X' 12 current;
465};
466
467defn
468Bufblock(addr) {
469	complex Bufblock addr;
470	print("	next	", addr.next\X, "\n");
471	print("	start	", addr.start\X, "\n");
472	print("	end	", addr.end\X, "\n");
473	print("	current	", addr.current\X, "\n");
474};
475
476sizeofWord = 8;
477aggr Word
478{
479	'X' 0 s;
480	'A' Word 4 next;
481};
482
483defn
484Word(addr) {
485	complex Word addr;
486	print("	s	", addr.s\X, "\n");
487	print("	next	", addr.next\X, "\n");
488};
489
490sizeofEnvy = 8;
491aggr Envy
492{
493	'X' 0 name;
494	'A' Word 4 values;
495};
496
497defn
498Envy(addr) {
499	complex Envy addr;
500	print("	name	", addr.name\X, "\n");
501	print("	values	", addr.values\X, "\n");
502};
503
504complex Envy envy;
505sizeofRule = 44;
506aggr Rule
507{
508	'X' 0 target;
509	'A' Word 4 $tail;
510	'X' 8 recipe;
511	'd' 12 attr;
512	'd' 14 line;
513	'X' 16 file;
514	'A' Word 20 alltargets;
515	'D' 24 rule;
516	'A' Reprog 28 pat;
517	'X' 32 prog;
518	'A' Rule 36 chain;
519	'A' Rule 40 next;
520};
521
522defn
523Rule(addr) {
524	complex Rule addr;
525	print("	target	", addr.target\X, "\n");
526	print("	$tail	", addr.$tail\X, "\n");
527	print("	recipe	", addr.recipe\X, "\n");
528	print("	attr	", addr.attr, "\n");
529	print("	line	", addr.line, "\n");
530	print("	file	", addr.file\X, "\n");
531	print("	alltargets	", addr.alltargets\X, "\n");
532	print("	rule	", addr.rule, "\n");
533	print("	pat	", addr.pat\X, "\n");
534	print("	prog	", addr.prog\X, "\n");
535	print("	chain	", addr.chain\X, "\n");
536	print("	next	", addr.next\X, "\n");
537};
538
539complex Rule rules;
540complex Rule metarules;
541complex Rule patrule;
542sizeofArc = 64;
543aggr Arc
544{
545	'd' 0 flag;
546	'X' 4 n;
547	'A' Rule 8 r;
548	'X' 12 stem;
549	'X' 16 prog;
550	'a' 20 match;
551	'A' Arc 60 next;
552};
553
554defn
555Arc(addr) {
556	complex Arc addr;
557	print("	flag	", addr.flag, "\n");
558	print("	n	", addr.n\X, "\n");
559	print("	r	", addr.r\X, "\n");
560	print("	stem	", addr.stem\X, "\n");
561	print("	prog	", addr.prog\X, "\n");
562	print("	match	", addr.match, "\n");
563	print("	next	", addr.next\X, "\n");
564};
565
566sizeofNode = 20;
567aggr Node
568{
569	'X' 0 name;
570	'D' 4 time;
571	'u' 8 flags;
572	'A' Arc 12 prereqs;
573	'A' Node 16 next;
574};
575
576defn
577Node(addr) {
578	complex Node addr;
579	print("	name	", addr.name\X, "\n");
580	print("	time	", addr.time, "\n");
581	print("	flags	", addr.flags, "\n");
582	print("	prereqs	", addr.prereqs\X, "\n");
583	print("	next	", addr.next\X, "\n");
584};
585
586sizeofJob = 40;
587aggr Job
588{
589	'A' Rule 0 r;
590	'A' Node 4 n;
591	'X' 8 stem;
592	'X' 12 match;
593	'A' Word 16 p;
594	'A' Word 20 np;
595	'A' Word 24 t;
596	'A' Word 28 at;
597	'D' 32 nproc;
598	'A' Job 36 next;
599};
600
601defn
602Job(addr) {
603	complex Job addr;
604	print("	r	", addr.r\X, "\n");
605	print("	n	", addr.n\X, "\n");
606	print("	stem	", addr.stem\X, "\n");
607	print("	match	", addr.match\X, "\n");
608	print("	p	", addr.p\X, "\n");
609	print("	np	", addr.np\X, "\n");
610	print("	t	", addr.t\X, "\n");
611	print("	at	", addr.at\X, "\n");
612	print("	nproc	", addr.nproc, "\n");
613	print("	next	", addr.next\X, "\n");
614};
615
616complex Job jobs;
617sizeofSymtab = 16;
618aggr Symtab
619{
620	'd' 0 space;
621	'X' 4 name;
622	'X' 8 value;
623	'A' Symtab 12 next;
624};
625
626defn
627Symtab(addr) {
628	complex Symtab addr;
629	print("	space	", addr.space, "\n");
630	print("	name	", addr.name\X, "\n");
631	print("	value	", addr.value\X, "\n");
632	print("	next	", addr.next\X, "\n");
633};
634
635S_VAR = 0;
636S_TARGET = 1;
637S_TIME = 2;
638S_PID = 3;
639S_NODE = 4;
640S_AGG = 5;
641S_BITCH = 6;
642S_NOEXPORT = 7;
643S_OVERRIDE = 8;
644S_OUTOFDATE = 9;
645S_MAKEFILE = 10;
646S_MAKEVAR = 11;
647S_EXPORTED = 12;
648S_BULKED = 13;
649S_WESET = 14;
650S_INTERNAL = 15;
651complex Word readenv:w;
652complex Word encodenulls:w;
653complex Word encodenulls:$head;
654complex Envy exportenv:e;
655complex Word exportenv:w;
656complex Symtab exportenv:sy;
657complex Dir dirtime:d;
658complex Waitmsg waitfor:wm;
659complex Bufblock execsh:buf;
660complex Envy execsh:e;
661complex Envy pipecmd:e;
662complex Dir chgtime:sbuf;
663complex Resub rcopy:match;
664complex Dir mkdirstat:buf;
665