commit c73e7cf5aceda56baaa8eb8a3420ca2a8f232af5 from: rsc date: Tue Apr 20 05:05:38 2004 UTC a few workarounds. acidtypes seems not to get global types. commit - d2cbcb7722fc43af0cc1092f4572b8b9bd40fa71 commit + c73e7cf5aceda56baaa8eb8a3420ca2a8f232af5 blob - 1bc723caa6421abb755abeeb7bf6faf46686f19a blob + 9fcd9b58196d4a672337cee8c6ed52206acbf258 --- acid/thread +++ 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);