tcall srv->start at start - 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 2aa7d3036738bc548cfe6d8d83ff45cb1cb9c8c7
 (DIR) parent b589fce2fbf05ae18a6f015240f87ce2a163521f
 (HTM) Author: rsc <devnull@localhost>
       Date:   Fri, 11 Feb 2005 17:00:06 +0000
       
       call srv->start at start
       
       Diffstat:
         M src/lib9p/srv.c                     |       3 +++
         M src/lib9p/tpost.c                   |      26 +++++++++++++++++++-------
       
       2 files changed, 22 insertions(+), 7 deletions(-)
       ---
 (DIR) diff --git a/src/lib9p/srv.c b/src/lib9p/srv.c
       t@@ -705,6 +705,9 @@ srv(Srv *srv)
                srv->fpool->srv = srv;
                srv->rpool->srv = srv;
        
       +        if(srv->start)
       +                srv->start(srv);
       +
                while(r = getreq(srv)){
                        if(r->error){
                                respond(r, r->error);
 (DIR) diff --git a/src/lib9p/tpost.c b/src/lib9p/tpost.c
       t@@ -3,16 +3,28 @@
        #include <fcall.h>
        #include <thread.h>
        #include <9p.h>
       -#include "post.h"
       +
       +static void
       +launchsrv(void *v)
       +{
       +        srv(v);
       +}
        
        void
        threadpostmountsrv(Srv *s, char *name, char *mtpt, int flag)
        {
       -        Postcrud *p;
       +        int fd[2];
        
       -        p = _post1(s, name, mtpt, flag);
       -        if(procrfork(_post2, s, 32*1024, RFNAMEG|RFNOTEG) < 0)
       -                sysfatal("procrfork: %r");
       -        _post3(p);
       -}
       +        if(mtpt)
       +                sysfatal("mount not supported");
        
       +        if(!s->nopipe){
       +                if(pipe(fd) < 0)
       +                        sysfatal("pipe: %r");
       +                s->infd = s->outfd = fd[1];
       +                s->srvfd = fd[0];
       +        }
       +        if(name && post9pservice(s->srvfd, name) < 0)
       +                sysfatal("post9pservice %s: %r", name);
       +        proccreate(launchsrv, s, 32*1024);
       +}