diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/lib9p/rfork.c |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/lib9p/rfork.c')
-rwxr-xr-x | sys/src/lib9p/rfork.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/sys/src/lib9p/rfork.c b/sys/src/lib9p/rfork.c new file mode 100755 index 000000000..e279cc9e9 --- /dev/null +++ b/sys/src/lib9p/rfork.c @@ -0,0 +1,34 @@ +#include <u.h> +#include <libc.h> +#include <fcall.h> +#include <thread.h> +#include <9p.h> + +static void +rforker(void (*fn)(void*), void *arg, int flag) +{ + switch(rfork(RFPROC|RFMEM|RFNOWAIT|flag)){ + case -1: + sysfatal("rfork: %r"); + default: + return; + case 0: + fn(arg); + _exits(0); + } +} + +void +listensrv(Srv *s, char *addr) +{ + _forker = rforker; + _listensrv(s, addr); +} + +void +postmountsrv(Srv *s, char *name, char *mtpt, int flag) +{ + _forker = rforker; + _postmountsrv(s, name, mtpt, flag); +} + |