# pthread_attr_setaffinity_np

## NAME



           pthread_attr_setaffinity_np, pthread_attr_getaffinity_np - set/get
           CPU affinity attribute in thread attributes object
    


## LIBRARY



           POSIX threads library (_libpthread_ , _-lpthread_)
    


## SYNOPSIS



           **#define _GNU_SOURCE** /* See feature_test_macros(7) */
           **#include <pthread.h>**
    
           **int pthread_attr_setaffinity_np(pthread_attr_t ***_attr_**,**
                              **size_t** _cpusetsize_**, const cpu_set_t ***_cpuset_**);**
           **int pthread_attr_getaffinity_np(const pthread_attr_t ***_attr_**,**
                              **size_t** _cpusetsize_**, cpu_set_t ***_cpuset_**);**
    


## DESCRIPTION



           The **pthread_attr_setaffinity_np**() function sets the CPU affinity
           mask attribute of the thread attributes object referred to by _attr_
           to the value specified in _cpuset_.  This attribute determines the
           CPU affinity mask of a thread created using the thread attributes
           object _attr_.
    
           The **pthread_attr_getaffinity_np**() function returns the CPU
           affinity mask attribute of the thread attributes object referred
           to by _attr_ in the buffer pointed to by _cpuset_.
    
           The argument _cpusetsize_ is the length (in bytes) of the buffer
           pointed to by _cpuset_.  Typically, this argument would be specified
           as _sizeof(cpu_set_t)_.
    
           For more details on CPU affinity masks, see sched_setaffinity(2).
           For a description of a set of macros that can be used to
           manipulate and inspect CPU sets, see CPU_SET(3).
    


## RETURN VALUE



           On success, these functions return 0; on error, they return a
           nonzero error number.
    


## ERRORS



           **EINVAL**(**pthread_attr_setaffinity_np**()) _cpuset_ specified a CPU that
                  was outside the set supported by the kernel.  (The kernel
                  configuration option **CONFIG_NR_CPUS** defines the range of
                  the set supported by the kernel data type used to represent
                  CPU sets.)
    
           **EINVAL**(**pthread_attr_getaffinity_np**()) A CPU in the affinity mask
                  of the thread attributes object referred to by _attr_ lies
                  outside the range specified by _cpusetsize_ (i.e.,
                  _cpuset_ /_cpusetsize_ is too small).
    
           **ENOMEM**(**pthread_attr_setaffinity_np**()) Could not allocate memory.
    


## ATTRIBUTES



           For an explanation of the terms used in this section, see
           attributes(7).
           ┌──────────────────────────────────────┬───────────────┬─────────┐
           │ **Interface** │ **Attribute** │ **Value** │
           ├──────────────────────────────────────┼───────────────┼─────────┤
           │ **pthread_attr_setaffinity_np**(),       │ Thread safety │ MT-Safe │
           │ **pthread_attr_getaffinity_np**()        │               │         │
           └──────────────────────────────────────┴───────────────┴─────────┘
    


## STANDARDS



           GNU; hence the suffix "_np" (nonportable) in the names.
    


## NOTES



           In glibc 2.3.3 only, versions of these functions were provided
           that did not have a _cpusetsize_ argument.  Instead the CPU set size
           given to the underlying system calls was always _sizeof(cpu_set_t)_.
    


* * *