Blame


1 0a61c07d 2004-04-19 devnull // runtime library definitions
2 0a61c07d 2004-04-19 devnull if objtype=="mips2" then objtype="mips";
3 0a61c07d 2004-04-19 devnull
4 0a61c07d 2004-04-19 devnull include("/sys/src/alef/lib/"+objtype+"/acid");
5 0a61c07d 2004-04-19 devnull
6 0a61c07d 2004-04-19 devnull defn
7 0a61c07d 2004-04-19 devnull pchan(addr)
8 0a61c07d 2004-04-19 devnull {
9 0a61c07d 2004-04-19 devnull local l, n;
10 0a61c07d 2004-04-19 devnull
11 0a61c07d 2004-04-19 devnull complex Chan addr;
12 0a61c07d 2004-04-19 devnull
13 0a61c07d 2004-04-19 devnull if addr.sva then
14 0a61c07d 2004-04-19 devnull print("Sender waiting: buffer ", addr.sva, "\n");
15 0a61c07d 2004-04-19 devnull else
16 0a61c07d 2004-04-19 devnull print("No sender\n");
17 0a61c07d 2004-04-19 devnull
18 0a61c07d 2004-04-19 devnull if addr.rva then
19 0a61c07d 2004-04-19 devnull print("Receiver waiting: buffer ", addr.rva, "\n");
20 0a61c07d 2004-04-19 devnull else
21 0a61c07d 2004-04-19 devnull print("No receiver\n");
22 0a61c07d 2004-04-19 devnull
23 0a61c07d 2004-04-19 devnull if addr.async then {
24 0a61c07d 2004-04-19 devnull n = 0;
25 0a61c07d 2004-04-19 devnull l = addr.qh;
26 0a61c07d 2004-04-19 devnull while l do {
27 0a61c07d 2004-04-19 devnull n = n+1;
28 0a61c07d 2004-04-19 devnull l = l.next;
29 0a61c07d 2004-04-19 devnull }
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 {
33 0a61c07d 2004-04-19 devnull n = n+1;
34 0a61c07d 2004-04-19 devnull l = l.next;
35 0a61c07d 2004-04-19 devnull }
36 0a61c07d 2004-04-19 devnull print(n\D, " free buffers\n");
37 0a61c07d 2004-04-19 devnull }
38 0a61c07d 2004-04-19 devnull
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);
45 0a61c07d 2004-04-19 devnull }
46 0a61c07d 2004-04-19 devnull }
47 0a61c07d 2004-04-19 devnull
48 0a61c07d 2004-04-19 devnull defn
49 0a61c07d 2004-04-19 devnull tdb()
50 0a61c07d 2004-04-19 devnull {
51 0a61c07d 2004-04-19 devnull local ta, tq;
52 0a61c07d 2004-04-19 devnull
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"})];
57 0a61c07d 2004-04-19 devnull
58 0a61c07d 2004-04-19 devnull complex Tdb ta;
59 0a61c07d 2004-04-19 devnull
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");
63 0a61c07d 2004-04-19 devnull else
64 0a61c07d 2004-04-19 devnull print("unlocked\n");
65 0a61c07d 2004-04-19 devnull
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);
69 0a61c07d 2004-04-19 devnull }
70 0a61c07d 2004-04-19 devnull else
71 0a61c07d 2004-04-19 devnull print("proc is idle\n");
72 0a61c07d 2004-04-19 devnull
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 {};
76 0a61c07d 2004-04-19 devnull
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;
81 0a61c07d 2004-04-19 devnull }
82 0a61c07d 2004-04-19 devnull }
83 0a61c07d 2004-04-19 devnull
84 0a61c07d 2004-04-19 devnull defn
85 0a61c07d 2004-04-19 devnull lselect(addr)
86 0a61c07d 2004-04-19 devnull {
87 0a61c07d 2004-04-19 devnull local c;
88 0a61c07d 2004-04-19 devnull
89 0a61c07d 2004-04-19 devnull complex Task addr;
90 0a61c07d 2004-04-19 devnull complex Chan c;
91 0a61c07d 2004-04-19 devnull
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 {};
96 0a61c07d 2004-04-19 devnull }
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;
100 0a61c07d 2004-04-19 devnull }
101 0a61c07d 2004-04-19 devnull }
102 0a61c07d 2004-04-19 devnull
103 0a61c07d 2004-04-19 devnull defn
104 0a61c07d 2004-04-19 devnull pqlock(addr)
105 0a61c07d 2004-04-19 devnull {
106 0a61c07d 2004-04-19 devnull local t;
107 0a61c07d 2004-04-19 devnull
108 0a61c07d 2004-04-19 devnull complex QLock addr;
109 0a61c07d 2004-04-19 devnull
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 {};
114 0a61c07d 2004-04-19 devnull
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 {};
121 0a61c07d 2004-04-19 devnull }
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;
126 0a61c07d 2004-04-19 devnull }
127 0a61c07d 2004-04-19 devnull }
128 0a61c07d 2004-04-19 devnull
129 0a61c07d 2004-04-19 devnull srcpath = {
130 0a61c07d 2004-04-19 devnull "./",
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+"/"
134 0a61c07d 2004-04-19 devnull };
135 0a61c07d 2004-04-19 devnull
136 0a61c07d 2004-04-19 devnull defn labstk(l)
137 0a61c07d 2004-04-19 devnull {
138 0a61c07d 2004-04-19 devnull if objtype == "386" then
139 0a61c07d 2004-04-19 devnull _stk(ALEF_switch, *l, linkreg(0), 0);
140 0a61c07d 2004-04-19 devnull else
141 0a61c07d 2004-04-19 devnull _stk(*(l+4), *l, linkreg(0), 0);
142 0a61c07d 2004-04-19 devnull }
143 0a61c07d 2004-04-19 devnull
144 0a61c07d 2004-04-19 devnull print(acidfile);
145 0a61c07d 2004-04-19 devnull
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);