FreeBSD Manual Pages
CPUSET_GETAFFINITY(2) BSD System Calls Manual CPUSET_GETAFFINITY(2) NAME cpuset_getaffinity, cpuset_setaffinity -- manage CPU affinity LIBRARY Standard C Library (libc, -lc) SYNOPSIS #include <sys/param.h> #include <sys/cpuset.h> int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t setsize, cpuset_t *mask); int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t setsize, const cpuset_t *mask); DESCRIPTION cpuset_getaffinity() and cpuset_setaffinity() allow the manipulation of sets of CPUs available to processes, threads, interrupts, jails and other resources. These functions may manipulate sets of CPUs that contain many processes or per-object anonymous masks that effect only a single object. The valid values for the level and which arguments are documented in cpuset(2). These arguments specify which object and which set of the ob- ject we are referring to. Not all possible combinations are valid. For example, only processes may belong to a numbered set accessed by a level argument of CPU_LEVEL_CPUSET. All resources, however, have a mask which may be manipulated with CPU_LEVEL_WHICH. 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 cpuset_getaffinity() even if the result set would fit within the user supplied set. Calls to cpuset_setaffinity() tolerate small sets with no restrictions. The supplied mask should have a size of setsize bytes. This size is usu- ally provided by calling sizeof(mask) which is ultimately determined by the value of CPU_SETSIZE as defined in <sys/cpuset.h>. cpuset_getaffinity() retrieves the mask from the object specified by level, which and id and stores it in the space provided by mask. cpuset_setaffinity() attempts to set the mask for the object specified by level, which and id to the value in mask. RETURN VALUES Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error. ERRORS The following error codes may be set in errno: [EINVAL] The level or which argument was not a valid value. [EINVAL] The mask argument specified when calling cpuset_setaffinity() was not a valid value. [EDEADLK] The cpuset_setaffinity() 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 mask pointer passed was invalid. [ESRCH] The object specified by the id and which arguments could not be found. [ERANGE] The cpusetsize was either preposterously large or smaller than the kernel set size. [EPERM] The calling process did not have the credentials re- quired to complete the operation. SEE ALSO cpuset(1), cpuset(2), cpuset_getid(2), cpuset_setid(2), pthread_affinity_np(3), pthread_attr_affinity_np(3) HISTORY The cpuset_getaffinity family of system calls first appeared in FreeBSD 7.1. AUTHOR Jeffrey Roberson <jeff@FreeBSD.org> BSD September 10, 2010 BSD
NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | HISTORY | AUTHOR
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=cpuset_setaffinity&sektion=2&manpath=FreeBSD+10.0-RELEASE>