CPU_SET(3) Library Functions Manual CPU_SET(3) CPU_SET, CPU_CLR, CPU_ISSET, CPU_ZERO, CPU_COUNT, CPU_AND, CPU_OR, CPU_XOR, CPU_EQUAL, CPU_ALLOC, CPU_ALLOC_SIZE, CPU_FREE, CPU_SET_S, CPU_CLR_S, CPU_ISSET_S, CPU_ZERO_S, CPU_COUNT_S, CPU_AND_S, CPU_OR_S, CPU_XOR_S, CPU_EQUAL_S - CPU (libc -lc) #define _GNU_SOURCE /* feature_test_macros(7) */ #include void CPU_ZERO(cpu_set_t *set); void CPU_SET(int cpu, cpu_set_t *set); void CPU_CLR(int cpu, cpu_set_t *set); int CPU_ISSET(int cpu, cpu_set_t *set); int CPU_COUNT(cpu_set_t *set); void CPU_AND(cpu_set_t *destset, cpu_set_t *srcset1, cpu_set_t *srcset2); void CPU_OR(cpu_set_t *destset, cpu_set_t *srcset1, cpu_set_t *srcset2); void CPU_XOR(cpu_set_t *destset, cpu_set_t *srcset1, cpu_set_t *srcset2); int CPU_EQUAL(cpu_set_t *set1, cpu_set_t *set2); cpu_set_t *CPU_ALLOC(int num_cpus); void CPU_FREE(cpu_set_t *set); size_t CPU_ALLOC_SIZE(int num_cpus); void CPU_ZERO_S(size_t setsize, cpu_set_t *set); void CPU_SET_S(int cpu, size_t setsize, cpu_set_t *set); void CPU_CLR_S(int cpu, size_t setsize, cpu_set_t *set); int CPU_ISSET_S(int cpu, size_t setsize, cpu_set_t *set); int CPU_COUNT_S(size_t setsize, cpu_set_t *set); void CPU_AND_S(size_t setsize, cpu_set_t *destset, cpu_set_t *srcset1, cpu_set_t *srcset2); void CPU_OR_S(size_t setsize, cpu_set_t *destset, cpu_set_t *srcset1, cpu_set_t *srcset2); void CPU_XOR_S(size_t setsize, cpu_set_t *destset, cpu_set_t *srcset1, cpu_set_t *srcset2); int CPU_EQUAL_S(size_t setsize, cpu_set_t *set1, cpu_set_t *set2); cpu_set_t CPU. CPU sched_setaffinity(2) . cpu_set_t . : CPU . CPU set: CPU_ZERO() set CPU. CPU_SET() CPU cpu set. CPU_CLR() cpu set. CPU_ISSET() cpu set. CPU_COUNT() set. cpu . cpu 0 cpu 1 . . CPU_SETSIZE ( 1024) cpu_set_t. : CPU_AND() srcset1 srcset2 destset ( ). CPU_OR() srcset1 srcset2 destset ( ). CPU_XOR() XOR srcset1 srcset2 destset ( ). XOR srcset1 srcset2 . CPU_EQUAL() . ( cpu_set_t) glibc . : CPU_ALLOC() 0 num_cpus-1. CPU_ALLOC_SIZE() 0 num_cpus-1. setsize CPU_*_S() . CPU_FREE() CPU_ALLOC(). "_S" . () setsize . CPU_ISSET() CPU_ISSET_S() cpu set 0. CPU_COUNT() CPU_COUNT_S() set. CPU_EQUAL() CPU_EQUAL_S() 0. CPU_ALLOC() NULL . ( malloc(3).) CPU_ALLOC_SIZE() . . . CPU_ZERO() CPU_SET() CPU_CLR() CPU_ISSET() glibc 2.3.3. CPU_COUNT() glibc 2.6. CPU_AND() CPU_OR() CPU_XOR() CPU_EQUAL() CPU_ALLOC() CPU_ALLOC_SIZE() CPU_FREE() CPU_ZERO_S() CPU_SET_S() CPU_CLR_S() CPU_ISSET_S() CPU_AND_S() CPU_OR_S() CPU_XOR_S() CPU_EQUAL_S() glibc 2.7. memcpy(3). sizeof(unsigned long). . CPU_SETSIZE cpu_set_t ( ) setsize CPU_*_S() . . . 32- glibc 2.8 CPU_ALLOC() CPU_ALLOC_SIZE() . . glibc 2.9. . #define _GNU_SOURCE #include #include #include #include #include int main(int argc, char *argv[]) { cpu_set_t *cpusetp; size_t size, num_cpus; if (argc < 2) { fprintf(stderr, "Usage: %s \n", argv[0]); exit(EXIT_FAILURE); } num_cpus = atoi(argv[1]); cpusetp = CPU_ALLOC(num_cpus); if (cpusetp == NULL) { perror("CPU_ALLOC"); exit(EXIT_FAILURE); } size = CPU_ALLOC_SIZE(num_cpus); CPU_ZERO_S(size, cpusetp); for (size_t cpu = 0; cpu < num_cpus; cpu += 2) CPU_SET_S(cpu, size, cpusetp); printf("CPU_COUNT() of set: %d\n", CPU_COUNT_S(size, cpusetp)); CPU_FREE(cpusetp); exit(EXIT_SUCCESS); } sched_setaffinity(2) pthread_attr_setaffinity_np(3) pthread_setaffinity_np(3) cpuset(7) 3 . . : . 6.18 8 2026 CPU_SET(3)