| tlib9p: Remove postmountsrv (#505) - plan9port - [fork] Plan 9 from user space | |
| git clone git://src.adamsgaard.dk/plan9port | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 385a6d5877258cee0cac6151e6359c9206006b01 | |
| parent aa01c23be63787550e64bc1a0f3a8d267cad1fa4 | |
| Author: Ben Huntsman <[email protected]> | |
| Date: Sun, 8 Aug 2021 11:03:02 -0700 | |
| lib9p: Remove postmountsrv (#505) | |
| Diffstat: | |
| M include/9p.h | 1 - | |
| M man/lookman.index | 1 - | |
| M man/man3/9p.3 | 14 +++----------- | |
| M man/man3/INDEX | 1 - | |
| D src/lib9p/_post.c | 77 -----------------------------… | |
| D src/lib9p/post.c | 23 ----------------------- | |
| D src/lib9p/post.h | 13 ------------- | |
| 7 files changed, 3 insertions(+), 127 deletions(-) | |
| --- | |
| diff --git a/include/9p.h b/include/9p.h | |
| t@@ -219,7 +219,6 @@ struct Srv { | |
| }; | |
| void srv(Srv*); | |
| -void postmountsrv(Srv*, char*, char*, int); | |
| int postfd(char*, int); | |
| extern int chatty9p; | |
| void respond(Req*, char*); | |
| diff --git a/man/lookman.index b/man/lookman.index | |
| t@@ -19153,7 +19153,6 @@ posted /usr/local/plan9/man/man4/plumber.4 | |
| posted /usr/local/plan9/man/man9/0intro.9p | |
| postfd /usr/local/plan9/man/man3/9p.3 | |
| postmark /usr/local/plan9/man/man1/bundle.1 | |
| -postmountsrv /usr/local/plan9/man/man3/9p.3 | |
| postnote /usr/local/plan9/man/man3/notify.3 | |
| postnote /usr/local/plan9/man/man3/postnote.3 | |
| postnote /usr/local/plan9/man/man3/rfork.3 | |
| diff --git a/man/man3/9p.3 b/man/man3/9p.3 | |
| t@@ -6,7 +6,6 @@ emalloc9p, | |
| erealloc9p, | |
| estrdup9p, | |
| postfd, | |
| -postmountsrv, | |
| readbuf, | |
| readstr, | |
| respond, | |
| t@@ -61,7 +60,6 @@ typedef struct Srv { | |
| .ft L | |
| .ta \w'\fLvoid* 'u | |
| int srv(Srv *s) | |
| -void postmountsrv(Srv *s, char *name, char *mtpt, int flag) | |
| void threadpostmountsrv(Srv *s, char *name, char *mtpt, int flag) | |
| int postfd(char *srvname, int fd) | |
| void respond(Req *r, char *error) | |
| t@@ -96,8 +94,6 @@ and | |
| writing the responses to | |
| .BR s->outfd . | |
| (Typically, | |
| -.I postmountsrv | |
| -or | |
| .I threadpostmountsrv | |
| initializes the | |
| .B infd | |
| t@@ -148,12 +144,10 @@ but abort the program if they run out of memory. | |
| If alternate behavior is desired, clients can link against | |
| alternate implementations of these functions. | |
| .PP | |
| -.I Postmountsrv | |
| -and | |
| .I threadpostmountsrv | |
| -are wrappers that create a separate process in which to run | |
| +is a wrapper that creates a separate process in which to run | |
| .IR srv . | |
| -They do the following: | |
| +It does the following: | |
| .IP | |
| If | |
| .IB s -> nopipe | |
| t@@ -296,9 +290,7 @@ the service functions. | |
| The service loop provided by | |
| .I srv | |
| (and indirectly by | |
| -.I postmountsrv | |
| -and | |
| -.IR threadpostmountsrv ) | |
| +.I threadpostmountsrv ) | |
| is single-threaded. | |
| If it is expected that some requests might | |
| block, arranging for alternate processes | |
| diff --git a/man/man3/INDEX b/man/man3/INDEX | |
| t@@ -50,7 +50,6 @@ emalloc9p 9p.3 | |
| erealloc9p 9p.3 | |
| estrdup9p 9p.3 | |
| postfd 9p.3 | |
| -postmountsrv 9p.3 | |
| readbuf 9p.3 | |
| readstr 9p.3 | |
| respond 9p.3 | |
| diff --git a/src/lib9p/_post.c b/src/lib9p/_post.c | |
| t@@ -1,77 +0,0 @@ | |
| -#include <u.h> | |
| -#include <libc.h> | |
| -#include <fcall.h> | |
| -#include <thread.h> | |
| -#include <9p.h> | |
| -#include "post.h" | |
| - | |
| -Postcrud* | |
| -_post1(Srv *s, char *name, char *mtpt, int flag) | |
| -{ | |
| - Postcrud *p; | |
| - | |
| - p = emalloc9p(sizeof *p); | |
| - if(!s->nopipe){ | |
| - if(pipe(p->fd) < 0) | |
| - sysfatal("pipe: %r"); | |
| - s->infd = s->outfd = p->fd[1]; | |
| - s->srvfd = p->fd[0]; | |
| - } | |
| - if(name) | |
| - if(postfd(name, s->srvfd) < 0) | |
| - sysfatal("postfd %s: %r", name); | |
| - p->s = s; | |
| - p->mtpt = mtpt; | |
| - p->flag = flag; | |
| - return p; | |
| -} | |
| - | |
| -void | |
| -_post2(void *v) | |
| -{ | |
| - Srv *s; | |
| - | |
| - s = v; | |
| - if(!s->leavefdsopen){ | |
| - rfork(RFNOTEG); | |
| - rendezvous((ulong)s, 0); | |
| - close(s->srvfd); | |
| - } | |
| - srv(s); | |
| -} | |
| - | |
| -void | |
| -_post3(Postcrud *p) | |
| -{ | |
| - /* | |
| - * Normally the server is posting as the last thing it does | |
| - * before exiting, so the correct thing to do is drop into | |
| - * a different fd space and close the 9P server half of the | |
| - * pipe before trying to mount the kernel half. This way, | |
| - * if the file server dies, we don't have a ref to the 9P server | |
| - * half of the pipe. Then killing the other procs will drop | |
| - * all the refs on the 9P server half, and the mount will fail. | |
| - * Otherwise the mount hangs forever. | |
| - * | |
| - * Libthread in general and acme win in particular make | |
| - * it hard to make this fd bookkeeping work out properly, | |
| - * so leaveinfdopen is a flag that win sets to opt out of this | |
| - * safety net. | |
| - */ | |
| - if(!p->s->leavefdsopen){ | |
| - rfork(RFFDG); | |
| - rendezvous((ulong)p->s, 0); | |
| - close(p->s->infd); | |
| - if(p->s->infd != p->s->outfd) | |
| - close(p->s->outfd); | |
| - } | |
| - | |
| -#if 0 | |
| - if(p->mtpt){ | |
| - if(amount(p->s->srvfd, p->mtpt, p->flag, "") == -1) | |
| - sysfatal("mount %s: %r", p->mtpt); | |
| - }else | |
| -#endif | |
| - close(p->s->srvfd); | |
| - free(p); | |
| -} | |
| diff --git a/src/lib9p/post.c b/src/lib9p/post.c | |
| t@@ -1,23 +0,0 @@ | |
| -#include <u.h> | |
| -#include <libc.h> | |
| -#include <fcall.h> | |
| -#include <thread.h> | |
| -#include <9p.h> | |
| -#include "post.h" | |
| - | |
| -void | |
| -postmountsrv(Srv *s, char *name, char *mtpt, int flag) | |
| -{ | |
| - Postcrud *p; | |
| - | |
| - p = _post1(s, name, mtpt, flag); | |
| - switch(rfork(RFPROC|RFNOTEG|RFNAMEG|RFMEM)){ | |
| - case -1: | |
| - sysfatal("rfork: %r"); | |
| - case 0: | |
| - _post2(s); | |
| - exits(nil); | |
| - default: | |
| - _post3(p); | |
| - } | |
| -} | |
| diff --git a/src/lib9p/post.h b/src/lib9p/post.h | |
| t@@ -1,13 +0,0 @@ | |
| -typedef struct Postcrud Postcrud; | |
| -struct Postcrud | |
| -{ | |
| - int fd[2]; | |
| - Srv *s; | |
| - char *name; | |
| - char *mtpt; | |
| - int flag; | |
| -}; | |
| - | |
| -Postcrud *_post1(Srv*, char*, char*, int); | |
| -void _post2(void*); | |
| -void _post3(Postcrud*); |