| 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 |