int
svc_dg_enablecache(
SVCXPRT *xprt
, const unsigned cache_size
)
void
svc_exit(
void
)
bool_t
svc_freeargs(
const SVCXPRT *xprt
, const xdrproc_t inproc
, caddr_t in
)
bool_t
svc_getargs(
const SVCXPRT *xprt
, const xdrproc_t inproc
, caddr_t in
)
void
svc_getreq_common(
const int fd
)
void
svc_getreq_poll(
struct pollfd *pfdp
, const int pollretval
)
void
svc_getreqset(
fd_set * rdfds
)
struct netbuf *
svc_getrpccaller(
const SVCXPRT *xprt
)
struct sockcred *
__svc_getcallercreds(
const SVCXPRT *xprt
)
void
svc_run(
void
)
bool_t
svc_sendreply(
const SVCXPRT *xprt
, const xdrproc_t outproc
, const caddr_t *out
)
These routines are associated with the server side of the
RPC mechanism.
Some of them are called by the server side dispatch function,
while others
(such as
svc_run())
are called when the server is initiated.
SVCXPRT
data structure.
)
xprt
,
large enough to hold
cache_size
entries.
Once enabled, there is no way to disable caching.
This routine returns 0 if space necessary for a cache of the given size
was successfully allocated, and 1 otherwise.
)
)
to return.
As currently implemented,
svc_exit()
zeroes the
svc_fdset
global variable.
If RPC server activity is to be resumed,
services must be reregistered with the RPC library
either through one of the
rpc_svc_create()
functions, or using
xprt_register(
).
svc_exit(
)
has global scope and ends all RPC server activity.
fd_set svc_fdset
A global variable reflecting the
RPC server's read file descriptor bit mask; it is suitable as a parameter
to the
select(2)
system call.
This is only of interest
if service implementors do not call
svc_run(),
but rather do their own asynchronous event processing.
This variable is read-only (do not pass its address to
select(2)!),
yet it may change after calls to
svc_getreqset(
)
or any creation routines.
)
).
This routine returns
TRUE
if the results were successfully
freed, and
FALSE
otherwise.
)
xprt
.
The parameter
in
is the address where the arguments will be placed;
inproc
is the XDR
routine used to decode the arguments.
This routine returns
TRUE
if decoding succeeds, and
FALSE
otherwise.
)
)
),
but instead implements custom asynchronous event processing.
It is called when
poll(2)
has determined that an RPC request has arrived on some RPC
file descriptors;
pollretval(
)
is the return value from
poll(2)
and
pfdp
is the array of
pollfd
structures on which the
poll(2)
was done.
It is assumed to be an array large enough to
contain the maximal number of descriptors allowed.
)
),
but instead implements custom asynchronous event processing.
It is called when
poll(2)
has determined that an RPC
request has arrived on some RPC file descriptors;
rdfds
is the resultant read file descriptor bit mask.
The routine returns when all file descriptors
associated with the value of
rdfds
have been serviced.
)
xprt
.
)
sys/socket.h
>,
identifying the calling client.
This only works if the client is calling the server over an
AF_LOCAL
socket.
struct
pollfd
svc_pollset[FD_SETSIZE];
).
Service implementors who do not call
svc_run(
)
and who wish to use this array must perform this derivation themselves.
)
)
when one arrives.
This procedure is usually waiting for the
poll(2)
system call to return.
)
xprt
is the request's associated transport handle;
outproc
is the XDR
routine which is used to encode the results; and
out
is the address of the results.
This routine returns
TRUE
if it succeeds,
FALSE
otherwise.