pthread_rad_attach, pthread_rad_bind - Attaches or binds a
thread to a NUMA Resource Affinity Domain (libpthread
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
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 specified RAD set.
While both functions assign a home RAD for the thread, an
attach operation 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
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 partition, 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 particular 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)
[ Back ]