add cpu affinity interfaces
this first commit just includes the CPU_* and sched_* interfaces, not the pthread_* interfaces, which may be added later. simple sanity-check testing has been done for the basic interfaces, but most of the macros have not yet been tested.
This commit is contained in:
parent
76fbf6ad4b
commit
eeb0328f20
4 changed files with 90 additions and 0 deletions
11
src/sched/sched_cpucount.c
Normal file
11
src/sched/sched_cpucount.c
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#define _GNU_SOURCE
|
||||
#include <sched.h>
|
||||
|
||||
int __sched_cpucount(size_t size, const cpu_set_t *set)
|
||||
{
|
||||
size_t i, j, cnt=0;
|
||||
const unsigned char *p = (const void *)set;
|
||||
for (i=0; i<size; i++) for (j=0; j<8; j++)
|
||||
if (p[i] & (1<<j)) cnt++;
|
||||
return cnt;
|
||||
}
|
||||
10
src/sched/sched_getaffinity.c
Normal file
10
src/sched/sched_getaffinity.c
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
#define _GNU_SOURCE
|
||||
#include <sched.h>
|
||||
#include "syscall.h"
|
||||
|
||||
int sched_getaffinity(pid_t tid, size_t size, cpu_set_t *set)
|
||||
{
|
||||
long ret = __syscall(SYS_sched_getaffinity, tid, size, set);
|
||||
if (ret > 0) ret = 0;
|
||||
return __syscall_ret(ret);
|
||||
}
|
||||
8
src/sched/sched_setaffinity.c
Normal file
8
src/sched/sched_setaffinity.c
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#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);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue