github.com/afumu/libc@v0.0.6/musl/src/sched/affinity.c (about) 1 #define _GNU_SOURCE 2 #include <sched.h> 3 #include <string.h> 4 #include "pthread_impl.h" 5 #include "syscall.h" 6 7 int sched_setaffinity(pid_t tid, size_t size, const cpu_set_t *set) 8 { 9 return syscall(SYS_sched_setaffinity, tid, size, set); 10 } 11 12 int pthread_setaffinity_np(pthread_t td, size_t size, const cpu_set_t *set) 13 { 14 return -__syscall(SYS_sched_setaffinity, td->tid, size, set); 15 } 16 17 static int do_getaffinity(pid_t tid, size_t size, cpu_set_t *set) 18 { 19 long ret = __syscall(SYS_sched_getaffinity, tid, size, set); 20 if (ret < 0) return ret; 21 if (ret < size) memset((char *)set+ret, 0, size-ret); 22 return 0; 23 } 24 25 int sched_getaffinity(pid_t tid, size_t size, cpu_set_t *set) 26 { 27 return __syscall_ret(do_getaffinity(tid, size, set)); 28 } 29 30 int pthread_getaffinity_np(pthread_t td, size_t size, cpu_set_t *set) 31 { 32 return -do_getaffinity(td->tid, size, set); 33 }