| #include <u.h> |
| #include <libc.h> |
| #include <fcall.h> |
| #include <thread.h> |
| #include <9p.h> |
| |
| static void |
| launchsrv(void *v) |
| { |
| srv(v); |
| } |
| |
| void |
| threadpostmountsrv(Srv *s, char *name, char *mtpt, int flag) |
| { |
| int fd[2]; |
| |
| if(!s->nopipe){ |
| if(pipe(fd) < 0) |
| sysfatal("pipe: %r"); |
| s->infd = s->outfd = fd[1]; |
| s->srvfd = fd[0]; |
| } |
| if(name || mtpt){ |
| if(post9pservice(s->srvfd, name, mtpt) < 0) |
| sysfatal("post9pservice %s: %r", name); |
| }else if(!s->nopipe) |
| sysfatal("no one to serve"); |
| if(s->foreground) |
| srv(s); |
| else |
| proccreate(launchsrv, s, 32*1024); |
| } |