FreeBSD Manual Pages
AFFINITY(3) Library Functions Manual AFFINITY(3) NAME pthread_setaffinity_np, pthread_getaffinity_np -- affinity of threads LIBRARY POSIX Threads Library (libpthread, -lpthread) SYNOPSIS #include <pthread.h> #include <sched.h> int pthread_setaffinity_np(pthread_t thread, size_t size, cpuset_t *set); int pthread_getaffinity_np(pthread_t thread, size_t size, cpuset_t *set); DESCRIPTION Thread affinity allows to run the thread on specified CPU or CPUs only. The pthread_setaffinity_np() function sets the affinity mask set for thread. At least one valid CPU must be set in the mask. The pthread_getaffinity_np() function gets the affinity mask of thread into set. Note that set must be created and initialized using the cpuset(3) functions. IMPLEMENTATION NOTES Setting CPU pthread_setaffinity_np requires super-user privileges. Or- dinary users can be allowed to control CPU affinity of their threads via the security.models.extensions.user_set_cpu_affinity sysctl(7). See secmodel_extensions(9). Portable applications should not use the pthread_setaffinity_np() and pthread_getaffinity_np() functions. RETURN VALUES The pthread_setaffinity_np() and pthread_getaffinity_np() functions re- turn 0 on success. Otherwise, an error number is returned to indicate the error. EXAMPLES An example of code fragment, which sets the affinity for the current thread to the CPU whose ID is 0: cpuset_t *cset; pthread_t pth; cpuid_t ci; cset = cpuset_create(); if (cset == NULL) { err(EXIT_FAILURE, "cpuset_create"); } ci = 0; cpuset_set(ci, cset); pth = pthread_self(); error = pthread_setaffinity_np(pth, cpuset_size(cset), cset); if (error) { ... } cpuset_destroy(cset); COMPATIBILITY Both functions are non-standard extensions. ERRORS Both functions may fail if: [EINVAL] The specified set was invalid. [EPERM] The calling process lacks the appropriate privileges to perform the operation. [ESRCH] No thread could be found corresponding to the one specified by thread. NOTES There is an alternative processor sets interface, see pset(3). How- ever, thread affinity and processor sets are mutually exclusive, hence mixing of these interfaces is prohibited. SEE ALSO cpuset(3), pset(3), pthread_getschedparam(3), pthread_setschedparam(3), sched(3), schedctl(8) NetBSD 9.0 December 4, 2011 AFFINITY(3)
NAME | LIBRARY | SYNOPSIS | DESCRIPTION | IMPLEMENTATION NOTES | RETURN VALUES | EXAMPLES | COMPATIBILITY | ERRORS | NOTES | SEE ALSO
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=affinity&sektion=3&manpath=NetBSD+9.0>
