plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

commit f4b26b64bc699519008009dad72c3248a2e414a0
parent b10db40d3b82f192cc04b70305e4ec24109edf46
Author: rsc <devnull@localhost>
Date:   Tue,  4 Jan 2005 22:17:10 +0000

do threading right

Diffstat:
Msrc/cmd/plumb/fsys.c | 2+-
Msrc/cmd/plumb/plumber.c | 28+++-------------------------
2 files changed, 4 insertions(+), 26 deletions(-)

diff --git a/src/cmd/plumb/fsys.c b/src/cmd/plumb/fsys.c @@ -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 diff --git a/src/cmd/plumb/plumber.c b/src/cmd/plumb/plumber.c @@ -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; @@ -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); }