mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-27 04:41:02 +08:00
11ed671328
2007-05-12 Andreas Jaeger <aj@suse.de> * sysdeps/unix/sysv/linux/tst-getcpu.c: Include <unistd.h> for getpid.
55 lines
966 B
C
55 lines
966 B
C
#include <errno.h>
|
|
#include <stdio.h>
|
|
#include <sched.h>
|
|
#include <unistd.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>
|