do threading right

This commit is contained in:
rsc 2005-01-04 22:17:10 +00:00
parent b10db40d3b
commit f4b26b64bc
2 changed files with 4 additions and 26 deletions

View file

@ -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

View file

@ -25,36 +25,18 @@ makeports(Ruleset *rules[])
addport(rules[i]->port);
}
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);
}