tdo threading right - 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 f4b26b64bc699519008009dad72c3248a2e414a0
 (DIR) parent b10db40d3b82f192cc04b70305e4ec24109edf46
 (HTM) Author: rsc <devnull@localhost>
       Date:   Tue,  4 Jan 2005 22:17:10 +0000
       
       do threading right
       
       Diffstat:
         M src/cmd/plumb/fsys.c                |       2 +-
         M src/cmd/plumb/plumber.c             |      28 +++-------------------------
       
       2 files changed, 4 insertions(+), 26 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/plumb/fsys.c b/src/cmd/plumb/fsys.c
       t@@ -199,7 +199,7 @@ startfsys(void)
                if(post9pservice(p[1], "plumb") < 0)
                        sysfatal("post9pservice plumb: %r");
                close(p[1]);
       -        fsysproc(nil);
       +        proccreate(fsysproc, nil, Stack);
        }
        
        static void
 (DIR) diff --git a/src/cmd/plumb/plumber.c b/src/cmd/plumb/plumber.c
       t@@ -26,35 +26,17 @@ makeports(Ruleset *rules[])
        }
        
        void
       -mainproc(void *v)
       -{
       -        Channel *c;
       -
       -        c = v;
       -        printerrors = 0;
       -        makeports(rules);
       -        startfsys();
       -        sendp(c, nil);
       -}
       -
       -void
        threadmain(int argc, char *argv[])
        {
                char buf[512];
                int fd;
       -        int volatile dofork;
       -        Channel *c;
        
                progname = "plumber";
       -        dofork = 1;
        
                ARGBEGIN{
                case 'd':
                        debug = 1;
                        break;
       -        case 'f':
       -                dofork = 0;
       -                break;
                case 'p':
                        plumbfile = ARGF();
                        break;
       t@@ -83,17 +65,13 @@ threadmain(int argc, char *argv[])
                rules = readrules(plumbfile, fd);
                close(fd);
        
       -        if(dofork)
       -                threaddaemonize();
       -
                /*
                 * Start all processes and threads from other proc
                 * so we (main pid) can return to user.
                 */
       -        c = chancreate(sizeof(void*), 0);
       -        proccreate(mainproc, c, 8192);
       -        recvp(c);
       -        chanfree(c);
       +        printerrors = 0;
       +        makeports(rules);
       +        startfsys();
                threadexits(nil);
        }