提交 7406fdf5 编写于 作者: R Rich Felker

add pthread_setaffinity_np and pthread_getaffinity_np functions

上级 eeb0328f
...@@ -210,6 +210,9 @@ void _pthread_cleanup_pop(struct __ptcb *, int); ...@@ -210,6 +210,9 @@ void _pthread_cleanup_pop(struct __ptcb *, int);
#define pthread_cleanup_pop(r) _pthread_cleanup_pop(&__cb, (r)); } while(0) #define pthread_cleanup_pop(r) _pthread_cleanup_pop(&__cb, (r)); } while(0)
#ifdef _GNU_SOURCE #ifdef _GNU_SOURCE
struct cpu_set_t;
int pthread_getaffinity_np(pthread_t, size_t, struct cpu_set_t *);
int pthread_setaffinity_np(pthread_t, size_t, const struct cpu_set_t *);
int pthread_getattr_np(pthread_t, pthread_attr_t *); int pthread_getattr_np(pthread_t, pthread_attr_t *);
#endif #endif
......
#define _GNU_SOURCE #define _GNU_SOURCE
#include <sched.h> #include <sched.h>
#include "pthread_impl.h"
#include "syscall.h" #include "syscall.h"
int sched_setaffinity(pid_t tid, size_t size, const cpu_set_t *set)
{
return syscall(SYS_sched_setaffinity, tid, size, set);
}
int pthread_setaffinity_np(pthread_t td, size_t size, const cpu_set_t *set)
{
return syscall(SYS_sched_setaffinity, td->tid, size, set);
}
int sched_getaffinity(pid_t tid, size_t size, cpu_set_t *set) int sched_getaffinity(pid_t tid, size_t size, cpu_set_t *set)
{ {
long ret = __syscall(SYS_sched_getaffinity, tid, size, set); long ret = __syscall(SYS_sched_getaffinity, tid, size, set);
if (ret > 0) ret = 0; if (ret > 0) ret = 0;
return __syscall_ret(ret); return __syscall_ret(ret);
} }
int pthread_getaffinity_np(pthread_t td, size_t size, cpu_set_t *set)
{
return sched_getaffinity(td->tid, size, set);
}
#define _GNU_SOURCE
#include <sched.h>
#include "syscall.h"
int sched_setaffinity(pid_t tid, size_t size, const cpu_set_t *set)
{
return syscall(SYS_sched_setaffinity, tid, size, set);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册