1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
/* COVERAGE: sched_setaffinity */
#define _GNU_SOURCE
#include <stdio.h>
#include <unistd.h>
#include <sched.h>
#include <sys/syscall.h>
// glibc mangles some calls, so define our own sched_setaffinity()
// using syscall().
#if defined(__NR_sched_setaffinity)
static inline int
__sched_setaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask)
{
return syscall(__NR_sched_setaffinity, pid, cpusetsize, mask);
}
#endif
int main()
{
cpu_set_t mask;
sched_getaffinity(0, sizeof(mask), &mask);
//staptest// sched_getaffinity (0, XXXX, XXXX) = NNNN
sched_setaffinity(0, sizeof(mask), &mask);
//staptest// sched_setaffinity (0, XXXX, XXXX) = NNNN
/* Limits testing */
sched_setaffinity(-1, sizeof(mask), &mask);
//staptest// sched_setaffinity (-1, XXXX, XXXX) = NNNN
#ifdef __NR_sched_setaffinity
// glibc mangles this one
__sched_setaffinity(0, (size_t)-1, &mask);
//staptest// sched_setaffinity (0, 4294967295, XXXX) = NNNN
// glibc mangles this one also
__sched_setaffinity(0, sizeof(mask), (cpu_set_t *)-1);
#ifdef __s390__
//staptest// sched_setaffinity (0, XXXX, 0x[7]?[f]+) = NNNN
#else
//staptest// sched_setaffinity (0, XXXX, 0x[f]+) = NNNN
#endif
#endif
return 0;
}
|