1 0a61c07d 2004-04-19 devnull // runtime library definitions
2 0a61c07d 2004-04-19 devnull if objtype=="mips2" then objtype="mips";
4 0a61c07d 2004-04-19 devnull include("/sys/src/alef/lib/"+objtype+"/acid");
7 0a61c07d 2004-04-19 devnull pchan(addr)
9 0a61c07d 2004-04-19 devnull local l, n;
11 0a61c07d 2004-04-19 devnull complex Chan addr;
13 0a61c07d 2004-04-19 devnull if addr.sva then
14 0a61c07d 2004-04-19 devnull print("Sender waiting: buffer ", addr.sva, "\n");
16 0a61c07d 2004-04-19 devnull print("No sender\n");
18 0a61c07d 2004-04-19 devnull if addr.rva then
19 0a61c07d 2004-04-19 devnull print("Receiver waiting: buffer ", addr.rva, "\n");
21 0a61c07d 2004-04-19 devnull print("No receiver\n");
23 0a61c07d 2004-04-19 devnull if addr.async then {
25 0a61c07d 2004-04-19 devnull l = addr.qh;
26 0a61c07d 2004-04-19 devnull while l do {
28 0a61c07d 2004-04-19 devnull l = l.next;
30 0a61c07d 2004-04-19 devnull print("Async channel\n\t", n\D, " messsages queued\n\t");
31 0a61c07d 2004-04-19 devnull l = addr.free;
32 0a61c07d 2004-04-19 devnull while l do {
34 0a61c07d 2004-04-19 devnull l = l.next;
36 0a61c07d 2004-04-19 devnull print(n\D, " free buffers\n");
39 0a61c07d 2004-04-19 devnull if addr.selt then {
40 0a61c07d 2004-04-19 devnull l = "send";
41 0a61c07d 2004-04-19 devnull if addr.selt then
42 0a61c07d 2004-04-19 devnull l = "receive";
43 0a61c07d 2004-04-19 devnull print("In select ", l, ": task ", addr.selt\X, "\n");
44 0a61c07d 2004-04-19 devnull labstk(addr.selt);
51 0a61c07d 2004-04-19 devnull local ta, tq;
53 0a61c07d 2004-04-19 devnull // Private proc tdb pointer
54 0a61c07d 2004-04-19 devnull ta = *{ 0x7fffe000,
55 0a61c07d 2004-04-19 devnull 0x0ffdf000,
56 0a61c07d 2004-04-19 devnull 0xbfff5000 }[match(objtype, {"mips", "sparc", "386"})];
58 0a61c07d 2004-04-19 devnull complex Tdb ta;
60 0a61c07d 2004-04-19 devnull print("tdb ", ta.ntask, " tasks:");
61 0a61c07d 2004-04-19 devnull if *ta then
62 0a61c07d 2004-04-19 devnull print("locked\n");
64 0a61c07d 2004-04-19 devnull print("unlocked\n");
66 0a61c07d 2004-04-19 devnull if ta.ctask then {
67 0a61c07d 2004-04-19 devnull print("current task ", ta.ctask, "\n");
68 0a61c07d 2004-04-19 devnull Task(ta.ctask);
71 0a61c07d 2004-04-19 devnull print("proc is idle\n");
73 0a61c07d 2004-04-19 devnull tq = (Task)ta.runhd;
74 0a61c07d 2004-04-19 devnull if tq == 0 then
75 0a61c07d 2004-04-19 devnull return {};
77 0a61c07d 2004-04-19 devnull print("Tasks ready to run:\n");
78 0a61c07d 2004-04-19 devnull while tq != 0 do {
79 0a61c07d 2004-04-19 devnull print("Task(", tq, ")\n");
80 0a61c07d 2004-04-19 devnull tq = tq.link;
85 0a61c07d 2004-04-19 devnull lselect(addr)
89 0a61c07d 2004-04-19 devnull complex Task addr;
90 0a61c07d 2004-04-19 devnull complex Chan c;
92 0a61c07d 2004-04-19 devnull c = addr.slist;
93 0a61c07d 2004-04-19 devnull if c == 0 then {
94 0a61c07d 2004-04-19 devnull print("No select pending\n");
95 0a61c07d 2004-04-19 devnull return {};
97 0a61c07d 2004-04-19 devnull while c do {
98 0a61c07d 2004-04-19 devnull print("pchan(", c\X, ")\n");
99 0a61c07d 2004-04-19 devnull c = c.sellink;
104 0a61c07d 2004-04-19 devnull pqlock(addr)
106 0a61c07d 2004-04-19 devnull local t;
108 0a61c07d 2004-04-19 devnull complex QLock addr;
110 0a61c07d 2004-04-19 devnull if *addr then
111 0a61c07d 2004-04-19 devnull print("QLock is under modification\n");
112 0a61c07d 2004-04-19 devnull if addr.used == 0 then
113 0a61c07d 2004-04-19 devnull return {};
115 0a61c07d 2004-04-19 devnull print("QLock is held\n");
116 0a61c07d 2004-04-19 devnull t = addr.queue;
117 0a61c07d 2004-04-19 devnull complex Task t;
118 0a61c07d 2004-04-19 devnull if t == 0 then {
119 0a61c07d 2004-04-19 devnull print("No tasks waiting\n");
120 0a61c07d 2004-04-19 devnull return {};
122 0a61c07d 2004-04-19 devnull print("Tasks waiting:\n");
123 0a61c07d 2004-04-19 devnull while t do {
124 0a61c07d 2004-04-19 devnull print("Task(", t, ")\n");
125 0a61c07d 2004-04-19 devnull tq = tq.qlink;
129 0a61c07d 2004-04-19 devnull srcpath = {
131 0a61c07d 2004-04-19 devnull "/sys/src/alef/lib/port/",
132 0a61c07d 2004-04-19 devnull "/sys/src/alef/lib/p9/",
133 0a61c07d 2004-04-19 devnull "/sys/src/alef/lib/"+objtype+"/"
136 0a61c07d 2004-04-19 devnull defn labstk(l)
138 0a61c07d 2004-04-19 devnull if objtype == "386" then
139 0a61c07d 2004-04-19 devnull _stk(ALEF_switch, *l, linkreg(0), 0);
141 0a61c07d 2004-04-19 devnull _stk(*(l+4), *l, linkreg(0), 0);
144 0a61c07d 2004-04-19 devnull print(acidfile);
146 0a61c07d 2004-04-19 devnull include("/sys/src/alef/lib/port/acid."+objtype);
147 0a61c07d 2004-04-19 devnull include("/sys/src/alef/lib/p9/acid."+objtype);