summaryrefslogtreecommitdiffstats
path: root/src/lib9/ffork-FreeBSD.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib9/ffork-FreeBSD.c')
-rw-r--r--src/lib9/ffork-FreeBSD.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lib9/ffork-FreeBSD.c b/src/lib9/ffork-FreeBSD.c
index 3829bb2d..71945edc 100644
--- a/src/lib9/ffork-FreeBSD.c
+++ b/src/lib9/ffork-FreeBSD.c
@@ -4,14 +4,19 @@ extern int __isthreaded;
int
ffork(int flags, void(*fn)(void*), void *arg)
{
+ int pid;
void *p;
+ _p9uproc(0);
__isthreaded = 1;
p = malloc(16384);
if(p == nil)
return -1;
memset(p, 0xFE, 16384);
- return rfork_thread(RFPROC|flags, (char*)p+16000, (int(*)(void*))fn, arg);
+ pid = rfork_thread(RFPROC|flags, (char*)p+16000, (int(*)(void*))fn, arg);
+ if(pid == 0)
+ _p9uproc(0);
+ return pid;
}
/*