code: plan9front

Download patch

ref: 1720551fd69a86363dcaff6c36e58a9b00ee6332
parent: e0372c26e9263207fb9ede2b8d706e4f8cd24b7a
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun Dec 18 09:56:03 EST 2022

/lib/namespace: add bind -c #s$srvspec /srv bind

This makes it possible to start a new namespace
using a specific service directory as the
starting point (see srv(3)).

--- a/lib/namespace
+++ b/lib/namespace
@@ -7,7 +7,7 @@
 bind #d /fd
 bind -c #e /env
 bind #p /proc
-bind -c #s /srv
+bind -c #s$srvspec /srv
 bind -q #σ /shr
 bind -a #¤ /dev
 bind -qa #¶ /dev
--- a/sys/man/3/srv
+++ b/sys/man/3/srv
@@ -3,10 +3,10 @@
 srv \- server registry
 .SH SYNOPSIS
 .nf
-.B bind #s /srv
+.BI "bind -c #s" $srvspec " /srv"
 
 .BI #s/ clone
-.BI #s/ n
+.BI #s/ id
 .BI #s/ service1
 .BI #s/ service2
  ...
@@ -23,7 +23,7 @@
 .PP
 To install a channel, create
 a new file such as
-.B /srv/myserv
+.BI /srv/ myserv
 and then write a text string (suitable for
 .IR strtoul ;
 see
@@ -30,7 +30,7 @@
 .IR atof (2))
 giving the file descriptor number of an open file.
 Any process may then open
-.B /srv/myserv
+.BI /srv/ myserv
 to acquire another reference to the open file that was registered.
 .PP
 An entry in
@@ -47,13 +47,26 @@
 .I clone
 file allocates a new service directory. Reading
 .I clone
-returns the id of the new directory. This new service
-directory can then be accessed at
-.BR /srv/id .
-Directories are recursable; each new service directory
+returns the
+.I id
+of the new directory.
+This new service directory can then be accessed at
+.BI /srv/ id .
+Directories are recursive; each new service directory
 contains its own
 .I clone
-file.
+file and sub-directories.
+Directories can be walked from the root such as
+.BI #s/ id1 / id2 / id3
+which makes them globally addressable.
+As a convention,
+.B /lib/namespace
+accepts the path to the service directory from the
+environment variable
+.IR $srvspec ,
+making it possible to start a new namespace
+using a specific service directory as a
+starting point.
 .SH EXAMPLE
 To drop one end of a pipe into
 .BR /srv ,