|PTHREAD_AFFINITY_NP(3)||FreeBSD Library Functions Manual||PTHREAD_AFFINITY_NP(3)|
NAMEpthread_getaffinity_np, pthread_setaffinity_np — manage CPU affinity
LIBRARYPOSIX Threads Library (libpthread, -lpthread)
SYNOPSIS#include < pthread_np.h>
pthread_getaffinity_np( pthread_t td, size_t cpusetsize, cpuset_t *cpusetp);
pthread_setaffinity_np( pthread_t td, size_t cpusetsize, const cpuset_t *cpusetp);
DESCRIPTIONpthread_getaffinity_np() and pthread_setaffinity_np() allow the manipulation of sets of CPUs available to the specified thread.
Masks of type cpuset_t are composed using the CPU_SET 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 no restrictions.
The supplied mask should have a size of cpusetsize bytes. This size is usually provided by calling
sizeof(cpuset_t) which is ultimately determined 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 specified by td to the value in cpusetp.
RETURN VALUESIf successful, the pthread_getaffinity_np() and pthread_setaffinity_np() functions will return zero. Otherwise an error number will be returned to indicate the error.
ERRORSThe pthread_getaffinity_np() and pthread_setaffinity_np() functions may fail if:
- [ 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 found.
- [ 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), pthread(3), pthread_attr_getaffinity_np(3), pthread_attr_setaffinity_np(3)
STANDARDSThe pthread_getaffinity_np and pthread_setaffinity_np functions are non-standard FreeBSD extensions and may be not available on other operating systems.
HISTORYThe pthread_getaffinity_np and pthread_setaffinity_np function first appeared in FreeBSD 7.2.
AUTHORSThe pthread_getaffinity_np and pthread_setaffinity_np functions were written by <davidxu@FreeBSD.org>, and this manpage was written by <delphij@FreeBSD.org>.
|March 23, 2010||FreeBSD|