From 341c566f05fa6b19b88508f7ddd835bfd101731b Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 11 May 2007 06:39:07 +0000 Subject: * 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. --- sysdeps/unix/sysv/linux/tst-getcpu.c | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 sysdeps/unix/sysv/linux/tst-getcpu.c (limited to 'sysdeps/unix/sysv/linux/tst-getcpu.c') diff --git a/sysdeps/unix/sysv/linux/tst-getcpu.c b/sysdeps/unix/sysv/linux/tst-getcpu.c new file mode 100644 index 0000000000..78c4a6919e --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-getcpu.c @@ -0,0 +1,53 @@ +#include +#include +#include + + +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 -- cgit v1.2.3