xref: /plan9/sys/src/libthread/sched.acid (revision f591d9710fae2220cec09da2812fd6db952f1a27)
1d1be6b08SDavid du Colombiersizeof_1_ = 8;
2d1be6b08SDavid du Colombieraggr _1_
3d1be6b08SDavid du Colombier{
4d1be6b08SDavid du Colombier	'U' 0 lo;
5d1be6b08SDavid du Colombier	'U' 4 hi;
6d1be6b08SDavid du Colombier};
7d1be6b08SDavid du Colombier
8d1be6b08SDavid du Colombierdefn
9d1be6b08SDavid du Colombier_1_(addr) {
10d1be6b08SDavid du Colombier	complex _1_ addr;
11d1be6b08SDavid du Colombier	print("	lo	", addr.lo, "\n");
12d1be6b08SDavid du Colombier	print("	hi	", addr.hi, "\n");
13d1be6b08SDavid du Colombier};
14d1be6b08SDavid du Colombier
15d1be6b08SDavid du ColombiersizeofFPdbleword = 8;
16d1be6b08SDavid du Colombieraggr FPdbleword
17d1be6b08SDavid du Colombier{
18d1be6b08SDavid du Colombier	'F' 0 x;
19d1be6b08SDavid du Colombier	{
20d1be6b08SDavid du Colombier	'U' 0 lo;
21d1be6b08SDavid du Colombier	'U' 4 hi;
22d1be6b08SDavid du Colombier	};
23d1be6b08SDavid du Colombier};
24d1be6b08SDavid du Colombier
25d1be6b08SDavid du Colombierdefn
26d1be6b08SDavid du ColombierFPdbleword(addr) {
27d1be6b08SDavid du Colombier	complex FPdbleword addr;
28d1be6b08SDavid du Colombier	print("	x	", addr.x, "\n");
29d1be6b08SDavid du Colombier	print("_1_ {\n");
30d1be6b08SDavid du Colombier		_1_(addr+0);
31d1be6b08SDavid du Colombier	print("}\n");
32d1be6b08SDavid du Colombier};
33d1be6b08SDavid du Colombier
34*f591d971SDavid du ColombierUTFmax = 4;
35d1be6b08SDavid du ColombierRunesync = 128;
36d1be6b08SDavid du ColombierRuneself = 128;
37d1be6b08SDavid du ColombierRuneerror = 65533;
38*f591d971SDavid du ColombierRunemax = 1114111;
39*f591d971SDavid du ColombierRunemask = 2097151;
40d1be6b08SDavid du ColombiersizeofFmt = 48;
41d1be6b08SDavid du Colombieraggr Fmt
42d1be6b08SDavid du Colombier{
43d1be6b08SDavid du Colombier	'b' 0 runes;
44d1be6b08SDavid du Colombier	'X' 4 start;
45d1be6b08SDavid du Colombier	'X' 8 to;
46d1be6b08SDavid du Colombier	'X' 12 stop;
47d1be6b08SDavid du Colombier	'X' 16 flush;
48d1be6b08SDavid du Colombier	'X' 20 farg;
49d1be6b08SDavid du Colombier	'D' 24 nfmt;
50d1be6b08SDavid du Colombier	'X' 28 args;
51d1be6b08SDavid du Colombier	'D' 32 r;
52d1be6b08SDavid du Colombier	'D' 36 width;
53d1be6b08SDavid du Colombier	'D' 40 prec;
54d1be6b08SDavid du Colombier	'U' 44 flags;
55d1be6b08SDavid du Colombier};
56d1be6b08SDavid du Colombier
57d1be6b08SDavid du Colombierdefn
58d1be6b08SDavid du ColombierFmt(addr) {
59d1be6b08SDavid du Colombier	complex Fmt addr;
60d1be6b08SDavid du Colombier	print("	runes	", addr.runes, "\n");
61d1be6b08SDavid du Colombier	print("	start	", addr.start\X, "\n");
62d1be6b08SDavid du Colombier	print("	to	", addr.to\X, "\n");
63d1be6b08SDavid du Colombier	print("	stop	", addr.stop\X, "\n");
64d1be6b08SDavid du Colombier	print("	flush	", addr.flush\X, "\n");
65d1be6b08SDavid du Colombier	print("	farg	", addr.farg\X, "\n");
66d1be6b08SDavid du Colombier	print("	nfmt	", addr.nfmt, "\n");
67d1be6b08SDavid du Colombier	print("	args	", addr.args\X, "\n");
68d1be6b08SDavid du Colombier	print("	r	", addr.r, "\n");
69d1be6b08SDavid du Colombier	print("	width	", addr.width, "\n");
70d1be6b08SDavid du Colombier	print("	prec	", addr.prec, "\n");
71d1be6b08SDavid du Colombier	print("	flags	", addr.flags, "\n");
72d1be6b08SDavid du Colombier};
73d1be6b08SDavid du Colombier
74d1be6b08SDavid du ColombierFmtWidth = 1;
75d1be6b08SDavid du ColombierFmtLeft = 2;
76d1be6b08SDavid du ColombierFmtPrec = 4;
77d1be6b08SDavid du ColombierFmtSharp = 8;
78d1be6b08SDavid du ColombierFmtSpace = 16;
79d1be6b08SDavid du ColombierFmtSign = 32;
80d1be6b08SDavid du ColombierFmtZero = 64;
81d1be6b08SDavid du ColombierFmtUnsigned = 128;
82d1be6b08SDavid du ColombierFmtShort = 256;
83d1be6b08SDavid du ColombierFmtLong = 512;
84d1be6b08SDavid du ColombierFmtVLong = 1024;
85d1be6b08SDavid du ColombierFmtComma = 2048;
86d1be6b08SDavid du ColombierFmtByte = 4096;
87d1be6b08SDavid du ColombierFmtFlag = 8192;
88d1be6b08SDavid du ColombiersizeofTm = 40;
89d1be6b08SDavid du Colombieraggr Tm
90d1be6b08SDavid du Colombier{
91d1be6b08SDavid du Colombier	'D' 0 sec;
92d1be6b08SDavid du Colombier	'D' 4 min;
93d1be6b08SDavid du Colombier	'D' 8 hour;
94d1be6b08SDavid du Colombier	'D' 12 mday;
95d1be6b08SDavid du Colombier	'D' 16 mon;
96d1be6b08SDavid du Colombier	'D' 20 year;
97d1be6b08SDavid du Colombier	'D' 24 wday;
98d1be6b08SDavid du Colombier	'D' 28 yday;
99d1be6b08SDavid du Colombier	'a' 32 zone;
100d1be6b08SDavid du Colombier	'D' 36 tzoff;
101d1be6b08SDavid du Colombier};
102d1be6b08SDavid du Colombier
103d1be6b08SDavid du Colombierdefn
104d1be6b08SDavid du ColombierTm(addr) {
105d1be6b08SDavid du Colombier	complex Tm addr;
106d1be6b08SDavid du Colombier	print("	sec	", addr.sec, "\n");
107d1be6b08SDavid du Colombier	print("	min	", addr.min, "\n");
108d1be6b08SDavid du Colombier	print("	hour	", addr.hour, "\n");
109d1be6b08SDavid du Colombier	print("	mday	", addr.mday, "\n");
110d1be6b08SDavid du Colombier	print("	mon	", addr.mon, "\n");
111d1be6b08SDavid du Colombier	print("	year	", addr.year, "\n");
112d1be6b08SDavid du Colombier	print("	wday	", addr.wday, "\n");
113d1be6b08SDavid du Colombier	print("	yday	", addr.yday, "\n");
114d1be6b08SDavid du Colombier	print("	zone	", addr.zone, "\n");
115d1be6b08SDavid du Colombier	print("	tzoff	", addr.tzoff, "\n");
116d1be6b08SDavid du Colombier};
117d1be6b08SDavid du Colombier
118d1be6b08SDavid du ColombierPNPROC = 1;
119d1be6b08SDavid du ColombierPNGROUP = 2;
120d1be6b08SDavid du ColombierProfoff = 0;
121d1be6b08SDavid du ColombierProfuser = 1;
122d1be6b08SDavid du ColombierProfkernel = 2;
123d1be6b08SDavid du ColombierProftime = 3;
124d1be6b08SDavid du ColombierProfsample = 4;
125*f591d971SDavid du ColombiersizeofLock = 8;
126d1be6b08SDavid du Colombieraggr Lock
127d1be6b08SDavid du Colombier{
128*f591d971SDavid du Colombier	'D' 0 key;
129*f591d971SDavid du Colombier	'D' 4 sem;
130d1be6b08SDavid du Colombier};
131d1be6b08SDavid du Colombier
132d1be6b08SDavid du Colombierdefn
133d1be6b08SDavid du ColombierLock(addr) {
134d1be6b08SDavid du Colombier	complex Lock addr;
135*f591d971SDavid du Colombier	print("	key	", addr.key, "\n");
136*f591d971SDavid du Colombier	print("	sem	", addr.sem, "\n");
137d1be6b08SDavid du Colombier};
138d1be6b08SDavid du Colombier
139d1be6b08SDavid du ColombiersizeofQLp = 12;
140d1be6b08SDavid du Colombieraggr QLp
141d1be6b08SDavid du Colombier{
142d1be6b08SDavid du Colombier	'D' 0 inuse;
143d1be6b08SDavid du Colombier	'A' QLp 4 next;
144d1be6b08SDavid du Colombier	'C' 8 state;
145d1be6b08SDavid du Colombier};
146d1be6b08SDavid du Colombier
147d1be6b08SDavid du Colombierdefn
148d1be6b08SDavid du ColombierQLp(addr) {
149d1be6b08SDavid du Colombier	complex QLp addr;
150d1be6b08SDavid du Colombier	print("	inuse	", addr.inuse, "\n");
151d1be6b08SDavid du Colombier	print("	next	", addr.next\X, "\n");
152d1be6b08SDavid du Colombier	print("	state	", addr.state, "\n");
153d1be6b08SDavid du Colombier};
154d1be6b08SDavid du Colombier
155*f591d971SDavid du ColombiersizeofQLock = 20;
156d1be6b08SDavid du Colombieraggr QLock
157d1be6b08SDavid du Colombier{
158d1be6b08SDavid du Colombier	Lock 0 lock;
159*f591d971SDavid du Colombier	'D' 8 locked;
160*f591d971SDavid du Colombier	'A' QLp 12 $head;
161*f591d971SDavid du Colombier	'A' QLp 16 $tail;
162d1be6b08SDavid du Colombier};
163d1be6b08SDavid du Colombier
164d1be6b08SDavid du Colombierdefn
165d1be6b08SDavid du ColombierQLock(addr) {
166d1be6b08SDavid du Colombier	complex QLock addr;
167d1be6b08SDavid du Colombier	print("Lock lock {\n");
168d1be6b08SDavid du Colombier	Lock(addr.lock);
169d1be6b08SDavid du Colombier	print("}\n");
170d1be6b08SDavid du Colombier	print("	locked	", addr.locked, "\n");
171d1be6b08SDavid du Colombier	print("	$head	", addr.$head\X, "\n");
172d1be6b08SDavid du Colombier	print("	$tail	", addr.$tail\X, "\n");
173d1be6b08SDavid du Colombier};
174d1be6b08SDavid du Colombier
175*f591d971SDavid du ColombiersizeofRWLock = 24;
176d1be6b08SDavid du Colombieraggr RWLock
177d1be6b08SDavid du Colombier{
178d1be6b08SDavid du Colombier	Lock 0 lock;
179*f591d971SDavid du Colombier	'D' 8 readers;
180*f591d971SDavid du Colombier	'D' 12 writer;
181*f591d971SDavid du Colombier	'A' QLp 16 $head;
182*f591d971SDavid du Colombier	'A' QLp 20 $tail;
183d1be6b08SDavid du Colombier};
184d1be6b08SDavid du Colombier
185d1be6b08SDavid du Colombierdefn
186d1be6b08SDavid du ColombierRWLock(addr) {
187d1be6b08SDavid du Colombier	complex RWLock addr;
188d1be6b08SDavid du Colombier	print("Lock lock {\n");
189d1be6b08SDavid du Colombier	Lock(addr.lock);
190d1be6b08SDavid du Colombier	print("}\n");
191d1be6b08SDavid du Colombier	print("	readers	", addr.readers, "\n");
192d1be6b08SDavid du Colombier	print("	writer	", addr.writer, "\n");
193d1be6b08SDavid du Colombier	print("	$head	", addr.$head\X, "\n");
194d1be6b08SDavid du Colombier	print("	$tail	", addr.$tail\X, "\n");
195d1be6b08SDavid du Colombier};
196d1be6b08SDavid du Colombier
197d1be6b08SDavid du ColombiersizeofRendez = 12;
198d1be6b08SDavid du Colombieraggr Rendez
199d1be6b08SDavid du Colombier{
200d1be6b08SDavid du Colombier	'A' QLock 0 l;
201d1be6b08SDavid du Colombier	'A' QLp 4 $head;
202d1be6b08SDavid du Colombier	'A' QLp 8 $tail;
203d1be6b08SDavid du Colombier};
204d1be6b08SDavid du Colombier
205d1be6b08SDavid du Colombierdefn
206d1be6b08SDavid du ColombierRendez(addr) {
207d1be6b08SDavid du Colombier	complex Rendez addr;
208d1be6b08SDavid du Colombier	print("	l	", addr.l\X, "\n");
209d1be6b08SDavid du Colombier	print("	$head	", addr.$head\X, "\n");
210d1be6b08SDavid du Colombier	print("	$tail	", addr.$tail\X, "\n");
211d1be6b08SDavid du Colombier};
212d1be6b08SDavid du Colombier
213d1be6b08SDavid du ColombiersizeofNetConnInfo = 36;
214d1be6b08SDavid du Colombieraggr NetConnInfo
215d1be6b08SDavid du Colombier{
216d1be6b08SDavid du Colombier	'X' 0 dir;
217d1be6b08SDavid du Colombier	'X' 4 root;
218d1be6b08SDavid du Colombier	'X' 8 spec;
219d1be6b08SDavid du Colombier	'X' 12 lsys;
220d1be6b08SDavid du Colombier	'X' 16 lserv;
221d1be6b08SDavid du Colombier	'X' 20 rsys;
222d1be6b08SDavid du Colombier	'X' 24 rserv;
223d1be6b08SDavid du Colombier	'X' 28 laddr;
224d1be6b08SDavid du Colombier	'X' 32 raddr;
225d1be6b08SDavid du Colombier};
226d1be6b08SDavid du Colombier
227d1be6b08SDavid du Colombierdefn
228d1be6b08SDavid du ColombierNetConnInfo(addr) {
229d1be6b08SDavid du Colombier	complex NetConnInfo addr;
230d1be6b08SDavid du Colombier	print("	dir	", addr.dir\X, "\n");
231d1be6b08SDavid du Colombier	print("	root	", addr.root\X, "\n");
232d1be6b08SDavid du Colombier	print("	spec	", addr.spec\X, "\n");
233d1be6b08SDavid du Colombier	print("	lsys	", addr.lsys\X, "\n");
234d1be6b08SDavid du Colombier	print("	lserv	", addr.lserv\X, "\n");
235d1be6b08SDavid du Colombier	print("	rsys	", addr.rsys\X, "\n");
236d1be6b08SDavid du Colombier	print("	rserv	", addr.rserv\X, "\n");
237d1be6b08SDavid du Colombier	print("	laddr	", addr.laddr\X, "\n");
238d1be6b08SDavid du Colombier	print("	raddr	", addr.raddr\X, "\n");
239d1be6b08SDavid du Colombier};
240d1be6b08SDavid du Colombier
241d1be6b08SDavid du ColombierRFNAMEG = 1;
242d1be6b08SDavid du ColombierRFENVG = 2;
243d1be6b08SDavid du ColombierRFFDG = 4;
244d1be6b08SDavid du ColombierRFNOTEG = 8;
245d1be6b08SDavid du ColombierRFPROC = 16;
246d1be6b08SDavid du ColombierRFMEM = 32;
247d1be6b08SDavid du ColombierRFNOWAIT = 64;
248d1be6b08SDavid du ColombierRFCNAMEG = 1024;
249d1be6b08SDavid du ColombierRFCENVG = 2048;
250d1be6b08SDavid du ColombierRFCFDG = 4096;
251d1be6b08SDavid du ColombierRFREND = 8192;
252d1be6b08SDavid du ColombierRFNOMNT = 16384;
253d1be6b08SDavid du ColombiersizeofQid = 16;
254d1be6b08SDavid du Colombieraggr Qid
255d1be6b08SDavid du Colombier{
256d1be6b08SDavid du Colombier	'W' 0 path;
257d1be6b08SDavid du Colombier	'U' 8 vers;
258d1be6b08SDavid du Colombier	'b' 12 type;
259d1be6b08SDavid du Colombier};
260d1be6b08SDavid du Colombier
261d1be6b08SDavid du Colombierdefn
262d1be6b08SDavid du ColombierQid(addr) {
263d1be6b08SDavid du Colombier	complex Qid addr;
264d1be6b08SDavid du Colombier	print("	path	", addr.path, "\n");
265d1be6b08SDavid du Colombier	print("	vers	", addr.vers, "\n");
266d1be6b08SDavid du Colombier	print("	type	", addr.type, "\n");
267d1be6b08SDavid du Colombier};
268d1be6b08SDavid du Colombier
269d1be6b08SDavid du ColombiersizeofDir = 60;
270d1be6b08SDavid du Colombieraggr Dir
271d1be6b08SDavid du Colombier{
272d1be6b08SDavid du Colombier	'u' 0 type;
273d1be6b08SDavid du Colombier	'U' 4 dev;
274d1be6b08SDavid du Colombier	Qid 8 qid;
275d1be6b08SDavid du Colombier	'U' 24 mode;
276d1be6b08SDavid du Colombier	'U' 28 atime;
277d1be6b08SDavid du Colombier	'U' 32 mtime;
278d1be6b08SDavid du Colombier	'V' 36 length;
279d1be6b08SDavid du Colombier	'X' 44 name;
280d1be6b08SDavid du Colombier	'X' 48 uid;
281d1be6b08SDavid du Colombier	'X' 52 gid;
282d1be6b08SDavid du Colombier	'X' 56 muid;
283d1be6b08SDavid du Colombier};
284d1be6b08SDavid du Colombier
285d1be6b08SDavid du Colombierdefn
286d1be6b08SDavid du ColombierDir(addr) {
287d1be6b08SDavid du Colombier	complex Dir addr;
288d1be6b08SDavid du Colombier	print("	type	", addr.type, "\n");
289d1be6b08SDavid du Colombier	print("	dev	", addr.dev, "\n");
290d1be6b08SDavid du Colombier	print("Qid qid {\n");
291d1be6b08SDavid du Colombier	Qid(addr.qid);
292d1be6b08SDavid du Colombier	print("}\n");
293d1be6b08SDavid du Colombier	print("	mode	", addr.mode, "\n");
294d1be6b08SDavid du Colombier	print("	atime	", addr.atime, "\n");
295d1be6b08SDavid du Colombier	print("	mtime	", addr.mtime, "\n");
296d1be6b08SDavid du Colombier	print("	length	", addr.length, "\n");
297d1be6b08SDavid du Colombier	print("	name	", addr.name\X, "\n");
298d1be6b08SDavid du Colombier	print("	uid	", addr.uid\X, "\n");
299d1be6b08SDavid du Colombier	print("	gid	", addr.gid\X, "\n");
300d1be6b08SDavid du Colombier	print("	muid	", addr.muid\X, "\n");
301d1be6b08SDavid du Colombier};
302d1be6b08SDavid du Colombier
303d1be6b08SDavid du ColombiersizeofWaitmsg = 20;
304d1be6b08SDavid du Colombieraggr Waitmsg
305d1be6b08SDavid du Colombier{
306d1be6b08SDavid du Colombier	'D' 0 pid;
307d1be6b08SDavid du Colombier	'a' 4 time;
308d1be6b08SDavid du Colombier	'X' 16 msg;
309d1be6b08SDavid du Colombier};
310d1be6b08SDavid du Colombier
311d1be6b08SDavid du Colombierdefn
312d1be6b08SDavid du ColombierWaitmsg(addr) {
313d1be6b08SDavid du Colombier	complex Waitmsg addr;
314d1be6b08SDavid du Colombier	print("	pid	", addr.pid, "\n");
315d1be6b08SDavid du Colombier	print("	time	", addr.time, "\n");
316d1be6b08SDavid du Colombier	print("	msg	", addr.msg\X, "\n");
317d1be6b08SDavid du Colombier};
318d1be6b08SDavid du Colombier
319d1be6b08SDavid du ColombiersizeofIOchunk = 8;
320d1be6b08SDavid du Colombieraggr IOchunk
321d1be6b08SDavid du Colombier{
322d1be6b08SDavid du Colombier	'X' 0 addr;
323d1be6b08SDavid du Colombier	'U' 4 len;
324d1be6b08SDavid du Colombier};
325d1be6b08SDavid du Colombier
326d1be6b08SDavid du Colombierdefn
327d1be6b08SDavid du ColombierIOchunk(addr) {
328d1be6b08SDavid du Colombier	complex IOchunk addr;
329d1be6b08SDavid du Colombier	print("	addr	", addr.addr\X, "\n");
330d1be6b08SDavid du Colombier	print("	len	", addr.len, "\n");
331d1be6b08SDavid du Colombier};
332d1be6b08SDavid du Colombier
333d1be6b08SDavid du ColombierNqwds = 2;
334d1be6b08SDavid du ColombierNqshift = 5;
335d1be6b08SDavid du ColombierNqmask = -1;
336d1be6b08SDavid du ColombierNqbits = 64;
337d1be6b08SDavid du ColombiersizeofChannel = 36;
338d1be6b08SDavid du Colombieraggr Channel
339d1be6b08SDavid du Colombier{
340d1be6b08SDavid du Colombier	'D' 0 s;
341d1be6b08SDavid du Colombier	'U' 4 f;
342d1be6b08SDavid du Colombier	'U' 8 n;
343d1be6b08SDavid du Colombier	'D' 12 e;
344d1be6b08SDavid du Colombier	'D' 16 freed;
345d1be6b08SDavid du Colombier	'X' 20 qentry;
346d1be6b08SDavid du Colombier	'D' 24 nentry;
347d1be6b08SDavid du Colombier	'D' 28 closed;
348d1be6b08SDavid du Colombier	'a' 32 v;
349d1be6b08SDavid du Colombier};
350d1be6b08SDavid du Colombier
351d1be6b08SDavid du Colombierdefn
352d1be6b08SDavid du ColombierChannel(addr) {
353d1be6b08SDavid du Colombier	complex Channel addr;
354d1be6b08SDavid du Colombier	print("	s	", addr.s, "\n");
355d1be6b08SDavid du Colombier	print("	f	", addr.f, "\n");
356d1be6b08SDavid du Colombier	print("	n	", addr.n, "\n");
357d1be6b08SDavid du Colombier	print("	e	", addr.e, "\n");
358d1be6b08SDavid du Colombier	print("	freed	", addr.freed, "\n");
359d1be6b08SDavid du Colombier	print("	qentry	", addr.qentry\X, "\n");
360d1be6b08SDavid du Colombier	print("	nentry	", addr.nentry, "\n");
361d1be6b08SDavid du Colombier	print("	closed	", addr.closed, "\n");
362d1be6b08SDavid du Colombier	print("	v	", addr.v, "\n");
363d1be6b08SDavid du Colombier};
364d1be6b08SDavid du Colombier
365d1be6b08SDavid du ColombierCHANEND = 0;
366d1be6b08SDavid du ColombierCHANSND = 1;
367d1be6b08SDavid du ColombierCHANRCV = 2;
368d1be6b08SDavid du ColombierCHANNOP = 3;
369d1be6b08SDavid du ColombierCHANNOBLK = 4;
370d1be6b08SDavid du ColombiersizeofAlt = 24;
371d1be6b08SDavid du Colombieraggr Alt
372d1be6b08SDavid du Colombier{
373d1be6b08SDavid du Colombier	'A' Channel 0 c;
374d1be6b08SDavid du Colombier	'X' 4 v;
375d1be6b08SDavid du Colombier	'D' 8 op;
376d1be6b08SDavid du Colombier	'X' 12 err;
377d1be6b08SDavid du Colombier	'A' Channel 16 tag;
378d1be6b08SDavid du Colombier	'D' 20 entryno;
379d1be6b08SDavid du Colombier};
380d1be6b08SDavid du Colombier
381d1be6b08SDavid du Colombierdefn
382d1be6b08SDavid du ColombierAlt(addr) {
383d1be6b08SDavid du Colombier	complex Alt addr;
384d1be6b08SDavid du Colombier	print("	c	", addr.c\X, "\n");
385d1be6b08SDavid du Colombier	print("	v	", addr.v\X, "\n");
386d1be6b08SDavid du Colombier	print("	op	", addr.op, "\n");
387d1be6b08SDavid du Colombier	print("	err	", addr.err\X, "\n");
388d1be6b08SDavid du Colombier	print("	tag	", addr.tag\X, "\n");
389d1be6b08SDavid du Colombier	print("	entryno	", addr.entryno, "\n");
390d1be6b08SDavid du Colombier};
391d1be6b08SDavid du Colombier
392d1be6b08SDavid du ColombiersizeofRef = 4;
393d1be6b08SDavid du Colombieraggr Ref
394d1be6b08SDavid du Colombier{
395d1be6b08SDavid du Colombier	'D' 0 ref;
396d1be6b08SDavid du Colombier};
397d1be6b08SDavid du Colombier
398d1be6b08SDavid du Colombierdefn
399d1be6b08SDavid du ColombierRef(addr) {
400d1be6b08SDavid du Colombier	complex Ref addr;
401d1be6b08SDavid du Colombier	print("	ref	", addr.ref, "\n");
402d1be6b08SDavid du Colombier};
403d1be6b08SDavid du Colombier
404d1be6b08SDavid du ColombierDead = 0;
405d1be6b08SDavid du ColombierRunning = 1;
406d1be6b08SDavid du ColombierReady = 2;
407d1be6b08SDavid du ColombierRendezvous = 3;
408d1be6b08SDavid du ColombierChannone = 0;
409d1be6b08SDavid du ColombierChanalt = 1;
410d1be6b08SDavid du ColombierChansend = 2;
411d1be6b08SDavid du ColombierChanrecv = 3;
412d1be6b08SDavid du ColombierRENDHASH = 13;
413d1be6b08SDavid du ColombierPrintsize = 2048;
414d1be6b08SDavid du ColombierNPRIV = 8;
415*f591d971SDavid du ColombiersizeofRgrp = 60;
416d1be6b08SDavid du Colombieraggr Rgrp
417d1be6b08SDavid du Colombier{
418d1be6b08SDavid du Colombier	Lock 0 lock;
419*f591d971SDavid du Colombier	'a' 8 hash;
420d1be6b08SDavid du Colombier};
421d1be6b08SDavid du Colombier
422d1be6b08SDavid du Colombierdefn
423d1be6b08SDavid du ColombierRgrp(addr) {
424d1be6b08SDavid du Colombier	complex Rgrp addr;
425d1be6b08SDavid du Colombier	print("Lock lock {\n");
426d1be6b08SDavid du Colombier	Lock(addr.lock);
427d1be6b08SDavid du Colombier	print("}\n");
428d1be6b08SDavid du Colombier	print("	hash	", addr.hash, "\n");
429d1be6b08SDavid du Colombier};
430d1be6b08SDavid du Colombier
431d1be6b08SDavid du ColombiersizeofTqueue = 12;
432d1be6b08SDavid du Colombieraggr Tqueue
433d1be6b08SDavid du Colombier{
434d1be6b08SDavid du Colombier	'D' 0 asleep;
435d1be6b08SDavid du Colombier	'X' 4 $head;
436d1be6b08SDavid du Colombier	'X' 8 $tail;
437d1be6b08SDavid du Colombier};
438d1be6b08SDavid du Colombier
439d1be6b08SDavid du Colombierdefn
440d1be6b08SDavid du ColombierTqueue(addr) {
441d1be6b08SDavid du Colombier	complex Tqueue addr;
442d1be6b08SDavid du Colombier	print("	asleep	", addr.asleep, "\n");
443d1be6b08SDavid du Colombier	print("	$head	", addr.$head\X, "\n");
444d1be6b08SDavid du Colombier	print("	$tail	", addr.$tail\X, "\n");
445d1be6b08SDavid du Colombier};
446d1be6b08SDavid du Colombier
447*f591d971SDavid du ColombiersizeofThread = 124;
448d1be6b08SDavid du Colombieraggr Thread
449d1be6b08SDavid du Colombier{
450d1be6b08SDavid du Colombier	Lock 0 lock;
451*f591d971SDavid du Colombier	'a' 8 sched;
452*f591d971SDavid du Colombier	'D' 16 id;
453*f591d971SDavid du Colombier	'D' 20 grp;
454*f591d971SDavid du Colombier	'D' 24 moribund;
455*f591d971SDavid du Colombier	'D' 28 state;
456*f591d971SDavid du Colombier	'D' 32 nextstate;
457*f591d971SDavid du Colombier	'X' 36 stk;
458*f591d971SDavid du Colombier	'U' 40 stksize;
459*f591d971SDavid du Colombier	'A' Thread 44 next;
460*f591d971SDavid du Colombier	'X' 48 proc;
461*f591d971SDavid du Colombier	'A' Thread 52 nextt;
462*f591d971SDavid du Colombier	'D' 56 ret;
463*f591d971SDavid du Colombier	'X' 60 cmdname;
464*f591d971SDavid du Colombier	'D' 64 inrendez;
465*f591d971SDavid du Colombier	'A' Thread 68 rendhash;
466*f591d971SDavid du Colombier	'X' 72 rendtag;
467*f591d971SDavid du Colombier	'X' 76 rendval;
468*f591d971SDavid du Colombier	'D' 80 rendbreak;
469*f591d971SDavid du Colombier	'D' 84 chan;
470*f591d971SDavid du Colombier	'A' Alt 88 alt;
471*f591d971SDavid du Colombier	'a' 92 udata;
472d1be6b08SDavid du Colombier};
473d1be6b08SDavid du Colombier
474d1be6b08SDavid du Colombierdefn
475d1be6b08SDavid du ColombierThread(addr) {
476d1be6b08SDavid du Colombier	complex Thread addr;
477d1be6b08SDavid du Colombier	print("Lock lock {\n");
478d1be6b08SDavid du Colombier	Lock(addr.lock);
479d1be6b08SDavid du Colombier	print("}\n");
480d1be6b08SDavid du Colombier	print("	sched	", addr.sched, "\n");
481d1be6b08SDavid du Colombier	print("	id	", addr.id, "\n");
482d1be6b08SDavid du Colombier	print("	grp	", addr.grp, "\n");
483d1be6b08SDavid du Colombier	print("	moribund	", addr.moribund, "\n");
484d1be6b08SDavid du Colombier	print("	state	", addr.state, "\n");
485d1be6b08SDavid du Colombier	print("	nextstate	", addr.nextstate, "\n");
486d1be6b08SDavid du Colombier	print("	stk	", addr.stk\X, "\n");
487d1be6b08SDavid du Colombier	print("	stksize	", addr.stksize, "\n");
488d1be6b08SDavid du Colombier	print("	next	", addr.next\X, "\n");
489d1be6b08SDavid du Colombier	print("	proc	", addr.proc\X, "\n");
490d1be6b08SDavid du Colombier	print("	nextt	", addr.nextt\X, "\n");
491d1be6b08SDavid du Colombier	print("	ret	", addr.ret, "\n");
492d1be6b08SDavid du Colombier	print("	cmdname	", addr.cmdname\X, "\n");
493d1be6b08SDavid du Colombier	print("	inrendez	", addr.inrendez, "\n");
494d1be6b08SDavid du Colombier	print("	rendhash	", addr.rendhash\X, "\n");
495d1be6b08SDavid du Colombier	print("	rendtag	", addr.rendtag\X, "\n");
496d1be6b08SDavid du Colombier	print("	rendval	", addr.rendval\X, "\n");
497d1be6b08SDavid du Colombier	print("	rendbreak	", addr.rendbreak, "\n");
498d1be6b08SDavid du Colombier	print("	chan	", addr.chan, "\n");
499d1be6b08SDavid du Colombier	print("	alt	", addr.alt\X, "\n");
500d1be6b08SDavid du Colombier	print("	udata	", addr.udata, "\n");
501d1be6b08SDavid du Colombier};
502d1be6b08SDavid du Colombier
503d1be6b08SDavid du ColombiersizeofExecargs = 16;
504d1be6b08SDavid du Colombieraggr Execargs
505d1be6b08SDavid du Colombier{
506d1be6b08SDavid du Colombier	'X' 0 prog;
507d1be6b08SDavid du Colombier	'X' 4 args;
508d1be6b08SDavid du Colombier	'a' 8 fd;
509d1be6b08SDavid du Colombier};
510d1be6b08SDavid du Colombier
511d1be6b08SDavid du Colombierdefn
512d1be6b08SDavid du ColombierExecargs(addr) {
513d1be6b08SDavid du Colombier	complex Execargs addr;
514d1be6b08SDavid du Colombier	print("	prog	", addr.prog\X, "\n");
515d1be6b08SDavid du Colombier	print("	args	", addr.args\X, "\n");
516d1be6b08SDavid du Colombier	print("	fd	", addr.fd, "\n");
517d1be6b08SDavid du Colombier};
518d1be6b08SDavid du Colombier
519*f591d971SDavid du ColombiersizeofProc = 2432;
520d1be6b08SDavid du Colombieraggr Proc
521d1be6b08SDavid du Colombier{
522d1be6b08SDavid du Colombier	Lock 0 lock;
523*f591d971SDavid du Colombier	'a' 8 sched;
524*f591d971SDavid du Colombier	'D' 16 pid;
525*f591d971SDavid du Colombier	'D' 20 splhi;
526*f591d971SDavid du Colombier	'A' Thread 24 thread;
527*f591d971SDavid du Colombier	'D' 28 needexec;
528*f591d971SDavid du Colombier	Execargs 32 exec;
529*f591d971SDavid du Colombier	'A' Proc 48 newproc;
530*f591d971SDavid du Colombier	'a' 52 exitstr;
531*f591d971SDavid du Colombier	'D' 180 rforkflag;
532*f591d971SDavid du Colombier	'D' 184 nthreads;
533*f591d971SDavid du Colombier	Tqueue 188 threads;
534*f591d971SDavid du Colombier	Tqueue 200 ready;
535*f591d971SDavid du Colombier	Lock 212 readylock;
536*f591d971SDavid du Colombier	'a' 220 printbuf;
537*f591d971SDavid du Colombier	'D' 2268 blocked;
538*f591d971SDavid du Colombier	'D' 2272 pending;
539*f591d971SDavid du Colombier	'D' 2276 nonotes;
540*f591d971SDavid du Colombier	'U' 2280 nextID;
541*f591d971SDavid du Colombier	'A' Proc 2284 next;
542*f591d971SDavid du Colombier	'X' 2288 arg;
543*f591d971SDavid du Colombier	'a' 2292 str;
544*f591d971SDavid du Colombier	'X' 2420 wdata;
545*f591d971SDavid du Colombier	'X' 2424 udata;
546*f591d971SDavid du Colombier	'C' 2428 threadint;
547d1be6b08SDavid du Colombier};
548d1be6b08SDavid du Colombier
549d1be6b08SDavid du Colombierdefn
550d1be6b08SDavid du ColombierProc(addr) {
551d1be6b08SDavid du Colombier	complex Proc addr;
552d1be6b08SDavid du Colombier	print("Lock lock {\n");
553d1be6b08SDavid du Colombier	Lock(addr.lock);
554d1be6b08SDavid du Colombier	print("}\n");
555d1be6b08SDavid du Colombier	print("	sched	", addr.sched, "\n");
556d1be6b08SDavid du Colombier	print("	pid	", addr.pid, "\n");
557d1be6b08SDavid du Colombier	print("	splhi	", addr.splhi, "\n");
558d1be6b08SDavid du Colombier	print("	thread	", addr.thread\X, "\n");
559d1be6b08SDavid du Colombier	print("	needexec	", addr.needexec, "\n");
560d1be6b08SDavid du Colombier	print("Execargs exec {\n");
561d1be6b08SDavid du Colombier	Execargs(addr.exec);
562d1be6b08SDavid du Colombier	print("}\n");
563d1be6b08SDavid du Colombier	print("	newproc	", addr.newproc\X, "\n");
564d1be6b08SDavid du Colombier	print("	exitstr	", addr.exitstr, "\n");
565d1be6b08SDavid du Colombier	print("	rforkflag	", addr.rforkflag, "\n");
566d1be6b08SDavid du Colombier	print("	nthreads	", addr.nthreads, "\n");
567d1be6b08SDavid du Colombier	print("Tqueue threads {\n");
568d1be6b08SDavid du Colombier	Tqueue(addr.threads);
569d1be6b08SDavid du Colombier	print("}\n");
570d1be6b08SDavid du Colombier	print("Tqueue ready {\n");
571d1be6b08SDavid du Colombier	Tqueue(addr.ready);
572d1be6b08SDavid du Colombier	print("}\n");
573d1be6b08SDavid du Colombier	print("Lock readylock {\n");
574d1be6b08SDavid du Colombier	Lock(addr.readylock);
575d1be6b08SDavid du Colombier	print("}\n");
576d1be6b08SDavid du Colombier	print("	printbuf	", addr.printbuf, "\n");
577d1be6b08SDavid du Colombier	print("	blocked	", addr.blocked, "\n");
578d1be6b08SDavid du Colombier	print("	pending	", addr.pending, "\n");
579d1be6b08SDavid du Colombier	print("	nonotes	", addr.nonotes, "\n");
580d1be6b08SDavid du Colombier	print("	nextID	", addr.nextID, "\n");
581d1be6b08SDavid du Colombier	print("	next	", addr.next\X, "\n");
582d1be6b08SDavid du Colombier	print("	arg	", addr.arg\X, "\n");
583d1be6b08SDavid du Colombier	print("	str	", addr.str, "\n");
584d1be6b08SDavid du Colombier	print("	wdata	", addr.wdata\X, "\n");
585d1be6b08SDavid du Colombier	print("	udata	", addr.udata\X, "\n");
586d1be6b08SDavid du Colombier	print("	threadint	", addr.threadint, "\n");
587d1be6b08SDavid du Colombier};
588d1be6b08SDavid du Colombier
589*f591d971SDavid du ColombiersizeofPqueue = 16;
590d1be6b08SDavid du Colombieraggr Pqueue
591d1be6b08SDavid du Colombier{
592d1be6b08SDavid du Colombier	Lock 0 lock;
593*f591d971SDavid du Colombier	'A' Proc 8 $head;
594*f591d971SDavid du Colombier	'A' Proc 12 $tail;
595d1be6b08SDavid du Colombier};
596d1be6b08SDavid du Colombier
597d1be6b08SDavid du Colombierdefn
598d1be6b08SDavid du ColombierPqueue(addr) {
599d1be6b08SDavid du Colombier	complex Pqueue addr;
600d1be6b08SDavid du Colombier	print("Lock lock {\n");
601d1be6b08SDavid du Colombier	Lock(addr.lock);
602d1be6b08SDavid du Colombier	print("}\n");
603d1be6b08SDavid du Colombier	print("	$head	", addr.$head\X, "\n");
604d1be6b08SDavid du Colombier	print("	$tail	", addr.$tail\X, "\n");
605d1be6b08SDavid du Colombier};
606d1be6b08SDavid du Colombier
607d1be6b08SDavid du ColombiersizeofIoproc = 160;
608d1be6b08SDavid du Colombieraggr Ioproc
609d1be6b08SDavid du Colombier{
610d1be6b08SDavid du Colombier	'D' 0 tid;
611d1be6b08SDavid du Colombier	'A' Channel 4 c;
612d1be6b08SDavid du Colombier	'A' Channel 8 creply;
613d1be6b08SDavid du Colombier	'D' 12 inuse;
614d1be6b08SDavid du Colombier	'X' 16 op;
615d1be6b08SDavid du Colombier	'X' 20 arg;
616d1be6b08SDavid du Colombier	'D' 24 ret;
617d1be6b08SDavid du Colombier	'a' 28 err;
618d1be6b08SDavid du Colombier	'A' Ioproc 156 next;
619d1be6b08SDavid du Colombier};
620d1be6b08SDavid du Colombier
621d1be6b08SDavid du Colombierdefn
622d1be6b08SDavid du ColombierIoproc(addr) {
623d1be6b08SDavid du Colombier	complex Ioproc addr;
624d1be6b08SDavid du Colombier	print("	tid	", addr.tid, "\n");
625d1be6b08SDavid du Colombier	print("	c	", addr.c\X, "\n");
626d1be6b08SDavid du Colombier	print("	creply	", addr.creply\X, "\n");
627d1be6b08SDavid du Colombier	print("	inuse	", addr.inuse, "\n");
628d1be6b08SDavid du Colombier	print("	op	", addr.op\X, "\n");
629d1be6b08SDavid du Colombier	print("	arg	", addr.arg\X, "\n");
630d1be6b08SDavid du Colombier	print("	ret	", addr.ret, "\n");
631d1be6b08SDavid du Colombier	print("	err	", addr.err, "\n");
632d1be6b08SDavid du Colombier	print("	next	", addr.next\X, "\n");
633d1be6b08SDavid du Colombier};
634d1be6b08SDavid du Colombier
635d1be6b08SDavid du Colombiercomplex Pqueue _threadpq;
636d1be6b08SDavid du Colombiercomplex Channel _threadwaitchan;
637d1be6b08SDavid du Colombiercomplex Rgrp _threadrgrp;
638d1be6b08SDavid du Colombiersizeof_2_ = 24;
639d1be6b08SDavid du Colombieraggr _2_
640d1be6b08SDavid du Colombier{
641d1be6b08SDavid du Colombier	'X' 0 pp;
642d1be6b08SDavid du Colombier	'X' 4 next;
643d1be6b08SDavid du Colombier	'X' 8 last;
644d1be6b08SDavid du Colombier	'X' 12 first;
645d1be6b08SDavid du Colombier	'U' 16 pid;
646d1be6b08SDavid du Colombier	'U' 20 what;
647d1be6b08SDavid du Colombier};
648d1be6b08SDavid du Colombier
649d1be6b08SDavid du Colombierdefn
650d1be6b08SDavid du Colombier_2_(addr) {
651d1be6b08SDavid du Colombier	complex _2_ addr;
652d1be6b08SDavid du Colombier	print("	pp	", addr.pp\X, "\n");
653d1be6b08SDavid du Colombier	print("	next	", addr.next\X, "\n");
654d1be6b08SDavid du Colombier	print("	last	", addr.last\X, "\n");
655d1be6b08SDavid du Colombier	print("	first	", addr.first\X, "\n");
656d1be6b08SDavid du Colombier	print("	pid	", addr.pid, "\n");
657d1be6b08SDavid du Colombier	print("	what	", addr.what, "\n");
658d1be6b08SDavid du Colombier};
659d1be6b08SDavid du Colombier
660*f591d971SDavid du ColombiersizeofTos = 72;
661d1be6b08SDavid du Colombieraggr Tos
662d1be6b08SDavid du Colombier{
663d1be6b08SDavid du Colombier	_2_ 0 prof;
664d1be6b08SDavid du Colombier	'W' 24 cyclefreq;
665d1be6b08SDavid du Colombier	'V' 32 kcycles;
666d1be6b08SDavid du Colombier	'V' 40 pcycles;
667d1be6b08SDavid du Colombier	'U' 48 pid;
668d1be6b08SDavid du Colombier	'U' 52 clock;
669*f591d971SDavid du Colombier	'a' 56 kscr;
670d1be6b08SDavid du Colombier};
671d1be6b08SDavid du Colombier
672d1be6b08SDavid du Colombierdefn
673d1be6b08SDavid du ColombierTos(addr) {
674d1be6b08SDavid du Colombier	complex Tos addr;
675d1be6b08SDavid du Colombier	print("_2_ prof {\n");
676d1be6b08SDavid du Colombier	_2_(addr.prof);
677d1be6b08SDavid du Colombier	print("}\n");
678d1be6b08SDavid du Colombier	print("	cyclefreq	", addr.cyclefreq, "\n");
679d1be6b08SDavid du Colombier	print("	kcycles	", addr.kcycles, "\n");
680d1be6b08SDavid du Colombier	print("	pcycles	", addr.pcycles, "\n");
681d1be6b08SDavid du Colombier	print("	pid	", addr.pid, "\n");
682d1be6b08SDavid du Colombier	print("	clock	", addr.clock, "\n");
683*f591d971SDavid du Colombier	print("	kscr	", addr.kscr, "\n");
684d1be6b08SDavid du Colombier};
685d1be6b08SDavid du Colombier
686d1be6b08SDavid du Colombiercomplex Tos _tos;
687d1be6b08SDavid du Colombiercomplex Proc _schedinit:p;
688d1be6b08SDavid du Colombiercomplex Thread _schedinit:t;
689d1be6b08SDavid du Colombiercomplex Thread _schedinit:l;
690d1be6b08SDavid du Colombiercomplex Proc needstack:p;
691d1be6b08SDavid du Colombiercomplex Thread needstack:t;
692d1be6b08SDavid du Colombiercomplex Proc _sched:p;
693d1be6b08SDavid du Colombiercomplex Thread _sched:t;
694d1be6b08SDavid du Colombiercomplex Proc runthread:p;
695d1be6b08SDavid du Colombiercomplex Thread runthread:t;
696d1be6b08SDavid du Colombiercomplex Tqueue runthread:q;
697d1be6b08SDavid du Colombiercomplex Thread _threadready:t;
698d1be6b08SDavid du Colombiercomplex Tqueue _threadready:q;
699