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)