summaryrefslogtreecommitdiff
path: root/posix/tst-cpuset.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2007-07-29 22:24:44 +0000
committerUlrich Drepper <drepper@redhat.com>2007-07-29 22:24:44 +0000
commit44f08a6ecc9d04fbb97475ebb99eaec26be36f90 (patch)
treedc7a2b43f2ac6b598e8c5095ae8622d1886246d7 /posix/tst-cpuset.c
parenta14ad5ae4b0e9272877ad6e7cb97792632da94a8 (diff)
downloadglibc-44f08a6ecc9d04fbb97475ebb99eaec26be36f90.tar.gz
* posix/Makefile (routines): Add sched_cpualloc and sched_cpufree.
(tests): Add tst-cpuset. * posix/sched_cpualloc.c: New file. * posix/sched_cpufree.c: New file. * posix/tst-cpuset.c: New file. * posix/Versions: Export __sched_cpualloc and __sched_cpufree for GLIBC_2.7. * sysdeps/unix/sysv/linux/bits/sched.h: Define __CPU_*_S macros. * posix/sched.h: Define old CPU_* macros in temers of __CPU_*_S macros. Define CPU_*_S macros.
Diffstat (limited to 'posix/tst-cpuset.c')
-rw-r--r--posix/tst-cpuset.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/posix/tst-cpuset.c b/posix/tst-cpuset.c
new file mode 100644
index 0000000000..d736793222
--- /dev/null
+++ b/posix/tst-cpuset.c
@@ -0,0 +1,82 @@
+#include <sched.h>
+#include <stdio.h>
+
+static int
+do_test (void)
+{
+ int result = 0;
+
+ cpu_set_t s1;
+ cpu_set_t s2;
+ cpu_set_t s3;
+
+ CPU_ZERO (&s1);
+ CPU_SET (0, &s1);
+
+ CPU_ZERO (&s2);
+ CPU_SET (0, &s2);
+ CPU_SET (1, &s2);
+
+ CPU_AND (&s3, &s1, &s2);
+ if (! CPU_EQUAL (&s3, &s1))
+ {
+ puts ("result of CPU_AND wrong");
+ result = 1;
+ }
+
+ CPU_OR (&s3, &s1, &s2);
+ if (! CPU_EQUAL (&s3, &s2))
+ {
+ puts ("result of CPU_OR wrong");
+ result = 1;
+ }
+
+ CPU_XOR (&s3, &s1, &s2);
+ if (CPU_COUNT (&s3) != 1)
+ {
+ puts ("result of CPU_XOR wrong");
+ result = 1;
+ }
+
+ cpu_set_t *vs1 = CPU_ALLOC (2048);
+ cpu_set_t *vs2 = CPU_ALLOC (2048);
+ cpu_set_t *vs3 = CPU_ALLOC (2048);
+ size_t vssize = CPU_ALLOC_SIZE (2048);
+
+ CPU_ZERO_S (vssize, vs1);
+ CPU_SET_S (0, vssize, vs1);
+
+ CPU_ZERO_S (vssize, vs2);
+ CPU_SET_S (0, vssize, vs2);
+ CPU_SET_S (2047, vssize, vs2);
+
+ CPU_AND_S (vssize, vs3, vs1, vs2);
+ if (! CPU_EQUAL_S (vssize, vs3, vs1))
+ {
+ puts ("result of CPU_AND_S wrong");
+ result = 1;
+ }
+
+ CPU_OR_S (vssize, vs3, vs1, vs2);
+ if (! CPU_EQUAL_S (vssize, vs3, vs2))
+ {
+ puts ("result of CPU_OR_S wrong");
+ result = 1;
+ }
+
+ CPU_XOR_S (vssize, vs3, vs1, vs2);
+ if (CPU_COUNT_S (vssize, vs3) != 1)
+ {
+ puts ("result of CPU_XOR_S wrong");
+ result = 1;
+ }
+
+ CPU_FREE (vs1);
+ CPU_FREE (vs2);
+ CPU_FREE (vs3);
+
+ return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"