xref: /plan9-contrib/sys/src/ape/lib/ap/plan9/acidlib (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1sizeof_1_ = 8;
2aggr _1_
3{
4	'D' 0 quot;
5	'D' 4 rem;
6};
7
8defn
9_1_(addr) {
10	complex _1_ addr;
11	print("	quot	", addr.quot, "\n");
12	print("	rem	", addr.rem, "\n");
13};
14
15sizeof_2_ = 8;
16aggr _2_
17{
18	'D' 0 quot;
19	'D' 4 rem;
20};
21
22defn
23_2_(addr) {
24	complex _2_ addr;
25	print("	quot	", addr.quot, "\n");
26	print("	rem	", addr.rem, "\n");
27};
28
29sizeofsigaction = 12;
30aggr sigaction
31{
32	'X' 0 sa_handler;
33	'D' 4 sa_mask;
34	'D' 8 sa_flags;
35};
36
37defn
38sigaction(addr) {
39	complex sigaction addr;
40	print("	sa_handler	", addr.sa_handler\X, "\n");
41	print("	sa_mask	", addr.sa_mask, "\n");
42	print("	sa_flags	", addr.sa_flags, "\n");
43};
44
45sizeof_3_ = 32;
46aggr _3_
47{
48	'D' 0 fd;
49	'C' 4 flags;
50	'C' 5 state;
51	'X' 8 buf;
52	'X' 12 rp;
53	'X' 16 wp;
54	'X' 20 lp;
55	'U' 24 bufl;
56	'a' 28 unbuf;
57};
58
59defn
60_3_(addr) {
61	complex _3_ addr;
62	print("	fd	", addr.fd, "\n");
63	print("	flags	", addr.flags, "\n");
64	print("	state	", addr.state, "\n");
65	print("	buf	", addr.buf\X, "\n");
66	print("	rp	", addr.rp\X, "\n");
67	print("	wp	", addr.wp\X, "\n");
68	print("	lp	", addr.lp\X, "\n");
69	print("	bufl	", addr.bufl, "\n");
70	print("	unbuf	", addr.unbuf, "\n");
71};
72
73sizeof_4_ = 4;
74aggr _4_
75{
76	'D' 0 val;
77};
78
79defn
80_4_(addr) {
81	complex _4_ addr;
82	print("	val	", addr.val, "\n");
83};
84
85sizeoftimeval = 8;
86aggr timeval
87{
88	'D' 0 tv_sec;
89	'D' 4 tv_usec;
90};
91
92defn
93timeval(addr) {
94	complex timeval addr;
95	print("	tv_sec	", addr.tv_sec, "\n");
96	print("	tv_usec	", addr.tv_usec, "\n");
97};
98
99sizeoftimezone = 8;
100aggr timezone
101{
102	'D' 0 tz_minuteswest;
103	'D' 4 tz_dsttime;
104};
105
106defn
107timezone(addr) {
108	complex timezone addr;
109	print("	tz_minuteswest	", addr.tz_minuteswest, "\n");
110	print("	tz_dsttime	", addr.tz_dsttime, "\n");
111};
112
113sizeoffd_set = 12;
114aggr fd_set
115{
116	'a' 0 fds_bits;
117};
118
119defn
120fd_set(addr) {
121	complex fd_set addr;
122	mem(addr, "3X");
123};
124
125sizeofstat = 28;
126aggr stat
127{
128	'u' 0 st_dev;
129	'u' 2 st_ino;
130	'u' 4 st_mode;
131	'd' 6 st_nlink;
132	'd' 8 st_uid;
133	'd' 10 st_gid;
134	'D' 12 st_size;
135	'D' 16 st_atime;
136	'D' 20 st_mtime;
137	'D' 24 st_ctime;
138};
139
140defn
141stat(addr) {
142	complex stat addr;
143	print("	st_dev	", addr.st_dev, "\n");
144	print("	st_ino	", addr.st_ino, "\n");
145	print("	st_mode	", addr.st_mode, "\n");
146	print("	st_nlink	", addr.st_nlink, "\n");
147	print("	st_uid	", addr.st_uid, "\n");
148	print("	st_gid	", addr.st_gid, "\n");
149	print("	st_size	", addr.st_size, "\n");
150	print("	st_atime	", addr.st_atime, "\n");
151	print("	st_mtime	", addr.st_mtime, "\n");
152	print("	st_ctime	", addr.st_ctime, "\n");
153};
154
155sizeofflock = 16;
156aggr flock
157{
158	'd' 0 l_type;
159	'd' 2 l_whence;
160	'D' 4 l_start;
161	'D' 8 l_len;
162	'D' 12 l_pid;
163};
164
165defn
166flock(addr) {
167	complex flock addr;
168	print("	l_type	", addr.l_type, "\n");
169	print("	l_whence	", addr.l_whence, "\n");
170	print("	l_start	", addr.l_start, "\n");
171	print("	l_len	", addr.l_len, "\n");
172	print("	l_pid	", addr.l_pid, "\n");
173};
174
175sizeofdirent = 28;
176aggr dirent
177{
178	'a' 0 d_name;
179};
180
181defn
182dirent(addr) {
183	complex dirent addr;
184	print("	d_name	", addr.d_name, "\n");
185};
186
187sizeof_dirdesc = 16;
188aggr _dirdesc
189{
190	'D' 0 dd_fd;
191	'D' 4 dd_loc;
192	'D' 8 dd_size;
193	'X' 12 dd_buf;
194};
195
196defn
197_dirdesc(addr) {
198	complex _dirdesc addr;
199	print("	dd_fd	", addr.dd_fd, "\n");
200	print("	dd_loc	", addr.dd_loc, "\n");
201	print("	dd_size	", addr.dd_size, "\n");
202	print("	dd_buf	", addr.dd_buf\X, "\n");
203};
204
205sizeoftermios = 28;
206aggr termios
207{
208	'U' 0 c_iflag;
209	'U' 4 c_oflag;
210	'U' 8 c_cflag;
211	'U' 12 c_lflag;
212	'a' 16 c_cc;
213};
214
215defn
216termios(addr) {
217	complex termios addr;
218	print("	c_iflag	", addr.c_iflag, "\n");
219	print("	c_oflag	", addr.c_oflag, "\n");
220	print("	c_cflag	", addr.c_cflag, "\n");
221	print("	c_lflag	", addr.c_lflag, "\n");
222	print("	c_cc	", addr.c_cc, "\n");
223};
224
225sizeofutsname = 20;
226aggr utsname
227{
228	'X' 0 sysname;
229	'X' 4 nodename;
230	'X' 8 release;
231	'X' 12 version;
232	'X' 16 machine;
233};
234
235defn
236utsname(addr) {
237	complex utsname addr;
238	print("	sysname	", addr.sysname\X, "\n");
239	print("	nodename	", addr.nodename\X, "\n");
240	print("	release	", addr.release\X, "\n");
241	print("	version	", addr.version\X, "\n");
242	print("	machine	", addr.machine\X, "\n");
243};
244
245sizeofMuxbuf = 16400;
246aggr Muxbuf
247{
248	'D' 0 n;
249	'X' 4 putnext;
250	'X' 8 getnext;
251	'b' 12 fd;
252	'b' 13 eof;
253	'b' 14 roomwait;
254	'b' 15 datawait;
255	'a' 16 data;
256};
257
258defn
259Muxbuf(addr) {
260	complex Muxbuf addr;
261	print("	n	", addr.n, "\n");
262	print("	putnext	", addr.putnext\X, "\n");
263	print("	getnext	", addr.getnext\X, "\n");
264	print("	fd	", addr.fd, "\n");
265	print("	eof	", addr.eof, "\n");
266	print("	roomwait	", addr.roomwait, "\n");
267	print("	datawait	", addr.datawait, "\n");
268	print("	data	", addr.data, "\n");
269};
270
271sizeofFdinfo = 16;
272aggr Fdinfo
273{
274	'U' 0 flags;
275	'U' 4 oflags;
276	'X' 8 name;
277	'A' Muxbuf 12 buf;
278};
279
280defn
281Fdinfo(addr) {
282	complex Fdinfo addr;
283	print("	flags	", addr.flags, "\n");
284	print("	oflags	", addr.oflags, "\n");
285	print("	name	", addr.name\X, "\n");
286	print("	buf	", addr.buf\X, "\n");
287};
288
289sizeofWaitmsg = 112;
290aggr Waitmsg
291{
292	'a' 0 pid;
293	'a' 12 time;
294	'a' 48 msg;
295};
296
297defn
298Waitmsg(addr) {
299	complex Waitmsg addr;
300	print("	pid	", addr.pid, "\n");
301	print("	time	", addr.time, "\n");
302	print("	msg	", addr.msg, "\n");
303};
304
305sizeof_5_ = 8;
306aggr _5_
307{
308	'D' 0 hlength;
309	'D' 4 length;
310};
311
312defn
313_5_(addr) {
314	complex _5_ addr;
315	print("	hlength	", addr.hlength, "\n");
316	print("	length	", addr.length, "\n");
317};
318
319sizeof_6_ = 8;
320aggr _6_
321{
322	'a' 0 clength;
323	'D' 0 vlength;
324	{
325	'D' 0 hlength;
326	'D' 4 length;
327	};
328};
329
330defn
331_6_(addr) {
332	complex _6_ addr;
333	print("	clength	", addr.clength, "\n");
334	print("	vlength	", addr.vlength, "\n");
335	print("_5_ {\n");
336		_5_(addr+0);
337	print("}\n");
338};
339
340sizeofQid = 8;
341aggr Qid
342{
343	'U' 0 path;
344	'U' 4 vers;
345};
346
347defn
348Qid(addr) {
349	complex Qid addr;
350	print("	path	", addr.path, "\n");
351	print("	vers	", addr.vers, "\n");
352};
353
354sizeofDir = 116;
355aggr Dir
356{
357	'a' 0 name;
358	'a' 28 uid;
359	'a' 56 gid;
360	Qid 84 qid;
361	'U' 92 mode;
362	'D' 96 atime;
363	'D' 100 mtime;
364	{
365	'a' 104 clength;
366	'D' 104 vlength;
367	{
368	'D' 104 hlength;
369	'D' 108 length;
370	};
371	};
372	'd' 112 type;
373	'd' 114 dev;
374};
375
376defn
377Dir(addr) {
378	complex Dir addr;
379	print("	name	", addr.name, "\n");
380	print("	uid	", addr.uid, "\n");
381	print("	gid	", addr.gid, "\n");
382	print("Qid qid {\n");
383	Qid(addr.qid);
384	print("}\n");
385	print("	mode	", addr.mode, "\n");
386	print("	atime	", addr.atime, "\n");
387	print("	mtime	", addr.mtime, "\n");
388	print("_6_ {\n");
389		_6_(addr+104);
390	print("}\n");
391	print("	type	", addr.type, "\n");
392	print("	dev	", addr.dev, "\n");
393};
394
395sizeof_7_ = 28;
396aggr _7_
397{
398	'u' 0 oldtag;
399	Qid 4 qid;
400	'a' 12 rauth;
401};
402
403defn
404_7_(addr) {
405	complex _7_ addr;
406	print("	oldtag	", addr.oldtag, "\n");
407	print("Qid qid {\n");
408	Qid(addr.qid);
409	print("}\n");
410	print("	rauth	", addr.rauth, "\n");
411};
412
413sizeof_8_ = 144;
414aggr _8_
415{
416	'a' 0 uname;
417	'a' 28 aname;
418	'a' 56 ticket;
419	'a' 128 auth;
420};
421
422defn
423_8_(addr) {
424	complex _8_ addr;
425	print("	uname	", addr.uname, "\n");
426	print("	aname	", addr.aname, "\n");
427	print("	ticket	", addr.ticket, "\n");
428	print("	auth	", addr.auth, "\n");
429};
430
431sizeof_9_ = 148;
432aggr _9_
433{
434	'a' 0 ename;
435	'a' 64 authid;
436	'a' 92 authdom;
437	'a' 140 chal;
438};
439
440defn
441_9_(addr) {
442	complex _9_ addr;
443	print("	ename	", addr.ename, "\n");
444	print("	authid	", addr.authid, "\n");
445	print("	authdom	", addr.authdom, "\n");
446	print("	chal	", addr.chal, "\n");
447};
448
449sizeof_10_ = 36;
450aggr _10_
451{
452	'D' 0 perm;
453	'd' 4 newfid;
454	'a' 6 name;
455	'C' 34 mode;
456};
457
458defn
459_10_(addr) {
460	complex _10_ addr;
461	print("	perm	", addr.perm, "\n");
462	print("	newfid	", addr.newfid, "\n");
463	print("	name	", addr.name, "\n");
464	print("	mode	", addr.mode, "\n");
465};
466
467sizeof_11_ = 12;
468aggr _11_
469{
470	'D' 0 offset;
471	'D' 4 count;
472	'X' 8 data;
473};
474
475defn
476_11_(addr) {
477	complex _11_ addr;
478	print("	offset	", addr.offset, "\n");
479	print("	count	", addr.count, "\n");
480	print("	data	", addr.data\X, "\n");
481};
482
483sizeof_12_ = 116;
484aggr _12_
485{
486	'a' 0 stat;
487};
488
489defn
490_12_(addr) {
491	complex _12_ addr;
492	print("	stat	", addr.stat, "\n");
493};
494
495sizeof_13_ = 148;
496aggr _13_
497{
498	{
499	'u' 0 oldtag;
500	Qid 4 qid;
501	'a' 12 rauth;
502	};
503	{
504	'a' 0 uname;
505	'a' 28 aname;
506	'a' 56 ticket;
507	'a' 128 auth;
508	};
509	{
510	'a' 0 ename;
511	'a' 64 authid;
512	'a' 92 authdom;
513	'a' 140 chal;
514	};
515	{
516	'D' 0 perm;
517	'd' 4 newfid;
518	'a' 6 name;
519	'C' 34 mode;
520	};
521	{
522	'D' 0 offset;
523	'D' 4 count;
524	'X' 8 data;
525	};
526	{
527	'a' 0 stat;
528	};
529};
530
531defn
532_13_(addr) {
533	complex _13_ addr;
534	print("_7_ {\n");
535		_7_(addr+0);
536	print("}\n");
537	print("_8_ {\n");
538		_8_(addr+0);
539	print("}\n");
540	print("_9_ {\n");
541		_9_(addr+0);
542	print("}\n");
543	print("_10_ {\n");
544		_10_(addr+0);
545	print("}\n");
546	print("_11_ {\n");
547		_11_(addr+0);
548	print("}\n");
549	print("_12_ {\n");
550		_12_(addr+0);
551	print("}\n");
552};
553
554sizeofFcall = 156;
555aggr Fcall
556{
557	'C' 0 type;
558	'd' 2 fid;
559	'u' 4 tag;
560	{
561	{
562	'u' 8 oldtag;
563	Qid 12 qid;
564	'a' 20 rauth;
565	};
566	{
567	'a' 8 uname;
568	'a' 36 aname;
569	'a' 64 ticket;
570	'a' 136 auth;
571	};
572	{
573	'a' 8 ename;
574	'a' 72 authid;
575	'a' 100 authdom;
576	'a' 148 chal;
577	};
578	{
579	'D' 8 perm;
580	'd' 12 newfid;
581	'a' 14 name;
582	'C' 42 mode;
583	};
584	{
585	'D' 8 offset;
586	'D' 12 count;
587	'X' 16 data;
588	};
589	{
590	'a' 8 stat;
591	};
592	};
593};
594
595defn
596Fcall(addr) {
597	complex Fcall addr;
598	print("	type	", addr.type, "\n");
599	print("	fid	", addr.fid, "\n");
600	print("	tag	", addr.tag, "\n");
601	print("_13_ {\n");
602		_13_(addr+8);
603	print("}\n");
604};
605
606sizeofMuxbuf = 16400;
607aggr Muxbuf
608{
609	'D' 0 n;
610	'X' 4 putnext;
611	'X' 8 getnext;
612	'b' 12 fd;
613	'b' 13 eof;
614	'b' 14 roomwait;
615	'b' 15 datawait;
616	'a' 16 data;
617};
618
619defn
620Muxbuf(addr) {
621	complex Muxbuf addr;
622	print("	n	", addr.n, "\n");
623	print("	putnext	", addr.putnext\X, "\n");
624	print("	getnext	", addr.getnext\X, "\n");
625	print("	fd	", addr.fd, "\n");
626	print("	eof	", addr.eof, "\n");
627	print("	roomwait	", addr.roomwait, "\n");
628	print("	datawait	", addr.datawait, "\n");
629	print("	data	", addr.data, "\n");
630};
631
632sizeofFdinfo = 16;
633aggr Fdinfo
634{
635	'U' 0 flags;
636	'U' 4 oflags;
637	'X' 8 name;
638	'A' Muxbuf 12 buf;
639};
640
641defn
642Fdinfo(addr) {
643	complex Fdinfo addr;
644	print("	flags	", addr.flags, "\n");
645	print("	oflags	", addr.oflags, "\n");
646	print("	name	", addr.name\X, "\n");
647	print("	buf	", addr.buf\X, "\n");
648};
649
650sizeofWaitmsg = 112;
651aggr Waitmsg
652{
653	'a' 0 pid;
654	'a' 12 time;
655	'a' 48 msg;
656};
657
658defn
659Waitmsg(addr) {
660	complex Waitmsg addr;
661	print("	pid	", addr.pid, "\n");
662	print("	time	", addr.time, "\n");
663	print("	msg	", addr.msg, "\n");
664};
665
666sizeofMuxseg = 65640;
667aggr Muxseg
668{
669	_4_ 0 lock;
670	'D' 4 curfds;
671	'D' 8 selwait;
672	'D' 12 waittime;
673	fd_set 16 rwant;
674	fd_set 28 ewant;
675	'a' 40 bufs;
676};
677
678defn
679Muxseg(addr) {
680	complex Muxseg addr;
681	print("_4_ lock {\n");
682	_4_(addr.lock);
683	print("}\n");
684	print("	curfds	", addr.curfds, "\n");
685	print("	selwait	", addr.selwait, "\n");
686	print("	waittime	", addr.waittime, "\n");
687	print("fd_set rwant {\n");
688	fd_set(addr.rwant);
689	print("}\n");
690	print("fd_set ewant {\n");
691	fd_set(addr.ewant);
692	print("}\n");
693	print("	bufs	", addr.bufs, "\n");
694};
695
696complex Muxseg mux;
697complex Fdinfo _startbuf:f;
698complex Muxbuf _startbuf:b;
699complex Muxbuf _copyproc:b;
700complex Muxbuf _readbuf:b;
701complex fd_set select:rfds;
702complex fd_set select:wfds;
703complex fd_set select:efds;
704complex timeval select:timeout;
705complex Fdinfo select:f;
706complex Muxbuf select:b;
707