Introduction
Introduction Statistics Contact Development Disclaimer Help
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*);
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.