tplumbunmount - 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 1dc6e083c15e1580b02d30aa349821fe98fcf989 (DIR) parent 70584625ae19b622a1dfe73181f2b0a083fea351 (HTM) Author: rsc <devnull@localhost> Date: Sun, 25 Jun 2006 23:55:37 +0000 plumbunmount Diffstat: M man/man3/plumb.3 | 17 ++++++++++++++++- M src/libplumb/fid.c | 13 +++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) --- (DIR) diff --git a/man/man3/plumb.3 b/man/man3/plumb.3 t@@ -1,6 +1,6 @@ .TH PLUMB 3 .SH NAME -eplumb, plumbfree, plumbopen, plumbopenfid, plumbsend, plumbsendtofid, plumbsendtext, plumblookup, plumbpack, plumbpackattr, plumbaddattr, plumbdelattr, plumbrecv, plumbrecvfid, plumbunpack, plumbunpackpartial, plumbunpackattr, Plumbmsg \- plumb messages +eplumb, plumbfree, plumbopen, plumbunmount, plumbopenfid, plumbsend, plumbsendtofid, plumbsendtext, plumblookup, plumbpack, plumbpackattr, plumbaddattr, plumbdelattr, plumbrecv, plumbrecvfid, plumbunpack, plumbunpackpartial, plumbunpackattr, Plumbmsg \- plumb messages .SH SYNOPSIS .B #include <u.h> .br t@@ -14,6 +14,9 @@ eplumb, plumbfree, plumbopen, plumbopenfid, plumbsend, plumbsendtofid, plumbsend int plumbopen(char *port, int omode) .PP .B +int plumbunmount(void) +.PP +.B int plumbsend(int fd, Plumbmsg *m) .PP .B t@@ -117,6 +120,18 @@ registers, using the given receipt of messages from the named .IR port . .PP +The library mounts the +.IR plumber (4) +service on demand (using the +.IR 9pclient (3)) +library and reuses the mount instance for future +calls to +.IR plumbopen . +.I Plumbunmount +causes the library to discard its cached mount. +This can be useful if the plumber service itself has been +restarted and a client wishes to reconnect. +.PP .I Plumbsend formats and writes message .I m (DIR) diff --git a/src/libplumb/fid.c b/src/libplumb/fid.c t@@ -9,6 +9,19 @@ static int pfd = -1; static CFid *pfid; int +plumbunmount(void) +{ + CFsys *fsys; + + if(fsplumb){ + fsys = fsplumb; + fsplumb = nil; + fsunmount(fsys); + } + return 0; +} + +int plumbopen(char *name, int omode) { if(fsplumb == nil)