pset_assign(2)pset_assign(2)NAMEpset_assign() - change processor set assignment
SYNOPSISDESCRIPTION
The function assigns the processor spu to the processor set pset,
removing the processor spu from its current processor set. A processor
may not belong to more than one processor set at any given time. If
opset is not it contains the processor set ID of the previously
assigned processor set upon successful operation.
A user with the privilege or a user with WRITE permissions on the pro‐
cessor sets may change the processor set assignment for a processor
using the function. A user without the privilege must have WRITE per‐
missions in both processor sets to make the processor reassignment,
unless the target processor set is the system default processor set.
That is, only a user with the privilege may move a processor out of the
system default processor set.
Currently, processor 0 cannot be reassigned to another processor set
from the system default processor set. The system default processor
set is never empty.
If pset is or the processor spu is assigned to the system default pro‐
cessor set.
If pset is the processor's assignment is not changed, but the current
processor set ID of processor spu is returned in opset. Neither WRITE
permission nor the privilege is needed for operation.
If there are threads or processes with binding to the processor spu (in
its old processor set), the binding of affected threads and processes
is changed to another processor in that processor set. If spu is the
last processor in the locality domain that contributes to its current
processor set and there are threads or processes with binding to the
locality domain, their binding is changed to another locality domain in
the processor set. See mpctl(2) for binding to processors and locality
domains.
If spu is the last processor in its current processor set, the behavior
of is dependent on the value of the attribute. The following attribute
values are defined for this attribute:
Assign the processor to the specified processor
set, and migrate all threads and processes to the system
default processor set, This is the default behavior. If the
threads and processes being migrated to the system default
processor set (pset) have binding to processor or locality
domain, their binding is reassigned to another processor or
locality domain in the system default processor set.
Make the request fail if there are active threads
and processes assigned to the processor set.
Security Restrictions
Some or all of the actions associated with this system call require the
privilege. Processes owned by the superuser have this privilege. Pro‐
cesses owned by other users may have this privilege, depending on sys‐
tem configuration. See privileges(5) for more information about privi‐
leged access on systems that support fine-grained privileges.
Note on Logical Processor and Hyper-Threading Feature
On systems with the Hyper-Threading (HT) feature enabled at the
firmware, each hyper-thread is represented as a logical processor
(LCPU).
For migration of a logical processor in a processor core may also
migrate that logical processor's sibling logical processor, which
belongs to the same physical processor core. Otherwise the resulting
configuration would violate the processor set contract, which specifies
that applications bound to a processor set have complete and exclusive
control of all processor cores within that processor set.
When a processor core is assigned to another pset, depending on the
source and target processor sets' (see pset_setattr(2)) value, the num‐
ber of logical processors from that processor core may change.
EXAMPLES
Reassign spu from its current processor set to new_pset, and retrieve
the current processor set in old_pset.
RETURN VALUE
returns zero on successful completion. Otherwise, -1 is returned and
is set to indicate the error.
ERRORS
fails if one or more of the following is true:
The processor set currently assigned to the processor
spu has active threads and processes, and the processor
set attributes do not allow this operation.
The memory location pointed to by
opset is not writable by the user.
The operation was interrupted.
The processor
spu or processor set pset is not valid.
The spu is not enabled.
The memory location pointed to by
opset is and the operation is requested.
The processor set functionality is not supported by the
underlying HP-UX version.
The user does not have necessary permissions to assign
spu to pset.
SEE ALSOmpctl(2), pset_bind(2), pset_create(2), pset_ctl(2), pset_destroy(2),
pset_getattr(2), pset_setattr(2), privgrp(4), privileges(5).
pset_assign(2)