.TH SRV9 3 "Plan 9".SH NAMEsrv9 \- plan 9 server registry.SH SYNOPSIS.nf.B bind -c #₪ /srv.BI /srv/ service1.BI /srv/ service2 ....fi.SH DESCRIPTIONOn Inferno hosted on Plan 9,.I srv9serves a one-level directory that gives Inferno applicationsdirect access to Plan 9 services posted in its.B #sserver registry,and allows Inferno applications to post services for access by Plan 9 applications.A service is represented by a file descriptor, usually serving the common file serviceprotocol described in.IR intro (5),allowing it to be mounted (see.IR bind (1)and.IR sys-bind (2))in the name space of an application in the other system..PPTo access a Plan 9 service in Inferno, open the desired service file;the resulting file descriptor is connected to the associated Plan 9 service.When that service is a shared Plan 9 file service,.I srv9automatically starts Plan 9's.I exportfswith appropriate options to make the service accessible from Inferno.It can safely be shared with Plan 9 applications, but note that any path namesmentioned in the attach specifier (see.IR mount (1)and.IR attach (5))will be in the Plan 9 application's name space, not the Inferno application's.(Indeed, a similar caveat applies in Plan 9 itself.).PPTo export an Inferno service to Plan 9, create a new file such as.BR /srv/myservusing.B Sys->createwith mode.B Sys->ORDWR(see.IR sys-open (2))and any desired permissions for the new service file.(Note that the.B #₪device must have been bound in with the.B -coption, as shown above, to allow file creation.)If the create is successful, Plan 9's service registry will have a new entry.BR myserv ,and the file descriptor returned from.B createacts as a pipe to any Plan 9 applicationthat opens the associated service file in Plan 9.Typically on the Inferno side the file descriptor is passed to.IR sys-export (2)or made the standard input of an Inferno file service(see.IR intro (4)).The Plan 9 service file is automatically removed when the Inferno file descriptor is no longer referenced..SH EXAMPLESTo make Plan 9's factotum available in Inferno:.IP.EXmount -Aa /srv/factotum /mnt.EE.PP(Note the.B -Aoption to suppress Inferno authentication.).PPTo mount the Plan 9 file service from which a Plan 9 machine booted:.IP.EXmount -9 /srv/boot /n/local.EE.PPThe.B -9option to.IR mount (1)requests Plan 9 authentication; that could also have been used instead of.B -Ain the previous example..PPTo make the environment variables of the current Inferno name space available to Plan 9:.IP.EXfd := sys->create("/srv/infenv", Sys->ORDWR, 8r600);sys->export(fd, "/env", Sys->EXPWAIT);.EE.SH SOURCE.B /emu/Plan9/devsrv9.c.SH SEE ALSO.IR sys-bind (2),.IR sys-open (2),.IR sys-export (2),.IR import (4),.IR 9srvfs (4)
.TH SRV9 3 "Plan 9"
.SH NAME
srv9 \- plan 9 server registry
.SH SYNOPSIS
.nf
.B bind -c #₪ /srv
.BI /srv/ service1
.BI /srv/ service2
...
.fi
.SH DESCRIPTION
On Inferno hosted on Plan 9,
.I srv9
serves a one-level directory that gives Inferno applications
direct access to Plan 9 services posted in its
.B #s
server registry,
and allows Inferno applications to post services for access by Plan 9 applications.
A service is represented by a file descriptor, usually serving the common file service
protocol described in
.IR intro (5),
allowing it to be mounted (see
.IR bind (1)
and
.IR sys-bind (2))
in the name space of an application in the other system.
.PP
To access a Plan 9 service in Inferno, open the desired service file;
the resulting file descriptor is connected to the associated Plan 9 service.
When that service is a shared Plan 9 file service,
.I srv9
automatically starts Plan 9's
.I exportfs
with appropriate options to make the service accessible from Inferno.
It can safely be shared with Plan 9 applications, but note that any path names
mentioned in the attach specifier (see
.IR mount (1)
and
.IR attach (5))
will be in the Plan 9 application's name space, not the Inferno application's.
(Indeed, a similar caveat applies in Plan 9 itself.)
.PP
To export an Inferno service to Plan 9, create a new file such as
.BR /srv/myserv
using
.B Sys->create
with mode
.B Sys->ORDWR
(see
.IR sys-open (2))
and any desired permissions for the new service file.
(Note that the
.B #₪
device must have been bound in with the
.B -c
option, as shown above, to allow file creation.)
If the create is successful, Plan 9's service registry will have a new entry
.BR myserv ,
and the file descriptor returned from
.B create
acts as a pipe to any Plan 9 application
that opens the associated service file in Plan 9.
Typically on the Inferno side the file descriptor is passed to
.IR sys-export (2)
or made the standard input of an Inferno file service
(see
.IR intro (4)).
The Plan 9 service file is automatically removed when the Inferno file descriptor is no longer referenced.
.SH EXAMPLES
To make Plan 9's factotum available in Inferno:
.IP
.EX
mount -Aa /srv/factotum /mnt
.EE
.PP
(Note the
.B -A
option to suppress Inferno authentication.)
.PP
To mount the Plan 9 file service from which a Plan 9 machine booted:
.IP
.EX
mount -9 /srv/boot /n/local
.EE
.PP
The
.B -9
option to
.IR mount (1)
requests Plan 9 authentication; that could also have been used instead of
.B -A
in the previous example.
.PP
To make the environment variables of the current Inferno name space available to Plan 9:
.IP
.EX
fd := sys->create("/srv/infenv", Sys->ORDWR, 8r600);
sys->export(fd, "/env", Sys->EXPWAIT);
.EE
.SH SOURCE
.B /emu/Plan9/devsrv9.c
.SH SEE ALSO
.IR sys-bind (2),
.IR sys-open (2),
.IR sys-export (2),
.IR import (4),
.IR 9srvfs (4)