ta few workarounds.  acidtypes seems not to get global types. - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit c73e7cf5aceda56baaa8eb8a3420ca2a8f232af5
 (DIR) parent d2cbcb7722fc43af0cc1092f4572b8b9bd40fa71
 (HTM) Author: rsc <devnull@localhost>
       Date:   Tue, 20 Apr 2004 05:05:38 +0000
       
       a few workarounds.  acidtypes seems not to get global types.
       
       Diffstat:
         M acid/thread                         |      39 ++++++++++++++++++++++++++-----
       
       1 file changed, 33 insertions(+), 6 deletions(-)
       ---
 (DIR) diff --git a/acid/thread b/acid/thread
       t@@ -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;
       t@@ -202,6 +203,7 @@ defn stacks(){
        
        defn stacksizes(){
                local P, T, Tq, top, sp, mainpid;
       +        complex Pqueue _threadpq;
        
                mainpid = pid;
                P = (Proc)_threadpq.$head;
       t@@ -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;
       t@@ -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;
       t@@ -272,6 +275,7 @@ defn proc(P){
        
        defn procs(){
                local P;
       +        complex Pqueue _threadpq;
        
                P = (Proc)_threadpq.$head;
                while P != 0 do{
       t@@ -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);