blob: 17848551304bb14ae1b797f55481e74de71d0e30 [file] [log] [blame]
rsc2277c5d2004-03-21 04:33:13 +00001#include <u.h>
2#include <libc.h>
3#include <fcall.h>
4#include <thread.h>
5#include <9p.h>
rsc2aa7d302005-02-11 17:00:06 +00006
7static void
8launchsrv(void *v)
9{
10 srv(v);
11}
rsc2277c5d2004-03-21 04:33:13 +000012
13void
14threadpostmountsrv(Srv *s, char *name, char *mtpt, int flag)
15{
rsc2aa7d302005-02-11 17:00:06 +000016 int fd[2];
rsc2aa7d302005-02-11 17:00:06 +000017
18 if(!s->nopipe){
19 if(pipe(fd) < 0)
20 sysfatal("pipe: %r");
21 s->infd = s->outfd = fd[1];
22 s->srvfd = fd[0];
23 }
Russ Cox118dfa92008-05-05 23:07:54 -040024 if(name || mtpt){
25 if(post9pservice(s->srvfd, name, mtpt) < 0)
26 sysfatal("post9pservice %s: %r", name);
27 }else if(!s->nopipe)
28 sysfatal("no one to serve");
Russ Cox56dc04c2008-07-04 12:24:14 -040029 if(s->foreground)
30 srv(s);
31 else
32 proccreate(launchsrv, s, 32*1024);
rsc2277c5d2004-03-21 04:33:13 +000033}