aboutsummaryrefslogtreecommitdiff
path: root/acid/thread
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2004-04-20 05:05:38 +0000
committerrsc <devnull@localhost>2004-04-20 05:05:38 +0000
commitc73e7cf5aceda56baaa8eb8a3420ca2a8f232af5 (patch)
tree1ae95d7b45b72aa3052e692cbc6f0969ecc438ef /acid/thread
parentd2cbcb7722fc43af0cc1092f4572b8b9bd40fa71 (diff)
downloadplan9port-c73e7cf5aceda56baaa8eb8a3420ca2a8f232af5.tar.gz
plan9port-c73e7cf5aceda56baaa8eb8a3420ca2a8f232af5.tar.bz2
plan9port-c73e7cf5aceda56baaa8eb8a3420ca2a8f232af5.zip
a few workarounds. acidtypes seems not to get global types.
Diffstat (limited to 'acid/thread')
-rw-r--r--acid/thread39
1 files changed, 33 insertions, 6 deletions
diff --git a/acid/thread b/acid/thread
index 1bc723ca..9fcd9b58 100644
--- a/acid/thread
+++ b/acid/thread
@@ -169,18 +169,19 @@ defn pthreads(P){
defn threads(){
local P;
-
complex Pqueue _threadpq;
+
P = (Proc)_threadpq.$head;
while P != 0 do{
if P != (Proc)_threadpq.$head then print("\n");
lproc(P);
- P = P.next;
+ P = (Proc)P.next;
}
}
defn stacks(){
local P, mainpid;
+ complex Pqueue _threadpq;
stkprefix = "";
mainpid = pid;
@@ -202,6 +203,7 @@ defn stacks(){
defn stacksizes(){
local P, T, Tq, top, sp, mainpid;
+ complex Pqueue _threadpq;
mainpid = pid;
P = (Proc)_threadpq.$head;
@@ -230,6 +232,10 @@ defn lproc(P){
pthreads(P);
}
+threadstkignore = {
+ "plan9/src/libthread/",
+ "plan9/src/libc/(386|arm|alpha|sparc|power|mips)/"
+};
defn threadstks(P){
complex Proc P;
local T, Tq, mainpid, pref, ign;
@@ -238,10 +244,7 @@ defn threadstks(P){
pref = stkprefix;
stkprefix = pref+"\t\t";
ign = stkignore;
- stkignore = {
- "plan9/src/libthread/",
- "plan9/src/libc/(386|arm|alpha|sparc|power|mips)/"
- };
+ stkignore = threadstkignore;
setproc(P.pid);
Tq = (Tqueue)P.threads;
T = (Thread)Tq.$head;
@@ -272,6 +275,7 @@ defn proc(P){
defn procs(){
local P;
+ complex Pqueue _threadpq;
P = (Proc)_threadpq.$head;
while P != 0 do{
@@ -361,4 +365,27 @@ defn channel(C) {
}
}
+defn polling() {
+ local i, c, t, p, pf;
+
+ p=(Poll)polls; pf=(struct_pollfd)pfd; loop 1,*npoll do {
+ print("\tfd ", pf.fd\D, " ");
+ if pf.events & 1 then
+ print("r");
+ else if pf.events & 2 then
+ print("w");
+ else
+ print(pf.events\D);
+ print(" chan Channel(", p.c\X, ")\n");
+ p = (Poll)(p+sizeofPoll);
+ pf = (struct_pollfd)(pf+sizeofstruct_pollfd);
+ }
+
+ c=sleepchan; t=sleeptime; loop 1,*nsleep do {
+ print("\tsleep ", *t\D, " Channel(", *c\X, ")\n");
+ c++;
+ t++;
+ }
+}
+
print(acidfile);