PSET_BIND(2) System Calls PSET_BIND(2)
NAME
pset_bind - bind LWPs to a set of processors
SYNOPSIS
#include <sys/pset.h>
int pset_bind(
psetid_t pset,
idtype_t idtype,
id_t id,
psetid_t *opset);
DESCRIPTION
The
pset_bind() function binds the
LWP or set of
LWPs specified by
idtype and
id to the processor set specified by
pset. If
opset is not
NULL,
pset_bind() sets the
psetid_t variable pointed to by
opset to
the previous processor set binding of one of the specified
LWP, or to
PS_NONE if the selected
LWP was not bound.
If
idtype is
P_PID, the binding affects all
LWPs of the process with
process
ID (PID)
id.
If
idtype is
P_LWPID, the binding affects the
LWP of the current
process with
LWP ID id.
If
idtype is
P_TASKID, the binding affects all LWPs of all processes
with task ID
id.
If
idtype is
P_PROJID, the binding affects all LWPs of all processes
with project ID
id.
If
idtype is
P_ZONEID, the binding affects all LWPs of all processes
with zone ID
id.
If
idtype is
P_CTID, the binding affects all LWPs of all processes
with process contract ID
id.
If
id is
P_MYID, the specified LWP, process, task, process, zone, or
process contract is the current one.
If
pset is
PS_NONE, the processor set bindings of the specified LWPs
are cleared.
If
pset is
PS_QUERY, the processor set bindings are not changed.
If
pset is
PS_MYID, the specified LWPs are bound to the same
processor set as the caller. If the caller is not bound to a
processor set, the processor set bindings are cleared.
The {
PRIV_SYS_RES_CONFIG} privilege must be asserted in the effective
set of the calling process or
pset must be
PS_QUERY.
LWPs that have been bound to a processor with
processor_bind(2) may
also be bound to a processor set if the processor is part of the
processor set. If this occurs, the binding to the processor remains
in effect. If the processor binding is later removed, the processor
set binding becomes effective.
Processor set bindings are inherited across
fork(2) and
exec(2).
RETURN VALUES
Upon successful completion, 0 is returned. Otherwise, -1 is returned
and
errno is set to indicate the error.
ERRORS
The
pset_bind() function will fail if:
EBUSY One of the
LWPs is bound to a processor, and the specified
processor set does not include that processor.
EFAULT The location pointed to by
opset was not
NULL and not
writable by the user.
EINVAL An invalid processor set
ID was specified; or
idtype was
not
P_PID,
P_LWPID,
P_PROJID,
P_TASKID,
P_ZONEID, or
P_CTID.
ENOTSUP The pools facility is active. See
pooladm(8) and
pool_set_status(3POOL) for information about enabling and
disabling the pools facility. Processes can be bound to
pools using the
poolbind(8) utility or the
pool_set_binding(3POOL) function.
Binding a system process to a processor set is not
supported.
EPERM The {
PRIV_PROC_OWNER} is not asserted in the effective set
of the calling process and either the real or effective
user ID of the calling process does not match the real or
effective user
ID of one of the LWPs being bound, or the
processor set from which one or more of the LWPs are being
unbound has the
PSET_NOESCAPE attribute set and
{
PRIV_SYS_RES_CONFIG) is not asserted in the effective set
of the calling process. See
pset_setattr(2) for more
information about processor set attributes.
ESRCH No processes,
LWPs, or tasks were found to match the
criteria specified by
idtype and
id.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-------------------+
|Interface Stability | Committed |
+--------------------+-------------------+
|MT-Level | Async-Signal-Safe |
+--------------------+-------------------+
SEE ALSO
exec(2),
fork(2),
processor_bind(2),
pset_create(2),
pset_info(2),
pset_setattr(2),
pset_getloadavg(3C),
pool_set_binding(3POOL),
pool_set_status(3POOL),
process(5),
project(5),
attributes(7),
privileges(7),
pbind(8),
pooladm(8),
poolbind(8),
psrset(8) March 13, 2009 PSET_BIND(2)