PTHREAD_AFFINITY_NP(3) BSD Library Functions Manual PTHREAD_AFFINITY_NP(3)NAME
pthread_getaffinity_np, pthread_setaffinity_np — manage CPU affinity
POSIX Threads Library (libpthread, -lpthread)
pthread_getaffinity_np(pthread_t td, size_t cpusetsize,
pthread_setaffinity_np(pthread_t td, size_t cpusetsize,
const cpuset_t *cpusetp);
DESCRIPTIONpthread_getaffinity_np() and pthread_setaffinity_np() allow the manipula‐
tion of sets of CPUs available to the specified thread.
Masks of type cpuset_t are composed using the CPU_SET(3) macros. The
kernel tolerates large sets as long as all CPUs specified in the set
exist. Sets smaller than the kernel uses generate an error on calls to
pthread_getaffinity_np() even if the result set would fit within the user
supplied set. Calls to pthread_setaffinity_np() tolerate small sets with
The supplied mask should have a size of cpusetsize bytes. This size is
usually provided by calling sizeof(cpuset_t) which is ultimately deter‐
mined by the value of CPU_SETSIZE as defined in <sys/cpuset.h>.
pthread_getaffinity_np() retrieves the mask from the thread specified by
td, and stores it in the space provided by cpusetp.
pthread_setaffinity_np() attempts to set the mask for the thread speci‐
fied by td to the value in cpusetp.
If successful, the pthread_getaffinity_np() and pthread_setaffinity_np()
functions will return zero. Otherwise an error number will be returned
to indicate the error.
The pthread_getaffinity_np() and pthread_setaffinity_np() functions may
[EDEADLK] The pthread_setaffinity_np() call would leave a thread
without a valid CPU to run on because the set does not
overlap with the thread's anonymous mask.
[EFAULT] The cpusetp pointer passed was invalid.
[ESRCH] The thread specified by the td argument could not be
[ERANGE] The cpusetsize was either preposterously large or
smaller than the kernel set size.
[EPERM] The calling thread did not have the credentials
required to complete the operation.
SEE ALSOcpuset(1), cpuset(2), cpuset_getid(2), cpuset_setid(2), CPU_SET(3),
The pthread_getaffinity_np and pthread_setaffinity_np functions are non-
standard FreeBSD extensions and may be not available on other operating
The pthread_getaffinity_np and pthread_setaffinity_np function first
appeared in FreeBSD 7.2.
The pthread_getaffinity_np and pthread_setaffinity_np functions were
written by David Xu ⟨davidxu@FreeBSD.org⟩, and this manpage was written
by Xin LI ⟨delphij@FreeBSD.org⟩.
BSD March 23, 2010 BSD