From c73e7cf5aceda56baaa8eb8a3420ca2a8f232af5 Mon Sep 17 00:00:00 2001 From: rsc Date: Tue, 20 Apr 2004 05:05:38 +0000 Subject: a few workarounds. acidtypes seems not to get global types. --- acid/thread | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) (limited to 'acid/thread') 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); -- cgit v1.2.3