Name
pthread_attr_setaffinity_np, pthread_attr_getaffinity_np - set/get CPU affinity attribute in thread attributes objectLibrary
POSIX threads library ( libpthread ", " -lpthread )Synopsis
"#define(7)_GNU_SOURCE" " /* See feature_test_macros */" #include <pthread.h> int pthread_attr_setaffinity_np(pthread_attr_t * attr ,
size_t " cpusetsize ", const cpu_set_t * cpuset );
int pthread_attr_getaffinity_np(const pthread_attr_t * attr ,
size_t " cpusetsize ", cpu_set_t * cpuset );
Description
The pthread_attr_setaffinity_np() function sets the CPU affinity mask attribute of the thread attributes object referred to by attr to the value specified incpuset
. This attribute determines the CPU affinity mask of a thread created using the thread attributes object attr
. The pthread_attr_getaffinity_np() function returns the CPU affinity mask attribute of the thread attributes object referred to by attr in the buffer pointed to by cpuset
.
The argument cpusetsize is the length (in bytes) of the buffer pointed to by cpuset
. Typically, this argument would be specified as sizeof(cpu_set_t)
.
For more details on CPU affinity masks, see sched_setaffinity(2). For a description of a set of macros that can be used to manipulate and inspect CPU sets, see CPU_SET(3).
Return Value
On success, these functions return 0; on error, they return a nonzero error number.Errors
EINVAL ( pthread_attr_setaffinity_np ()) cpuset specified a CPU that was outside the set supported by the kernel. (The kernel configuration option CONFIG_NR_CPUS defines the range of the set supported by the kernel data type used to represent CPU sets.)
EINVAL ( pthread_attr_getaffinity_np ()) A CPU in the affinity mask of the thread attributes object referred to by attr lies outside the range specified by cpusetsize (i.e., cpuset / cpusetsize
is too small).
ENOMEM ( pthread_attr_setaffinity_np ()) Could not allocate memory.
Attributes
For an explanation of the terms used in this section, see attributes(7).Interface | Attribute | Value |
T} | Thread safety | MT-Safe |
Standards
GNU; hence the suffix "_np" (nonportable) in the names.History
glibc 2.3.4.Notes
In glibc 2.3.3 only, versions of these functions were provided that did not have a cpusetsize argument. Instead the CPU set size given to the underlying system calls was alwayssizeof(cpu_set_t)
. See Also
- sched_setaffinity(2),
- pthread_attr_init(3),
- pthread_setaffinity_np(3),
- cpuset(7),
- pthreads(7)