diff options
author | Ulrich Drepper <drepper@redhat.com> | 2007-07-29 22:24:44 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2007-07-29 22:24:44 +0000 |
commit | 44f08a6ecc9d04fbb97475ebb99eaec26be36f90 (patch) | |
tree | dc7a2b43f2ac6b598e8c5095ae8622d1886246d7 /posix/tst-cpuset.c | |
parent | a14ad5ae4b0e9272877ad6e7cb97792632da94a8 (diff) | |
download | glibc-44f08a6ecc9d04fbb97475ebb99eaec26be36f90.tar.gz glibc-44f08a6ecc9d04fbb97475ebb99eaec26be36f90.tar.xz glibc-44f08a6ecc9d04fbb97475ebb99eaec26be36f90.zip |
* 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.c | 82 |
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" |