| AFFINITY(3) | Library Functions Manual | AFFINITY(3) |
pthread_setaffinity_np,
pthread_getaffinity_np —
#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);
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.
pthread_setaffinity_np requires super-user
privileges. Ordinary 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.
pthread_setaffinity_np() and
pthread_getaffinity_np() functions return 0 on
success. Otherwise, an error number is returned to indicate the error.
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);
| December 4, 2011 | NetBSD 9.3 |