pthread_setaffinity_np(3) Library Functions Manual pthread_setaffinity_np(3) pthread_setaffinity_np, pthread_getaffinity_np - / POSIX (libpthread -lpthread) #define _GNU_SOURCE /* feature_test_macros(7) */ #include int pthread_setaffinity_np(pthread_t thread, size_t cpusetsize, const cpu_set_t *cpuset); int pthread_getaffinity_np(pthread_t thread, size_t cpusetsize, cpu_set_t *cpuset); pthread_setaffinity_np() thread cpuset. cpuset . pthread_getaffinity_np() thread cpuset. (CPU affinity masks) sched_setaffinity(2). CPU_SET(3). cpusetsize () cpuset. sizeof(cpu_set_t). ( CPU_SET(3) .) 0 . EFAULT . EINVAL (pthread_setaffinity_np()) mask "cpuset" cpuset(7). EINVAL (pthread_setaffinity_np()) cpuset . ( CONFIG_NR_CPUS .) EINVAL (pthread_getaffinity_np()) cpusetsize . ESRCH thread. attributes(7). +------------+------------------------------------+--------------------+ || | | +------------+------------------------------------+--------------------+ |pthread_setaffinity_np(),| | MT-Safe | |pthread_getaffinity_np()| | | +------------+------------------------------------+--------------------+ "_np" ( ) . glibc 2.3.4. glibc 2.3.3 cpusetsize. sizeof(cpu_set_t). pthread_setaffinity_np() cpuset . "cpuset" cpuset(7). . sched_setaffinity(2) sched_getaffinity(2). pthread_create(3) . pthread_setaffinity_np() 0 7 ( ) pthread_getaffinity_np() . #define _GNU_SOURCE #include #include #include #include #include int main(void) { int s; cpu_set_t cpuset; pthread_t thread; thread = pthread_self(); /* Set affinity mask to include CPUs 0 to 7. */ CPU_ZERO(&cpuset); for (size_t j = 0; j < 8; j++) CPU_SET(j, &cpuset); s = pthread_setaffinity_np(thread, sizeof(cpuset), &cpuset); if (s != 0) errc(EXIT_FAILURE, s, "pthread_setaffinity_np"); /* Check the actual affinity mask assigned to the thread. */ s = pthread_getaffinity_np(thread, sizeof(cpuset), &cpuset); if (s != 0) errc(EXIT_FAILURE, s, "pthread_getaffinity_np"); printf("Set returned by pthread_getaffinity_np() contained:\n"); for (size_t j = 0; j < CPU_SETSIZE; j++) if (CPU_ISSET(j, &cpuset)) printf(" CPU %zu\n", j); exit(EXIT_SUCCESS); } sched_setaffinity(2), CPU_SET(3), pthread_attr_setaffinity_np(3), pthread_self(3), sched_getcpu(3), cpuset(7), pthreads(7), sched(7) 3 . . : . 6.18 21 2025 pthread_setaffinity_np(3)