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);
}