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