mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
* sysdeps/unix/sysv/linux/tst-getcpu.c: New file.
* sysdeps/unix/sysv/linux/Makefile [subdir=posix] (tests): Add tst-getcpu. * include/link.h: Move l_version and l_nversion members around to fill gaps.
This commit is contained in:
53
sysdeps/unix/sysv/linux/tst-getcpu.c
Normal file
53
sysdeps/unix/sysv/linux/tst-getcpu.c
Normal file
@ -0,0 +1,53 @@
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <sched.h>
|
||||
|
||||
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
cpu_set_t cs;
|
||||
if (sched_getaffinity (getpid (), sizeof (cs), &cs) != 0)
|
||||
{
|
||||
printf ("getaffinity failed: %m\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
int result = 0;
|
||||
int cpu = 0;
|
||||
while (CPU_COUNT (&cs) != 0)
|
||||
{
|
||||
if (CPU_ISSET (cpu, &cs))
|
||||
{
|
||||
cpu_set_t cs2;
|
||||
CPU_ZERO (&cs2);
|
||||
CPU_SET (cpu, &cs2);
|
||||
if (sched_setaffinity (getpid (), sizeof (cs2), &cs2) != 0)
|
||||
{
|
||||
printf ("setaffinity(%d) failed: %m\n", cpu);
|
||||
result = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
int cpu2 = sched_getcpu ();
|
||||
if (cpu2 == -1 && errno == ENOSYS)
|
||||
{
|
||||
puts ("getcpu syscall not implemented");
|
||||
return 0;
|
||||
}
|
||||
if (cpu2 != cpu)
|
||||
{
|
||||
printf ("getcpu results %d not possible\n", cpu2);
|
||||
result = 1;
|
||||
}
|
||||
}
|
||||
CPU_CLR (cpu, &cs);
|
||||
}
|
||||
++cpu;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
#define TEST_FUNCTION do_test ()
|
||||
#include <test-skeleton.c>
|
Reference in New Issue
Block a user