rpc_control(3N)rpc_control(3N)NAMErpc_control - library routine for manipulating global RPC attributes
for client and server applications
SYNOPSISDESCRIPTION
This RPC library routine allows applications to set and modify global
RPC attributes that apply to clients as well as servers. At present,
it supports only server side operations. op indicates the type of
operation, and info is a pointer to the operation specific information.
The supported values of op and their argument types, and what they do
are:
RPC_SVC_MTMODE_SET int * set multithread mode
RPC_SVC_MTMODE_GET int * get multithread mode
RPC_SVC_THRMAX_SET int * set maximum number of threads
RPC_SVC_THRMAX_GET int * get maximum number of threads
RPC_SVC_THRTOTAL_GET int * get number of active threads
RPC_SVC_THRCREATES_GET int * get number of threads created
RPC_SVC_THRERRORS_GET int * get number of thread create errors
RPC_SVC_USE_POLLFD int * set # of file descriptors to unlimited
RPC_SVC_CONNMAXREC_SET int * set non-blocking max rec size
RPC_SVC_CONNMAXREC_GET int * get non-blocking max rec size
There are three multithread (MT) modes. These are:
RPC_SVC_MT_NONE Single-threaded mode (default)
RPC_SVC_MT_USER User MT mode
RPC_SVC_MT_AUTO Automatic MT mode
Unless the application sets the Automatic or User MT modes, it will
stay in the default (single-threaded) mode. Once a mode is set, it
cannot be changed.
By default, the maximum number of threads that the server will create
at any time is 16. This allows the service developer to put a bound on
thread resources consumed by a server. If a server needs to process
more than 16 client requests concurrently, the maximum number of
threads must be set to the desired number. This parameter may be set
at any time by the server.
Set and get operations will succeed even in modes where the operations
don't apply. For example, you can set the maximum number of threads in
any mode, even though it makes sense only for the Automatic MT mode.
All of the get operations except apply only to the Automatic MT mode,
so values returned in other modes may be undefined.
By default, RPC servers are limited to a maximum of 1024 file descrip‐
tors or connections due to limitations in the historical interfaces and
(see respective manpages). Applications written to use the preferred
interfaces of and (see respective manpages) can use an unlimited number
of file descriptors. Setting info to point to a non-zero integer and
op to removes the limitation.
Connection oriented RPC transports read RPC requests in blocking mode
by default. Thus, they may be adversely affected by network delays and
broken clients. enables non-blocking mode and establishes the maximum
record size (in bytes) for RPC requests; RPC responses are not
affected. Buffer space is allocated as needed up to the specified max‐
imum, starting at the maximum or whichever is smaller. If the value
pointed to by info is then the maximum recoed size is set to
The value established by is used when a connection is created, and it
remains in effect for that connection until it is closed. To change
the value for existing connections on a per-connection basis, see
svc_control(3N).
retrieves the current maximum record size. A zero value means that no
maximum is in effect, and that the connections are in blocking mode.
Non-connection RPC transports ignore and
info is a pointer to an argument of type
MULTITHREAD USAGE
Thread Safe: Yes
Cancel Safe: Yes
Fork Safe: No
Async-cancel Safe: No
Async-signal Safe: No
These functions can be called safely in a multithreaded environment.
They may be cancellation points in that they call functions that are
cancel points.
In a multithreaded environment, these functions are not safe to be
called by a child process after and before These functions should not
be called by a multithreaded application that supports asynchronous
cancellation or asynchronous signals.
RETURN VALUE
This routine returns if the operation was successful and returns other‐
wise.
SEE ALSOrpcbind(1M), rpc(3N), rpc_svc_calls(3N).
rpc_control(3N)