pthread_rad_attach, pthread_rad_bind - Attaches or binds a thread to a
NUMA Resource Affinity Domain (libpthread library)
ulong_t flags ); int pthread_rad_bind(
ulong_t flags );
Identifies the thread to be attached or bound to the specified set of
Resource Affinity Domains (RADs). Identifies the RAD set to which the
thread is to be attached or bound.
The pthread_rad_attach() function attaches the thread specified by the
thread argument to the RAD set specified by the radset argument.
The pthread_rad_bind() function binds the specified thread to the spec‐
ified RAD set.
While both functions assign a home RAD for the thread, an attach opera‐
tion allows remote execution on other RADs while a bind operation
restricts execution to the home RAD. In the following paragraphs, the
term “assign” is used when the description refers equally to both the
attach and the bind operations.
The home RAD for the thread will be selected by the system scheduler
from among the RADs included in radset based on current system load
balance and the flags argument. The overflow set (mattr_radset) for the
thread will be set to radset.
The following symbolic values are defined for the flags argument: The
requested assignments are mandatory. If this option is not set, the
system will consider the request to be a “hint” and may take no action
for the specified thread. The thread has small memory requirements, so
the system should (for the home RAD) favor those RADs with light CPU
loads, independent of their available memory. The thread has large
memory requirements, so the system should (for the home RAD) favor
those RADs with more available memory, independent of their CPU loads.
If the caller does not have partition administration privilege and if
the radset argument contains RADs that are not in the caller's parti‐
tion, an error will be returned.
The value for the radset argument could be obtained from an nloc() call
to assign or migrate the process to a RAD close (or closer) to a par‐
ticular resource. When obtained in this manner, the radset value will
identify RADs that were in the caller's partition at the time of the
nloc() call. The partition configuration could change between the call
to nloc() and a subsequent call to pthread_rad_attach(), resulting in
an error. An application should be prepared to handle this error, even
though it should not be a frequent occurrence.
Success. Failure. In this case, the integer value indicates the type
of error. Possible errors are as follows: The thread is hard attached
(RAD_INSIST) to RADs or has memory wired (locked) on its current RAD
such that it cannot be migrated to the specified RAD set. One of more
of the RADs in the radset argument or options in the flags argument are
invalid. RAD_INSIST and RAD_MIGRATE were specified, and the thread
cannot be migrated because insufficient memory exists on RADs in the
specified RAD set. The caller does not have appropriate privileges to
assign threads to RADs in the specified RAD set. The thread specified
by thread does not exist.
Functions: nloc(3), pthread_rad_detach(3)pthread_rad_attach(3)